git 工具

git log --abbrev-commit --pretty=oneline

  • --abbrev-commit 给 git log 命令,输出结果里就会使用简短且唯一的值;它默认使用七个字符来表示,不过必要时为了避免 SHA-1 的歧义,会增加字符数

提交范围

最常用的指明范围的方法是双点的语法。这种语法主要是让 Git 区分出可从一个分支中获得而不能从另一个分支中获得的提交。

git log origin/master..HEAD

这条命令显示任何在你当前分支上而不在远程origin 上的提交

交互式暂存 git add -i, 使用patch功能,可以实现部分暂存。

git stash

git stash
git stash list
git stash apply [stash@{2}]
git stash --index
git stash show -p | git apply -R
git stash branch testchanges 这会创建一个新的分支,检出你储藏工作时的所处的提交,重新应用你的工作

git rebase -i HEAD~3

你需要修改这个脚本来让它停留在你想修改的变更上。要做到这一点,你只要将你想修改的每一次提交前面的pick改为edit。 保存退出后,显示如下:

$ git rebase -i HEAD~3
Stopped at 7482e0d... updated the gemspec to hopefully work better
You can amend the commit now, with

git commit --amend

Once you’re satisfied with your changes, run

git rebase --continue

如果你将更多行的 pick 改为 edit ,你就能对你想修改的提交重复这些步骤。Git每次都会停下,让你修正提交,完成后继续运行。

git submodule

Git 把它视作一个子模块,当你不在那个目录里时并不记录它的内容。取而代之的是,Git 将它记录成来自那个仓库的一个特殊的提交。当你在那个子目录里修改并提交时,子项目会通知那里的 HEAD 已经发生变更并记录你当前正在工作的那个提交;通过那样的方法,当其他人克隆此项目,他们可以重新创建一致的环境。

克隆一个带子模块的项目 git submodule init来初始化你的本地配置文件,git submodule update来从那个项目拉取所有数据并检出你上层项目里所列的合适的提交