Git使用心得

一些难点(对我来说)查阅了很多资料,依然懵懵懂懂,先总结一下,之后补充。

git pull = git fetch + git merge

很好理解,fetch将代码拉取到本地暂存,merge再将本地暂存的代码合并到代码库

git merge 和 git merge -no-ff

2018035_12
git merge –no-ff 可以保存你之前的分支历史。能够更好的查看 merge历史,以及branch 状态。

git merge 则不会显示 feature,只保留单条分支记录。

关于git pull -rebase和git pull

这个问题的本质是变基和合并的选择,merge进行合并并提交之后,之前的所有提交将被丢弃,只保留merge的提交信息。而rebase变基的过程却是将分支的起点移动到了最新版本之后,保留了所有提交信息。如下。

rebase
    A---B---C topic
   /
  D---E---F---G master
  
                A'--B'--C' topic
               /
  D---E---F---G master
merge
     A---B---C topic
    /
   D---E---F---G master
   
    A-----B---C topic
    /          \
    D---E---F---G---H master

merge相当于把两个分支合并成一个新的分支,被合并的分支所有提交会丢失且变成一个merge提交合并到另一个分支(只需要解决一次冲突)。
rebase相等于从当前分支创建一个新的分支,再把另一个分支的提交记录一个个提交到新创建的分支。”优势是会保留所有的提交记录,劣势是两个分支差异太大的时候很要命(需要分别解决多次冲突)。

变基和合并

如何选择merge和rebase

深入理解merge和rebase

关于git pull -rebase和git stash (save) && git stash pop/apply

先说一下pop和apply

git stash apply,会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录还存在list中

git stash pop,也会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录不存在list中
ps: git stash clear清空stash

再说一下怎么区分rebase和stash使用场景

20180325_10
这两个其实是比较好理解的,当在分支进行开发时,突然需要拉取新版代码,又不想放弃当前开发进度(废话),这时就有两个选择:

  1. 将当前修改内容commit,然后使用git pull -rebase命令将本地commit内容连接到远处最新commit后。rebase 在拉代码前要确保你本地工作区是干净的,如果你本地修改的内容没完全 commit 或者 stash,就会 rebase 失败。
  2. 不提交当前更改,使用git stash储藏改动的代码,使用git pull拉取后再git stash pop将储藏的改动取出。

汤一碗博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论