有没有一个很好的方法来解释如何在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告诉你先取。
可能其他人已经推动掌握,你的承诺落后了。因此,您必须获取,合并变更集,然后您将能够再次推送。
如果你不这样做(或者更糟糕的是,如果你通过使用--force
选项强制它),你可以搞乱提交历史记录。
编辑:我进一步了解最后一点,因为这里的一个人刚刚给出了使用--force
选项的非常糟糕的建议。
由于git是一个DVCS,理想情况下,许多其他开发人员正在使用相同的存储库(或它的一个分支)处理与您相同的项目。如果你用变更集强行覆盖,你的存储库将与其他人不匹配,因为“你重写了历史”。你会让其他人不高兴,存储库也会受到影响。可能世界上的一只小猫也会哭。
TL; DR
--force
选项。但是你要求前者。一直都是1),即使你总是自己使用git,因为这是一个很好的做法。
这项工作对我来说
3.git commit -m“name”
4.git push origin master --force
尝试:
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
并解决了我的问题
你应该使用git pull
,这命令做一个git fetch
,接下来做git merge
。
如果使用git push origin master --force
命令,将来可能会遇到问题。
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
试试这个git命令
git push origin master --force
或缺乏力量-f
git push origin master -f
您可以使用以下命令:首先使用--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
有时它会在您复制文件时发生,通常是自述文件类型。
很可能其他人(例如你的同事)已经将提交放到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
。)
您的错误可能是因为合并分支。 请按照:
第1步:git pull origin master
(万一你得到任何消息然后忽略它)
第2步:git add .
第3步:git commit -m 'your commit message'
第4步:git push origin master