Git的各种操作
-
文件的四种状态
-
git查看文件状态的命令
git status
一般空的本地库,使用git status命令是如下结果
$ git status On branch master nothing to commit, working tree clean
添加了几个文件,是这种输出
$ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) one.txt two.txt nothing added to commit but untracked files present (use "git add" to track)
git status -s
还有一个git status -s命令,可以得到简洁的文件状态输出
针对于上面的状态,git status -s 的输出为
?? one.txt ?? two.txt
A 代表 Staged状态, M代表Modified状态 ?代表Untracked状态 空 代表Unmodified
第一列代表代表暂存区的状态,第二列代表工作区的状态
$ git status -s M README MM Rakefile A lib/git.rb M lib/simplegit.rb ?? LICENSE.txt
上述有如下解释
README:文件修改后,没有暂存(本地库已经有它的快照)
Rakefile: 文件首先被修改,之后暂存,之后又被修改,始终没有被提交(本地库已经有它的快照)
lib/git.rb: 文件被暂存(本地库没有其快照)
lib/simplegit.rb: 文件被修改,然后被暂存,没有被提交(本地库已经有其快照)
LICENSE.txt: 文件处于未被追踪状态(Untracked)
-
对文件进行追踪
主要的命令就是 git add
比如你要对你新建的文件进行追踪
git add newfile
就可以,文件处于staged状态注意每次修改了本地库的文件,都需要先暂存,后提交
跳过暂存区:每次修改了本地库的文件,都需要先暂存,才能提交。感觉很麻烦的话可以使用
git commit -a
命令,命令会自动将所有的change进行暂存后提交 -
对文件进行忽略(不track)
对文件的ignore, 主要是通过 .gitignore 这个文件来实现的
.gitignore文件你可以自己编写正则表达式来对要忽略的文件进行说明
.gitignore文件没有的话,在库的根目录新建
比如
#对后缀名为o或者a的文件忽略 *.[oa] #对以~为结尾的文件忽略 *~
-
Staged文件与UnStaged文件的差别(different)
test.txt,本来在本地库内容是1111。执行以下命令。先edit再stage,在edit
echo 2222 >> test.txt git add test.txt echo 3333 >> test.txt git diff
输出一下结果,就是暂存文件与未暂存文件的差别
$ git diff warning: LF will be replaced by CRLF in test.txt. The file will have its original line endings in your working directory diff --git a/test.txt b/test.txt index 4f142ee..e0037f0 100644 --- a/test.txt +++ b/test.txt @@ -1,2 +1,3 @@ 1111 2222 +3333
如果想输出本地库与暂存区的差别,输入git diff --staged
$ git diff --staged diff --git a/test.txt b/test.txt index 5f2f16b..4f142ee 100644 --- a/test.txt +++ b/test.txt @@ -1 +1,2 @@ 1111 +2222
-
提交文件
主要命令是git commit
如果commit message不是很多可以直接运行如下命令,-m后面制定commit的解释信息
git commit -m "commit message"
如果很多的话,就用如下命令,命令会打开你上文配置的editor,你键入你的commit message
保存文件之后, 关闭editor,就完成提交了,需要注意的是,commit message第一行不能以#号
开头
git commit
-
删除文件
从本地库中删除文件可以使用git rm命令,比如如下从本地库删除了一个文件,自然而然得本地磁盘也删除了这个文件
git rm README.md git commit -m "delete"
-
移动文件
比如想重命名文件,就可以使用git mv
git mv README.md README
其实上面的命令等同于下面三句命令
mv README.md README git rm README.md git add README