[关闭]
@Chiang 2019-09-30T17:31:53.000000Z 字数 3586 阅读 502

Git 基础命令集

Git


配置文件

  • /etc/gitconfig
  • ~/.gitconfig ~/.config/git/config
  • .git/config

设置与查看用户名称与邮件地址

  1. # 设置
  2. git config --global user.name "John Doe"
  3. git config --global user.email johndoe@example.com
  4. # 查看
  5. git config --list
  6. git config user.name
  7. # 配置默认文本编辑器
  8. git config --global core.editor emacs

获取帮助

  1. git help <verb>
  2. git <berb> --help
  3. man git-<verb>
  4. # config 命令手册
  5. git help config

基础命令

初始化仓库

  1. git init

将文件添加到缓存区

  1. git add *.c
  2. git add LICENSE

提交文件到版本库

  1. git commit -m 'initial project version'

克隆仓库

  1. git clone [url] [本地文件夹名]
  2. git clone https://github.com/libgit2/libgit2 mylibgit

文件的状态变化周期

  • untracked 未跟踪的
  • unmodified 未修改的
  • staged 暂存的
  • modified 修改的

文件的状态变化周期

Created with Raphaël 2.1.2未修改(unmodified)未修改(unmodified)修改的(modified)修改的(modified)暂存的(staged)暂存的(staged)未跟踪(untracked)未跟踪(untracked)Edit the fileStage the fileCommitRemove the fileAdd the file
  1. # 查看文件状态
  2. git status
  3. # 状态简览
  4. git status -s
  5. git status -short
  • ?? 新添加的未跟踪文件
  • M 右边的 M 表示该文件被修改了但是还没放入暂存区;左边的 M 表示该文件被修改了并放入了暂存区
  • A 新添加到暂存区中的文件

查看已暂存和未暂存的修改

  1. git diff
  2. git diff --cached
  3. git diff --staged
  • 此命令比较的是工作目录中当前文件和暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容
  • 若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cached 命令。(Git 1.6.1 及更高版本还允许使用 git diff --staged,效果是相同的,但更好记些。)

查看提交历史

  1. git log
  2. # -p,用来显示每次提交的内容差异。 -2 来仅显示最近两次提交
  3. git log -p -2
  4. # 提交的简略的统计信息
  5. git log --stat
  6. # --pretty指定使用不同于默认格式的方式展示提交历史
  7. git log --pretty=oneline
  8. git log --pretty=short
  9. git log --pretty=full
  10. git log --pretty=fuller
  11. git log --pretty=format:"%h - %an, %ar : %s"
  12. # --graph 这个选项添加了一些 ASCII 字符串来形象地展示你的分支、合并历史
  13. git log --pretty=format:"%h %s" --graph

git log --pretty=format 常用的选项

选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 --date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明

git log 的常用选项

选项 说明
-p 按补丁格式显示每个更新之间的差异
--stat 显示每次更新的文件修改统计信息
--shortstat 只显示 --stat 中最后的行数修改添加移除统计
--name-only 仅在提交信息后显示已修改的文件清单
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)
--graph 显示 ASCII 图形表示的分支合并历史
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)

限制 git log 输出的选项 中列出了常用的选项

选项 说明
-(n) 仅显示最近的 n 条提交
--since,--after 仅显示指定时间之后的提交
--until,--before 仅显示指定时间之前的提交
--author 仅显示指定作者相关的提交
--committer 仅显示指定提交者相关的提交
--grep 仅显示含指定关键字的提交
-S 仅显示添加或移除了某个关键字的提交
  1. # 范例
  2. git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \
  3. --before="2008-11-01" --no-merges -- t/

撤销操作

  1. # 最终你只会有一个提交——第二次提交将代替第一次提交的结果
  2. git commit -m 'initial commit'
  3. git add forgotten_file
  4. git commit --amend
  5. # 取消暂存
  6. git reset HEAD <file>...
  7. git reset HEAD contributing.md
  8. # 工作区撤消之前所做的修改
  9. git checkout -- <file>...
  10. git checkout -- contriguting.md

远程仓库的使用

  1. # 克隆远程仓库
  2. git clone [url] [本地文件夹名]
  3. git clone https://github.com/libgit2/libgit2 mylibgit
  4. # 查看远程仓库
  5. git remote -v
  6. # 添加远程仓库
  7. git remote add <shortname> <url>
  8. # 从远程仓库中抓取与拉取
  9. # git fetch 命令会将数据拉取到你的本地仓库——它并不会自动合并或修改你当前的工作
  10. git fetch [remote-name]
  11. # 推送到远程分支
  12. git push [remote-name]
  13. git push origin master
  14. # 查看某个远程仓库
  15. git remote show [remote-name]
  16. git remote show origin
  17. # 远程仓库的移除与重命名
  18. # 重命名
  19. git remote rename pb paul
  20. # 移除远程仓库
  21. git remote rm paul

打标签

发布版本的时候挺有用的

  1. # 列出标签
  2. git tag
  3. git tag -l 'v1.8.5*'
  4. # 附注标签创建标签
  5. git tag -a v1.4 -m 'my version 1.4'
  6. # 查看标签信息与对应的提交信息
  7. git show v1.4
  8. # 轻量标签创建标签
  9. git tag v1.4-lw
  10. # 后期打标签
  11. git tag -a v1.2 9fceb02
  12. # 共享标签
  13. git push origin [tagname]
  14. git push origin v1.5
  15. # 把所有不在远程仓库服务器上的标签全部传送到那里
  16. git push origin --tags
  17. # 删除标签
  18. git tag -d <tagname>
  19. git tag -d v1.4-lw
  20. # 应该注意的是上述命令并不会从任何远程仓库中移除这个标签,你必须使用 git push <remote> :refs/tags/<tagname> 来更新你的远程仓库
  21. git push origin :refs/tags/v1.4-lw
  22. # 检出标签
  23. git checkout 2.0.0
  24. git checkout -b version2 v2.0.0
  • 如果你想查看某个标签所指向的文件版本,可以使用 git checkout 命令,虽然说这会使你的仓库处于“分离头指针(detacthed HEAD)”状态——这个状态有些不好的副作用
  • 在“分离头指针”状态下,如果你做了某些更改然后提交它们,标签不会发生变化,但你的新提交将不属于任何分支,并且将无法访问,除非确切的提交哈希。因此,如果你需要进行更改——比如说你正在修复旧版本的错误——这通常需要创建一个新分支
  • 当然,如果在这之后又进行了一次提交,version2 分支会因为这个改动向前移动,version2 分支就会和 v2.0.0 标签稍微有些不同,这时就应该当心了

参考资料:
git-scm.com
MAC上Git打标签
廖雪峰标签管理
Git--log 查看提交历史

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注