在论坛里看到这样一个帖子:https://ruby-china.org/topics/26320。 刚好几周前在公司做了一次关于 git 使用的分享。所以想拿出来分享下这个内容。
checkout 有 3 个作用分别是:
git checkout master
切换分支git checkout <commit> <file>
可以 checkout 某个 commit 下的文件并放入暂存区git checkout <commit>
可以 checkout 某个 commit,然后可以将当前置于某个游离的 commit整体来讲 checkout 可以提供一个功能 review commit,并且是无害的。但是使用git checkout HEAD file
,(可以省略 HEAD)可以清空当前工作区的内容。
通过 revert commit 来回滚某个历史 commit,所以是安全的。
reset file,可以讲暂存区的移除到工作区。 reset commit,撤销 local 的某个 commit,有 3 种模式 如果只是清除或者修改某个私有分支的未提交 commit,直接 reset 即可。 如果已经提交到 remote,需要强制 push。但是因为会修改历史 commit 记录,所以对其他人会有影响,所以不建议在公共分支上做此操作! 如果需要回滚某个公有分支的 commit,可以切出私有分支 revert 某个 commit,然后提交 pr。
清除 Unstaging a File
参考这里: https://www.atlassian.com/git/tutorials/undoing-changes https://www.atlassian.com/git/tutorials/resetting-checking-out-and-reverting
另外还有两篇: https://www.atlassian.com/git/tutorials/rewriting-history。 https://www.atlassian.com/git/tutorials/merging-vs-rebasing 主要介绍 merge 和 rebase。一般用 rebase -i 来整理私有分支上的 commit。 在私有分支上 rebase 其他分支来引入其他分支的 commit,并且 merge 以后可以很好的保证一个线性的 commit 历史纪录。 但是永远不要在公有分支上 rebase 操作,因为会修改历史 commit 的历史纪录。
git 的 workflow https://www.atlassian.com/git/tutorials/syncing thoughtbot 的: https://github.com/thoughtbot/guides/blob/master/protocol/git/README.md
另外推荐一个工具: https://github.com/aanand/git-up