! [拒绝]主人 - >主人(先获取)

问题描述 投票:61回答:10

有没有一个很好的方法来解释如何在Git中解决“! [rejected] master -> master (fetch first)'”?

当我使用此命令$ git push origin master时,它显示一条错误消息。

! [rejected]        master -> master (fetch first)
error: failed to push some refs to '[email protected]:zapnaa/abcappp.git'
git github git-push
10个回答
83
投票

答案就在那里,git告诉你先取。

可能其他人已经推动掌握,你的承诺落后了。因此,您必须获取,合并变更集,然后您将能够再次推送。

如果你不这样做(或者更糟糕的是,如果你通过使用--force选项强制它),你可以搞乱提交历史记录。

编辑:我进一步了解最后一点,因为这里的一个人刚刚给出了使用--force选项的非常糟糕的建议。

由于git是一个DVCS,理想情况下,许多其他开发人员正在使用相同的存储库(或它的一个分支)处理与您相同的项目。如果你用变更集强行覆盖,你的存储库将与其他人不匹配,因为“你重写了历史”。你会让其他人不高兴,存储库也会受到影响。可能世界上的一只小猫也会哭。

TL; DR

  1. 如果要解决,请先获取(然后合并)。
  2. 如果你想破解,请使用--force选项。

但是你要求前者。一直都是1),即使你总是自己使用git,因为这是一个很好的做法。


-1
投票

这项工作对我来说

  1. 去初始化
  2. git add --all

3.git commit -m“name”

4.git push origin master --force


43
投票

尝试:

git fetch origin master
git merge origin master

写完这段代码后,我收到了其他错误:(非快进)

我写这段代码:

git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp

并解决了我的问题


19
投票

你应该使用git pull,这命令做一个git fetch,接下来做git merge

如果使用git push origin master --force命令,将来可能会遇到问题。


12
投票

pull始终是正确的方法,但是当您尝试将none-Git文件系统转换为Github存储库时,可能会有一个例外。你必须强制进行第一次提交。

git init
git add README.md
git add .
git commit -m "first commit"
git remote add origin https://github.com/userName/repoName.git
git push --force origin master

10
投票

试试这个git命令

git push origin master --force

或缺乏力量-f

git push origin master -f


3
投票

您可以使用以下命令:首先使用--mirror标记克隆repo的新副本:

$ git clone --mirror git://example.com/some-big-repo.git

然后按照相应的代码:

Adding an existing project to GitHub using the command line

即使这不起作用,您也可以简单地编码:

$ git push origin master --force 

要么

$ git push origin master -f

2
投票

有时它会在您复制文件时发生,通常是自述文件类型。


1
投票

很可能其他人(例如你的同事)已经将提交放到origin/master上,而这些提交不在你当地的master分支中,并且你试图将一些提交从你的本地分支推送到服务器。在99%的情况下,假设您不想从origin中删除他们的工作,您有两种选择:

2)将他们的更改合并到您的本地分支,然后推送合并的结果。 git checkout master git pull # resolve conflicts here git push

(请注意,在这种情况下,git pull基本上只是一个git fetch和一个git merge。)

1)重新启动您的本地分支,以便您的同事看起来像他们的提交,然后您提交了您的提交。这使提交历史保持良好和线性 - 并避免“合并提交”。但是,如果您与同事的更改发生冲突,则在最坏的情况下,您可能必须为每个提交(而不是仅仅一次)解决这些冲突。基本上这对其他人来说更好,但对你来说更省力。 git pull --rebase # resolve conflicts here git push

(请注意,git pull --rebase本质上是一个git fetch和一个git rebase origin/master。)


0
投票

您的错误可能是因为合并分支。 请按照:

第1步:git pull origin master(万一你得到任何消息然后忽略它) 第2步:git add . 第3步:git commit -m 'your commit message' 第4步:git push origin master

© www.soinside.com 2019 - 2024. All rights reserved.