如何解决git错误:"更新被拒绝,因为您当前分支的提示落后"

时间:2014-03-20 12:24:13

标签: git bitbucket git-merge

我最近开始使用Git(之前我使用过subversion,但我现在正在对使用bitbucket和git的项目进行一些协作)。

直到今天,当我发现一位意义深远的同事推动了对大师的改变而不是分支时,一切都进展顺利。这意味着当我尝试提交时,我收到错误:

  

更新被拒绝,因为您当前分支的提示已落后

我知道这应该通过提出重新同步的拉取请求来解决,但我不想丢失我在本地做出的更改,我同样不想强制提交和擦除了解其他人的变化。

允许我在不丢失的情况下合并更改的正确方法是什么?

9 个答案:

答案 0 :(得分:59)

如果您已经提交了一些提交,则可以执行以下操作

git pull --rebase

这会将所有本地提交置于新拉动的更改之上。

非常小心:这可能会覆盖所有现有文件,因为它们位于远程仓库中的分支头部!如果发生这种情况且您不想要它,可以取消此更改

git rebase --abort 

...自然你必须在做任何新的提交之前这样做!

答案 1 :(得分:19)

我会这样做:

  1. 暂存所有未暂停的更改。

    git add .
    
  2. 存储更改。

    git stash save
    
  3. 与遥控器同步。

    git pull -r
    
  4. 重新应用本地更改。

    git stash pop
    

    git stash apply
    

答案 2 :(得分:3)

我遇到了同样的问题。不幸的是我的目录水平不对。

我尝试:git push -u origin master - >出现了错误

然后我尝试了:git pull --rebase - >还有问题 最后,我更改了目录cd your_directory

然后我再次尝试(git push)并且它有效!

答案 3 :(得分:3)

当有人将代码提交到开发/母版并且最新的代码尚未从开发/母版重新建立基础并且您试图覆盖对开发/母版分支的新更改时,就会发生此问题

解决方案:

  • 如果您正在使用功能分支,请进行备份,并通过执行git checkoutdevelop / master切换到master / develop分支
  • 进行git pull
  • 在同一文件中进行了更改(尚未从developer / master重新建立基础)时,您将获得更改并发生合并冲突。
  • 解决冲突(如果发生)并执行git push,这应该可以工作

答案 4 :(得分:1)

通过以下Visual Studio 2017更改,我能够解决此问题:

  1. 在“团队资源管理器”中,转到“ 设置”。转到全局设置以在全局级别配置此选项;转到存储库设置以在存储库级别配置此选项。
  2. 设置拉动到所需设置(对我来说是 True )时重新设置本地分支,然后选择 Update 保存。
  3. li>

请参阅:the docs for Unmarshal

答案 5 :(得分:1)

这对我有用:

git pull origin <current-branch-name>
git push

答案 6 :(得分:0)

我的分支机构遇到了完全相同的问题(我们称其为B分支机构),我遵循了三个简单的步骤来使其正常工作

  1. 切换到master分支(git checkout master)
  2. 在主控上拉了一个(git pull)
  3. 创建了新分支(git分支C)-在这里请注意,我们现在是从master分支
  4. 现在,当您在分支C上时,请与分支B合并(git merge B)
  5. 现在执行一次推送(git push origin C)-起作用:)

现在您可以删除分支B,然后将分支C重命名为分支B。

希望这会有所帮助。

答案 7 :(得分:0)

您当前不在分支机构。 将历史推向当前(分离的HEAD) 现在说明,使用

git push origin HEAD:<name-of-remote-branch>

答案 8 :(得分:0)

我遇到了这个问题,我意识到.gitignore文件已更改。因此,我更改了.gitignore,然后可以进行更改。