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

时间:2015-02-10 10:51:31

标签: git github git-push

有没有一种好方法可以解释如何解决" ! [rejected] master -> master (fetch first)'"在Git?

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

! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:zapnaa/abcappp.git'

25 个答案:

答案 0 :(得分:75)

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

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

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

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

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

TL; DR

  1. 如果要解决,先获取(然后合并)。
  2. 如果您想破解,请使用--force选项。
  3. 但是,你要求前者。 1)总是,即使你总是自己使用git,因为这是一个很好的做法。

答案 1 :(得分:39)

尝试:

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

解决了我的问题

答案 2 :(得分:18)

你应该使用git pull,这个命令执行git fetch然后执行git merge

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

答案 3 :(得分:10)

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

答案 4 :(得分:10)

如错误消息中所述,您必须“先获取”。这对我有用。 使用命令:

  1. git fetch origin master

然后按照以下步骤进行合并:

  1. git pull origin master
  2. git add .
  3. git commit -m 'your commit message'
  4. git push origin master

答案 5 :(得分:9)

试试这个git命令

git push origin master --force

或力量不足-f

git push origin master -f

答案 6 :(得分:4)

请尝试使用此命令解决-

git push origin master --force

 git push origin master -f

答案 7 :(得分: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

答案 8 :(得分:3)

请按照下面给出的步骤进行操作,因为我也遇到了同样的问题:

$ git pull origin master --allow-unrelated-histories 

(查看本地分支是否可以轻松地与远程分支合并)

$ git push -u origin master 

(现在将本地git存储库的所有内容推送到您的在线存储库中)

答案 9 :(得分:2)

有时候,当您通常以README排序复制文件时会发生这种情况。

答案 10 :(得分:1)

最快的解决方案-

  1. 做一个git日志-> 您会看到有人可能在您提取最新代码库时发布了一些代码。
  2. 执行 git pull --rebase,这将首先回滚头部以在其上重放您的工作,然后将您提交的更改应用于相同的内容。
  3. 您现在已准备好进行 git push。

答案 11 :(得分:1)

我通过签出像这样的新分支来克服了这个问题:

# git checkout -b newbranch <SHA of master>

# git branch
* newbranch
  master

# git push -u <repo_url_alias> newbranch

剩下2个分支:Master和newbranch,以后可以合并。

答案 12 :(得分:1)

首先,您应该使用 git pull ,然后命令执行 git fetch ,然后执行git merge。

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

答案 13 :(得分:1)

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

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

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

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

(请注意,git pull --rebase基本上是git fetchgit rebase origin/master。)

答案 14 :(得分:0)

使用此命令很简单:

  

git push -f原始主机

它将完成您的工作

答案 15 :(得分:0)

这对我有用:

$ git add .
$ git commit -m "commit"
$ git push origin master --force

答案 16 :(得分:0)

您只需提及分支机构名称和远程名称即可。

stdint.h

答案 17 :(得分:0)

您的错误可能是由于合并分支造成的。
只需遵循以下步骤即可:

第1步:git pull origin master(如果您收到任何消息,请忽略它)
步骤2:git add .
步骤3:git commit -m 'your commit message'
步骤4:git push origin master

答案 18 :(得分:0)

我的情况发生的原因是在创建GitHub rep链接时,我使用 README文件

对其进行了初始化。

创建Git远程时,请勿使用README文件对其进行初始化,否则会显示err

不要那样做,它肯定可以正常工作 如果您希望在推送至master分支后进行自述,请改为使用自述文件进行初始化

答案 19 :(得分:0)

这对我有用,因为没有其他解决方案对我有用。 甚至没有力量!

https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line

只需经历Git Bash

cd REPOSITORY-NAME
git add .
git commit -m "Resolved merge conflict by incorporating both suggestions."

然后回到我的cmd,我可以:git push heroku master这是我的问题。

答案 20 :(得分:0)

--force选项对我有用,我用过git push origin master --force

答案 21 :(得分:0)

enter image description here

! [拒绝]管理员->管理员(先获取) 错误:无法将一些引用推送到“ git@github.com:”

enter image description here

使用--force命令成功解决了该问题。 因此,您必须使用
git push origin master --force

答案 22 :(得分:0)

使用此命令:

.event.item.ts

答案 23 :(得分:0)

这对我有用

  1. git init

  2. git add --all

3.git commit -m“名称”

4.git push origin master --force

答案 24 :(得分:-1)

已解决的问题

我遇到的问题

! [rejected]        master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/repo_name/repo-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.

我也有同样的问题。问题是您在其他存储库中的commits未成功pushed,因此您需要运行以下命令:

  1. git fetch origin master

    输出:From https://github.com/username/repo-name * branch master -> FETCH_HEAD

  2. git merge origin master

    输出:Merge made by the 'recursive' strategy. repo-name/ReadMe.md | 1 - 1 file changed, 1 deletion(-)

  3. git push

    输出:Enumerating objects: 8, done. Counting objects: 100% (8/8), done. Delta compression using up to 8 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 1.00 KiB | 1.00 MiB/s, done. Total 6 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 1 local object. To https://github.com/user_name/repo-name.git 0852d5vf..70v56d9 master -> master

非常感谢您