[关闭]
@Chiang 2020-05-10T11:06:03.000000Z 字数 4415 阅读 640

Git 日常使用整理

Git 2020-05


配置

  1. # 查看所有的配置以及它们所在的文件
  2. git config --list --show-origin
  3. # 设置你的用户名和邮件地址
  4. git config --global user.name "fazhan"
  5. git config --global user.email 1550149004@qq.com
  6. # 设置文本编辑器
  7. git config --global core.editor vim
  8. # 列出所有 Git 当时能找到的配置
  9. git config --list
  10. # 检查 Git 的某一项配置
  11. git config user.name
  12. # 查询Git中变量的原始值,告诉你哪一个配置文件最后设置了该值
  13. git config --show-origin rerere.autoUpdate

帮助

  1. # 获得 git config 命令的手册
  2. git help config
  3. git config --help
  4. man git help
  5. # 用 -h 选项获得更简明的 “help” 输出
  6. git add -h

初始化仓库

  1. # 将尚未进行版本控制的本地目录转换为 Git 仓库
  2. git init
  3. git add *.c
  4. git add LICENCE
  5. git add .
  6. git commit -m 'inital project version'
  7. git commit -am 'commit workdir modified and tracked files'
  8. # 从其它服务器 克隆 一个已存在的 Git 仓库
  9. git clone https://github.com/libgit2/libgit2
  10. git clone https://github.com/libgit2/libgit2 mylibgit

检查当前文件状态

  1. git status

跟踪新文件,暂存文件

  1. git add README

状态简史

  1. git status -s
  2. git status -short
  • 输出中有两栏,左栏指明了暂存区的状态,右栏指明了工作区的状态
  • 新添加的未跟踪文件前面有 ?? 标记
  • 新添加到暂存区中的文件前面有 A 标记
  • 修改过的文件前面有 M 标记
  •  M在工作区已修改但尚未暂存
  • M$nbsp;文件已修改且已暂存
  • MM既有已暂存的部分,又有未暂存的部分

忽略文件

  1. touch .gitignore

文件 .gitignore 的格式规范如下

  • 所有空行或者以 # 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式(shell 所使用的简化了的正则表达式)匹配,它会递归地应用在整个工作区中。
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。

文件差异比较

  1. # 此命令比较的是工作目录中当前文件和暂存区域快照之间的差异。 也就是修改之后还没有暂存起来的变化内容。
  2. git diff
  3. # 查看已暂存的将要添加到下次提交里的内容,可以用 git diff --staged 命令。 这条命令将比对已暂存文件与最后一次提交的文件差异
  4. git diff --staged
  5. git diff --cached

提交更新

  1. git commit
  2. # 添加 -m 选项,将提交信息与命令放在同一行
  3. git commit -m 'this is the first commit'
  4. # 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交
  5. git commit -am 'commit all tracked files'

移除文件

  1. ## 移除暂存区,工作区文件
  2. git rm 'fazhan.md'
  3. git rm log/\*.log
  4. git rm \*.~
  5. # 把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。
  6. git rm --cached README

移动文件,重命名

  1. git mv file_from file_to
  2. # 运行 git mv 就相当于运行了下面三条命令
  3. mv README.md README
  4. git rm README.md
  5. git add README

查看提交历史

  1. git log
  2. # -p 或 --patch 会显示每次提交所引入的差异,使用 -2 选项来只显示最近的两次提交
  3. git log -p -2
  4. # --stat 选项在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了。 在每次提交的最后还有一个总结。
  5. git log --stat
  6. # --pretty。 这个选项可以使用不同于默认格式的方式展示提交历史。 这个选项有一些内建的子选项供你使用。 比如 oneline 会将每个提交放在一行显示,在浏览大量的提交时非常有用。 另外还有 short,full 和 fuller 选项,它们展示信息的格式基本一致,但是详尽程度不一
  7. git log --pretty=online
  8. git log --pretty=format:"%h - %an, %ar : %s"

展示分支、合并历史

  1. git log --pretty=format:"%h %s" --graph

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

  • %H提交的完整哈希值

  • %h提交的简写哈希值

  • %T树的完整哈希值

  • %t树的简写哈希值

  • %P父提交的完整哈希值

  • %p父提交的简写哈希值

  • %an作者名字

  • %ae作者的电子邮件地址

  • %ad作者修订日期(可以用 --date=选项 来定制格式)

  • %ar作者修订日期,按多久以前的方式显示

  • %cn提交者的名字

  • %ce提交者的电子邮件地址

  • %cd提交日期

  • %cr提交日期(距今多长时间)

  • %s提交说明

