Git命令浅尝

最初使用git是觉得分布式的管理代码方式很酷与集中式管理的小乌龟相比感觉,代码管理变的更方便。但自己使用的git常用命令就那么几个(clone、checkout、 add、commit、pull、push…)没有认真去思考过太深层次的东西,还有一些冷门的指令,为什么没使用过呢,对于哪些场景可以用呢?

  1. git stash

git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
基础命令:
$git stash
$git stash pop

当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,’git stash list’ 命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash clear’来将栈清空。

  1. git rebase 和 git merge
    (相关的资料:https://www.atlassian.com/git/tutorials/merging-vs-rebasing)

这两个都是用来做合并的,rebase的意思是复位基底,merge 是合并。Merge 操作会产生一个新的节点,之前的提交会分开显示。而rebase操作不会产生新的节点,是将两个分支融合成一个线性提交。想要更好的提交树,使用rebase操作会更好一点。这样可以线性的看到每一次提交,并且没有增加提交节点。 在我们操作过程中。merge 操作遇到冲突的时候,当前merge不能继续进行下去。手动修改冲突内容后,add 修改,commit 就可以了。而rebase 操作的话,会中断rebase,同时会提示去解决冲突。解决冲突后,将修改add后执行git rebase –continue继续操作,或者git rebase –skip忽略冲突。

例如,如果您和另一名名为John的开发人员向该feature分支机构添加了提交,则在feature从John’s repository 获取远程分支之后,您的存储库可能如下所示:在同一功能部门进行协作

您可以与您集成上游更改的方法完全相同master:将您的本地feature与您的本地组合john/feature,或将您的本地重新绑定featurejohn/feature

合并与重新分配到远程分支上

这个rebase并没有违反“ 黄金feature治理准则”(git rebase是永远不要在公共分支上使用它),因为只有您的本地提交被移动 – 在此之前的所有事情都未被触动。这就像说“将我的更改添加到John已经完成的内容”中。在大多数情况下,这比通过合并提交与远程分支进行同步更直观。

默认情况下,该git pull命令执行合并,但您可以强制它通过传递该--rebase选项来将远程分支与rebase集成。

以上就是最近使用过的一些git命令,以后会多多留心这些细节的地方,归纳总结,探究明白,更好的运营到工作和学习里。