pull代码
场景:
提交到远程后,本地进行了reset操作。此时远程仓库代码比本地仓库代码更新。导致本地无法提交代码(会报错,因为会覆盖远程)
To github.com:echowant/want-source.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:echowant/want-source.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
办法:
不能git pull同步代码到本地,需要执行git pull –rebase,该参数的含义是:
1.把本地working copy从上次 pull 之后的变更暂存起來
2.恢复到上次 pull 时的状态
3.合并远端的变更到本地
4.最后再合并刚刚暂存下來的本地变更
如果遇到了冲突,解决对应的冲突即可。
git pull的默认行为是git fetch + git merge
git pull –rebase则是git fetch + git rebase.
因此,使用git fetch,然后在merge或者rebase来解决冲突,会比直接使用git pull更好,这样更容易解决出现的冲突。
####
git pull –rebase
本地同步到远程最新,
然后本地修改并提交记录,
他人有推送并合入到远程仓库,
在没有冲突的情况下,当拉取远程提交记录到本地并变基时,会将本地提交记录节点移动到更新的远程记录之后。常用于同步最新代码。如果无法处理好解冲突操作,请使用后面的cherrypick方式来同步。