git协同工作

96
金波_xu
2019.06.20 11:36* 字数 459

1. git pull和git fetch的区别

参考文档(很详细): https://blog.csdn.net/weixin_41975655/article/details/82887273

2.简单对比git pull和git pull --rebase的使用

参考文档: https://www.jianshu.com/p/478d912946df

git pull = git fetch + git merge FETCH_HEAD 

git pull --rebase =  git fetch + git rebase FETCH_HEAD 

3. git本地分支与远程分支关联

参考文档: https://blog.csdn.net/u012216131/article/details/84256384

把本地新建分支同步到远程分支上(该分支在远程上没有)

#推荐

git push --set-upstream origin branch_name
#或者简写
git push -u origin branch_name
#不推荐
git push origin branch_name      //将分支推到远程仓库,但没有建立关联
git branch --set-upstream-to=origin/branch_name   //建立关联

在本地把远程分支上新建分支同步到本地(本地没有该分支)

#方法1, 推荐
git fetch origin test_branch
git checkout --track origin/test_branch

#方法2
git fetch origin test2_branch:test2_branch
git checkout  test2_branch
git branch --set-upstream-to=origin/test2_branch  //建立关联

git fetch origin test2_branch:test2_branch这个命令的意思就是拉取远程的一个叫test2_branch的分支,并在本地创建一个叫test2_branch的分支和远程的分支匹配

4.合并分支推荐--no-ff

参考文档: https://www.jianshu.com/p/418323ed2b03
--no-ff指的是强行关闭fast-forward方式。
fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit

git merge --squash 是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash进行合并,此时文件已经同合并后一样了,但不移HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。

总结:
--no-ff:不使用fast-forward方式合并,保留分支的commit历史
--squash:使用squash方式合并,把多次分支commit历史压缩为一次

Ethan@Ethan-PC MINGW64 /d/gitlab_projects/Service_monitor (master)
$ git branch -d songjw_add_sql
Deleted branch songjw_add_sql (was d8cf54a).
Ethan@Ethan-PC MINGW64 /d/gitlab_projects/Service_monitor (master)
$ git log --graph --oneline
*   5d717ba (HEAD -> master, origin/master) Merge remote-tracking branch 'origin/songjw_add_sql'
|\
| * d8cf54a 上传监控配置文件
|/
* 59837fe 一处错误
* 2d684e6 修改数据库执行的结果判断使报警准确,因为当数据库执行失败时,其返还的结果也是为0的
* 9264e84 业务监控
github