我最近开始使用Git(之前我使用过subversion,但我现在正在对使用bitbucket和git的项目进行一些协作)。
直到今天,当我发现一位意义深远的同事推动了对大师的改变而不是分支时,一切都进展顺利。这意味着当我尝试提交时,我收到错误:
更新被拒绝,因为您当前分支的提示已落后
我知道这应该通过提出重新同步的拉取请求来解决,但我不想丢失我在本地做出的更改,我同样不想强制提交和擦除了解其他人的变化。
允许我在不丢失的情况下合并更改的正确方法是什么?
答案 0 :(得分:59)
如果您已经提交了一些提交,则可以执行以下操作
git pull --rebase
这会将所有本地提交置于新拉动的更改之上。
非常小心:这可能会覆盖所有现有文件,因为它们位于远程仓库中的分支头部!如果发生这种情况且您不想要它,可以取消此更改
git rebase --abort
...自然你必须在做任何新的提交之前这样做!
答案 1 :(得分:19)
我会这样做:
暂存所有未暂停的更改。
git add .
存储更改。
git stash save
与遥控器同步。
git pull -r
重新应用本地更改。
git stash pop
或
git stash apply
答案 2 :(得分:3)
我遇到了同样的问题。不幸的是我的目录水平不对。
我尝试:git push -u origin master
- >出现了错误
然后我尝试了:git pull --rebase
- >还有问题
最后,我更改了目录cd your_directory
然后我再次尝试(git push
)并且它有效!
答案 3 :(得分:3)
当有人将代码提交到开发/母版并且最新的代码尚未从开发/母版重新建立基础并且您试图覆盖对开发/母版分支的新更改时,就会发生此问题
解决方案:
答案 4 :(得分:1)
通过以下Visual Studio 2017更改,我能够解决此问题:
答案 5 :(得分:1)
这对我有用:
git pull origin <current-branch-name>
git push
答案 6 :(得分:0)
我的分支机构遇到了完全相同的问题(我们称其为B分支机构),我遵循了三个简单的步骤来使其正常工作
现在您可以删除分支B,然后将分支C重命名为分支B。
希望这会有所帮助。
答案 7 :(得分:0)
您当前不在分支机构。 将历史推向当前(分离的HEAD) 现在说明,使用
git push origin HEAD:<name-of-remote-branch>
答案 8 :(得分:0)
我遇到了这个问题,我意识到.gitignore文件已更改。因此,我更改了.gitignore,然后可以进行更改。