Git 日常小册子

519 阅读2分钟
原文链接: walfud.gitbooks.io

Git Daily

约定

我们约定:

  • 对于每次提交所创建的数据结构, 称之为 提交记录 或者 记录
  • 对于指向提交记录的数据结构, 称之为 分支节点, 节点 或者 tag

常见用法

log 相关

# 查看图形历史
git log --oneline --all --graph

# 查看最后一次提交的内容
git log -p -1

# 从所有提交记录中查找
git log -G "console.log('walfud', .*)" --all

branch

# 从当前 HEAD 创建新分支, 并检出到新分支
git checkout -b newBranch

# 当前分支创建新分支 dev
git branch dev

合并/变基

# 把 foo 分支合并到当前分支
git merge foo

# 把当前分支变基到目标分支
git rebase master

远程仓库相关

# 设置远程仓库
git remote add origin https://github.com/paulboone/ticgit

# 设置追踪分支
# origin/foo 实际代表的是 .git/refs/remotes/origin/foo, 
# 所以如果该文件不存在, 需要先通过 `git fetch origin` 来获取远程仓库的所有分支
# 然后再使用 `branch -u` 设置追踪分支
git branch -u origin/master

push

# 推送本地当前分支到远程仓库 bar 分支
git push origin bar

# 用于第一次推送并设置远程追踪分支
git push -u upstream foo

# 推送本地 foo 分支到远程 bar 分支
git push origin foo:bar

# 删除远程 bar 分支
git push origin :bar

rm / reset / revert

# 取消暂存
git rm --cached some.txt

# 从版本控制中移除
git rm some.txt

# 重置最后一次提交
# 最后一次提交的内容会被会退到工作目录
git reset HEAD~

# 放弃最后一次提交
# 内容会被丢弃, 工作目录和历史记录会完全会退到提交之前
git reset --hard HEAD~

# 还原线性历史的最后一次提交
git revert HEAD

# 还原 merge 目标分支的提交
git revert -m 1 HEAD

cherry-pick

# 拣选某次提交
git cherry-pick 4c90d56

clean

# 静默删除没有被版本控制的文件, 文件夹(-d)
git clean -dxf

FAQ

贡献内容及评论

欢迎贡献, 即便是纠正错别字也能为后来的读者减少困扰.

目前没有绑定 Github, 所以 pr 可能不太方便. 最简单的方式是使用评论系统沟通.

不过由于评论使用了 Disqus 系统, 可能需要翻墙访问本页面才能看到.