Git 2022-04-27

使用 alias

这是我的 zshrc 的 alias 配置:

alias gst='git status -sb'
alias ga='git add'
alias gc='git commit'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gl='git pull'
alias gp='git push'
alias glog="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- | less"

如何 commit

我的 commit 粒度非常细,只要完成一个小功能就会提交。这使得代码回滚变得非常方便,code review 也变得简单了些。

我习惯使用 git commit . -v 来提交代码,因为它会打开一个编辑器让我 review 我的改动,而且它比 git commit -m message 更能诱导我写出更长的 commit message。

而且我用 git config --global core.editor "code --wait" 将默认编辑器设置成了 VSCode,使用起来比 vim 方便一些。不过我还是在 VSCode 里开启了 vim 插件。

我习惯在 commit message 里写中文,毕竟我的同事几乎都是中文母语者,英文只会徒增烦恼。

如何回滚

git reset --hard xxx 可以让代码快速回到某个历史提交点,但我习惯先把当前代码 commit 一下再 reset,这样可以防止某些改动被永久删除。

git reflog 可以回到 reset 之前的时间点,也是经常用到的。

如何整理 commit

git commit . --amend 用来把当前代码提交到上一次提交里,相信很多人都用过。

git cherry-pick 则可以用来筛选 commit,我的具体做法是先新建分支 x,然后回到 master,将 master 回滚到最开始,最后从 x 分支中 cherry-pick 一些 commit 到 master 分支。

git rebase -i HEAD~3 则是对最近的三次 commit 进行合并、修改等操作,稍微有点复杂,但用过一次就会了。

删除文件

git rm --cached xxx 用于将 xxx 文件/目录从 git 仓库中删除,但并不删除本地文件/目录,非常好用。这经常用于 xxx 虽然被写入 .gitignore 但依然被提交了的情况。

与之相反,git add -f xxx 可以在 xxx 被 ignore 的情况下强行把 xxx 加入 git 仓库,非常野蛮。

通灵术

有时代码还没提交,但需要 git pull,这个时候我推荐使用 git add . ; git stash 把当前代码放入通灵空间,等 pull 结束后再用 git stash pop 将其召唤回来,屡试不爽。

-------- from: 方应杭

你可能感兴趣的:(Git 2022-04-27)