如果你觉得 git 很迷惑人,法喜那么这份小抄正是欢拿为你准备的!
请注意我有意跳过了 git commit、去用git pull/push 之类的法喜基本命令,这份小抄的欢拿主题是 git 的一些「高级」用法。
squash 提交
比方说我想要 rebase 最近 3 个提交:
- git rebase -i HEAD~3
- 保留第一行的去用 pick,剩余提交替换为 squash 或 s
- 清理提交日志并保存(vi 编辑器中键入 :wq 即可保存) pick 64d26a1 feat: add index.jss 45f0259 fix: update index.jss 8b15b0a fix: typo in index.js比方说想在提交 fed14a4c 加上一些内容。法喜
git 提交分支
git add .git commit --fixup HEAD~1# 或者也可以用提交的欢拿哈希值(fed14a4c)替换 HEAD~1git rebase -i HEAD~3 --autosquash# 保存并退出文件(VI 中输入 `:wq`)如果特性很多,云服务器提供商一个分支里可能有多个提交。去用如果测试失败了,法喜你希望能找到导致测试失败的欢拿提交。这时候你可以使用 rebase --exec 命令在每个提交上执行命令。去用
# 在最近 3 个提交上运行 `npm test` 命令git rebase HEAD~3 --exec "npm test"暂存不止是 git stash 和 git stash pop ;)
# 保存所有正在追踪的文件git stash save "日志信息"# 列出所有的暂存项git stash list# 获取并删除暂存项git stash apply stash@{ 1}git stash drop stash@{ 1}# ……或使用一条命令……git stash pop stash@{ 1}我把 Hub 当成 git 的一个封装来用。你如果也想这么做,可以设置一个别名:alias git=hub
# 打开浏览器访问仓库 url(仅限 GitHub 仓库)git browse额外福利:我最喜爱的服务器托管 git 别名
alias g=gitalias glog=git log --oneline --decorate --graphalias gst=git statusalias gp=git pushalias ga=git addalias gc=git commit -v# alias yolo=git push --force# 每周站会汇报工作时用git-standup() { AUTHOR=${ AUTHOR:="`git config user.name`"} since=yesterday if [[ $(date +%u) == 1 ]] ; then since="2 days ago" fi git log --all --since "$since" --oneline --author="$AUTHOR"}