如果没冲突的话,拉取代码就两步,一般就两步
git fetch
git pull origin <远程分支>
git fetch
// 同步远程仓库和本地仓库(如果fetch之前,别人的代码还在远端,本地还没有,所以不能merge合并代码)
git merge origin/[name]
// ----将名称为[name]的分支与当前分支合并,
// merge 分支前面加上origin
// 除非你是切换到他人那个分支上,再pull,pull后再merge就不用加origin了
Auto-merging test.xcodeproj/project.pbxproj
CONFLICT (content): Merge conflict in test.xcodeproj/project.pbxproj
The stash entry is kept in case you need it again.
提示:先把本地你的代码commit了之后,再merge。
或者stash
暂存一下,merge
后再stash pop
回来:
git stash save '新添加的内容标签'
git stash save '内容' // 缓存并标注注释
git stash show // 展示修改过的文件
git stash list // 查看缓存列表
git stash apply index // 释放缓存列表
git stash drop stash@{number} // 删除指定的缓存
git stash drop // 删除整个stash的缓存
git stash clear // 删除所有的stash缓存
git stash list // 展示缓存的列表
git merge origin/[他人的远程分支]
git stash pop
修改冲突之后,在这行命令
vim 或command+选中目录,或open .
打开当前目录,或者open test.xcodeproj/project.pbxproj
打开冲突文件,修改。“<<<<<”、“>>>>>”、“=====”冲突位置。
因为你刚才stash了,stash pop回来时又遇到冲突了,
所以你的stash list中还能看到你刚才stash的内容。
如果stash pop后没有什么问题就会自动从你的stash list中删除
(不修改的话,直接git reset --hard
,把stash的reset调,这个命令慎重使用,因为会把你工作区的内容全删掉,再也找不回来了,没commit的修改都会删除)
注意:
1、git fetch
和 git pull
的区别:
在执行git pull
之后,代码会自动merge到本地的分支中,而git fetch
会忽略掉这个merge操作,因此简单的来说:
git pull = git fetch + git merge
2、git pull
和 git pull --rebase
的区别:
git pull
命令默认 包含了一个--merge
参数,因此二者的区别就是merge
和rebase
的区别。
3、merge
:
merge
会创建一个新的commit,如果合并时遇到了冲突,需要解决冲突后,重新commit。