Git修改一个文件并提交到仓库
前言
可跟踪改动内容的文件有哪些?
- 所有的版本控制系统,跟踪的是什么?——跟踪文本文件的改动(TXT、HTML)
- 版本控制系统可以告诉你每次对文本的改动,比如在第5行增加/删除了一个单词“Linux”,
- 所以图片、视频、word这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化。例如只知道图片大小从100KB改成了120KB,但到底改了啥是不知道的
编码选择
- 建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。
把文件添加到仓库
仓库
仓库即版本库,repository,也就是一个目录,这个目录里面的所有文件都可以被Git管理起来。
作用:跟踪每个文件的修改、删除,以便任何时刻都可以追踪改动,甚至在必要的时候可以“还原”。
0、创建一个仓库并初始化
先在一个文件夹内单击右键,选择“Git Bash”
$ mkdir learngit
$ cd learngit
$ git init //初始化这个仓库learngit
这样就成功创建了一个.git
的目录(这个目录是Git来跟踪管理版本库的,切勿轻易修改)
如果你没有看到.git
目录,那是因为这个目录默认是隐藏的,用ls -ah
命令就可以看见。
2、把文件添加到本地仓库:
$ git add readme.txt
如果是一个文件夹,则输入
git add
3、用命令git commit
告诉Git,把文件提交到仓库:
$ git commit -m "This is a commit: first try"
提交完成
git push -u origin master
使用Windows的童鞋要特别注意:
- 千万不要使用Windows自带的记事本编辑任何文本文件。
- 建议使用Visual Studio Code代替记事本,不但功能强大,而且免费!
- 原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题。
- 比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。
工作区、暂存区
工作区(Working Directory)
- 就是你在电脑里能看到的目录,比如我的
learngit
文件夹就是一个工作区:
版本库(Repository)
工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
- 第一步是用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区; - 第二步是用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
过程,例:
- 我们先在工作区编辑两个文件
- 通过
git add
添加到版本库的暂存区(Stage) - 现在,暂存区的状态就变成这样了:
- 执行
git commit
就可以一次性把暂存区的所有修改提交到分支。 - 一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的:
管理修改小提示
第一次修改 -> git add
-> 第二次修改 -> git add
-> git commit
- 第一次修改一个文件
vim test.txt
git add
,放到暂存区- 第二次修改这个文件
vim test.txt
git commit
,上传到分支- 结果是只上传了第一次的修改文件。
- 即:没有被
git add
到暂存区的文件不会被git commit
git初尝试
https://blog.csdn.net/ywsydwsbn/article/details/106427905#43_github_179
git菜鸟指南
https://www.runoob.com/git/git-workspace-index-repo.html
---------------------------
“朝着一个既定的方向去努力,就算没有天赋,在时间的积累下应该也能稍稍有点成就吧。”