Git

Git命令

文档链接

http://git-scm.com/book/zh/v2/

基本操作

  1. 创建git仓库

     git init
    
  2. 克隆仓库

     git clone https://github.com/example/example.git
    
  3. 追踪文件

     git add a.cpp
     git add *.cpp
     git add *
    
  4. 查看当前文件状态

     git status
     --------------------
     On branch master
     Your branch is up-to-date with 'origin/master'.
     Changes to be committed:
       (use "git restore --staged <file>..." to unstage)
    
     new file:   README
    
  5. 以简洁的方式查看当前文件状态

     git status -s
     --------------------
      M README
     MM Rakefile
     A  lib/git.rb
     M  lib/simplegit.rb
     ?? LICENSE.txt
    
  6. .gitignore

     # 忽略所有的 .a 文件
     *.a
    
     # 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
     !lib.a
    
     # 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
     /TODO
    
     # 忽略任何目录下名为 build 的文件夹
     build/
    
     # 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
     doc/*.txt
    
     # 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
     doc/**/*.pdf
    
  7. 查看未暂存的文件有那些修改

     git diff
     --------------------
     diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
     index 8ebb991..643e24f 100644
     --- a/CONTRIBUTING.md
     +++ b/CONTRIBUTING.md
     @@ -65,7 +65,8 @@ branch directly, things can get messy.
      Please include a nice description of your changes when you submit your PR;
      if we have to read the whole diff to figure out why you're contributing
      in the first place, you're less likely to get feedback and have your change
     -merged in.
     +merged in. Also, split your changes into comprehensive chunks if your patch is
     +longer than a dozen lines.
    
      If you are starting to work on a particular area, feel free to submit a PR
      that highlights your work in progress (and note in the PR title that it's
    
  8. 查看已暂存文件和最后一次提交的差异

     git diff --staged
     --------------------
     diff --git a/README b/README
     new file mode 100644
     index 0000000..03902a1
     --- /dev/null
     +++ b/README
     @@ -0,0 +1 @@
     +My Project
    
  9. 提交暂存区的内容到仓库

     git commit -m "message"
    
  10. 将所有跟踪过的文件add后提交

    git commit -a -m "message"
    
  11. 从git中移除并且删除文件

    git rm -f README.md
    
  12. 从git中移除但并不删除文件

    git rm --cached README.md
    
  13. 修改文件名并添加到git中

    git mv README.md README
    --------------------
    相当于
    \$ mv README.md README
    \$ git rm README.md
    \$ git add README
    

仓库合并操作

  1. 查看提交历史

     git log
     --------------------
     commit ca82a6dff817ec66f44342007202690a93763949
     Author: Scott Chacon <schacon@gee-mail.com>
     Date:   Mon Mar 17 21:52:11 2008 -0700
    
         changed the version number
    
     commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
     Author: Scott Chacon <schacon@gee-mail.com>
     Date:   Sat Mar 15 16:40:33 2008 -0700
    
         removed unnecessary test
    
     commit a11bef06a3f659402fe7563abf99ad00de2209e6
     Author: Scott Chacon <schacon@gee-mail.com>
     Date:   Sat Mar 15 10:31:28 2008 -0700
    
         first commit
    
  2. 查看最近两次提交所引入的差异

     git log -p -2
    
  3. 查看提交的简略统计信息

     git log --stat
    
  4. 以特有的形式显示提交信息

     git log --pretty=oneline/short/full/fuller
    
  5. 以格式化方式显示提交信息

     git log --pretty=format:"%h - %an, %ar : %s"
     --------------------
     %H        提交的完整哈希值
     %h        提交的简写哈希值
     %T        树的完整哈希值
     %t        树的简写哈希值
     %P        父提交的完整哈希值
     %p        父提交的简写哈希值
     %an        作者名字
     %ae        作者的电子邮件地址
     %ad        作者修订日期(可以用 --date=选项 来定制格式)
     %ar        作者修订日期,按多久以前的方式显示
     %cn        提交者的名字
     %ce        提交者的电子邮件地址
     %cd        提交日期
     %cr        提交日期(距今多长时间)
     %s        提交说明
    
  6. git log的常用选项

     -p            按补丁格式显示每个提交引入的差异。
     --stat            显示每次提交的文件修改统计信息。
     --shortstat        只显示 --stat 中最后的行数修改添加移除统计。
     --name-only        仅在提交信息后显示已修改的文件清单。
     --name-status        显示新增、修改、删除的文件清单。
     --abbrev-commit    仅显示 SHA-1 校验和所有 40 个字符中的前几个字符。
     --relative-date    使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago”)。
     --graph        在日志旁以 ASCII 图形显示分支与合并历史。
     --pretty        使用其他格式显示历史提交信息。可用的选项包括 oneline、short、full、fuller 和 format(用来定义自己的格式)。
     --oneline        pretty=oneline --abbrev-commit 合用的简写。
    
  7. git log 过滤内容

     -\<n>            仅显示最近的 n 条提交。
     --since, --after    仅显示指定时间之后的提交。
     --until, --before    仅显示指定时间之前的提交。
     --author        仅显示作者匹配指定字符串的提交。
     --committer        仅显示提交者匹配指定字符串的提交。
     --grep            仅显示提交说明中包含指定字符串的提交。
     -S            仅显示添加或删除内容匹配指定字符串的提交。
    
0%