转载

Git的各种操作

Git的各种操作

照片

  • 文件的四种状态

    • Untracked(未追踪状态)

      简单来说,就是文件没有加入暂存区(stage area), 也就是没有使用git add命令加入暂存区

      Untrcked文件就像你存储在硬盘里面的文件一样,跟git半毛钱关系没有。git对其完全不负责

    • Unmodified(未修改状态)

      已经提交到本地仓库

    • Modified(已经被修改)

      文件已经提交到本地仓库,被修改后,就变成了modified状态

    • Staged(暂存状态)

      文件被添加到暂存区,等待提交到本地仓库

  • 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
    
正文到此结束
本文目录