详细参考

修补提交

  1. git commit -amend

取消暂存的文件

  1. git reset HEAD fazhan.md

撤消对文件的修改

  1. git checkout -- fazhan.md

远程仓库

  1. # 查看远程仓库
  2. git remote
  3. # -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。
  4. git remote -v
  5. # 添加远程仓库
  6. git remote add pb https://github.com/paulboone/ticgit

从远程仓库中抓取与拉取

  1. # 必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
  2. git fetch <remote>
  3. # 如果你的当前分支设置了跟踪远程分支,那么可以用 git pull 命令来自动抓取后合并该远程分支到当前分支。
  4. git pull <remote>

推送到远程仓库

  1. git push origin master

查看某个远程仓库

  1. git remote show origin

远程仓库的重命名与移除

  1. git remote rename pb paul
  2. git remote remove paul

列出标签

  1. git tag
  2. git tag -l
  3. git tag -list
  4. git tag -l "v1.8.5*"

创建附注标签

  1. git tag -a v1.4 -m "my version 1.4"

查看标签信息和与之对应的提交信息

  1. git show v1.4

创建轻量标签

  1. git tag v1.4-lw

后期打标签

  1. git tag -a v1.2 9fceb02

共享标签

  1. git push origin <tagname>
  2. # 把所有不在远程仓库服务器上的标签全部传送到那里
  3. git push origin --tags

删除标签

  1. # 本地
  2. git tag -d <tagname>
  3. ## 远程
  4. git push <remote> :refs/tags/<tagname>
  5. git push origin --delete <tagname>

检出标签

  1. git checkout -b version2 v2.0.0

分支创建

  1. # 创建testing分支
  2. git branch testing
  3. # 查看各个分支当前所指的对象(这里可以看到指针所在分支)
  4. git log --oneline --decorate

分支切换

  1. git checkout testing
  2. # 输出你的提交历史、各个分支的指向以及项目的分支分叉情况
  3. git log --oneline --decorate --graph --all
  4. # 创建并切换分支
  5. git checkout -b testing

删除分支

  1. git branch -d hotfix

合并分支

  1. git merge dev

查看分支列表

  1. # 分支列表
  2. git branch
  3. # 查看每一个分支的最后一次提交
  4. git branch -v
  5. # 查看哪些分支已经合并到当前分支
  6. git branch --merged
  7. # 查看哪些分支没有合并到当前分支
  8. git branch --no-merged

远程分支

  1. # 查看远程分支
  2. git remote show <remote>
  3. git ls-remote <remote>
  4. # 跟踪分支
  5. # 一个用于工作的本地分支,并且起点位于 origin/serverfix
  6. git checkout -b serverfix origin/serverfix
  7. git checkout --track origin/serverfix
  8. git checkout serverfix
  9. # 设置已有的本地分支跟踪一个刚刚拉取下来的远程分支,或者想要修改正在跟踪的上游分支, 你可以在任意时间使用 -u 或 --set-upstream-to 选项运行 git branch 来显式地设置。
  10. git branch -u origin/serverfix
  11. # 如果想要查看设置的所有跟踪分支,可以使用 git branch 的 -vv 选项。 这会将所有的本地分支列出来并且包含更多的信息,如每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有。
  12. git branch -vv

删除远程分支

  1. git push origin --delete serverfix

变基(个人不喜欢用)

  1. git rebase master

交互式暂存

这一块太细了,用不到,哈哈...

  1. git add -i
  2. git add -interctive

贮藏与清理

这一块挺好的,我非常喜欢的功能,哈哈...

  1. # 暂存
  2. git stash
  3. git stash save (弃用)
  4. git stash push (推荐)
  5. # 查看暂存列表
  6. git stash list
  7. # 恢复暂存数据,pop命令恢复,恢复后,暂存区域会删除当前的记录
  8. git stash pop stash@{index}
  9. # 恢复暂存数据,apply命令恢复,恢复后,暂存区域会保留当前的记录
  10. git stash apply stash@{index}
  11. # 删除暂存
  12. git stash drop stash@{index}
  13. git stash clear

参考资料:
Pro Git book
图解Git
Git 原理入门
Git 工作流程
阮一峰 Git 教程
Git教程
git stash暂存的操作

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