我知道在提交之后进行了一次推送,但是在使用命令“ git push -u origin master”之后,我仍然遇到错误。该错误的内容如下:
! [拒绝]管理员->管理员(非快进) 错误:无法将某些引用推送到'https://github.com/。 。 。” 提示:更新被拒绝,因为当前分支的尖端在后面 提示:它的远程副本。集成远程更改(例如 提示:“ git pull ...”),然后再次按下。 提示:有关详细信息,请参见“ git push --help”中的“关于快进的注意事项”。
然后我使用了“ git push -f origin master”,该命令起作用了。那么,这里有什么区别?我对文档不了解,视频也没有帮助。
答案 0 :(得分:1)
错误消息已经提示您:
远程有一些额外的更改,您需要将更改放入自己的存储库中,在其上添加更改,然后推送。
说明问题:
从此开始:
Remote:
[master]
/
A <- B <- C
Local:
[master]
/
A <- B <- C
您在本地进行了一些更改,而其他人在远程进行了一些更改
Remote:
[master]
/
A <- B <- C <- D <- E
Local:
[master]
/
A <- B <- C <- X
试想一下,如果将更改推送到远程,远程将是什么样? Git不会为您猜测它,因此您需要在本地处理它,平滑所有内容,然后按:
Remote:
[master]
/
A <- B <- C <- D <- E
Local:
[origin/master]
/
A <- B <- C <- D <- E
^
\-- X
\
[master]
然后合并或重新设置它:
(如果合并)
[origin/master] [master]
/ /
A <- B <- C <- D <- E <--------- Y
^ /
\-- X <-----------/
(如果有变基)
[origin/master] [master]
/ /
A <- B <- C <- D <- E <--------- X'
在这两种情况下,由于您的本地master分支是remote的master的后代,因此它可以让您进行推送。
如果您改用push -f
,则只需强制遥控器拿走[master]
,在上述情况下,遥控器的主人将成为您的X
提交者,并提交{{1 }}和D
将丢失。通常这是您不需要的东西,尤其是master分支。
答案 1 :(得分:0)
通过消息提交更改
git commit -m "Your commit message here"
然后推送到原点(如果已正确配置了原点,并且已推送到master分支。)
git push -u origin master
答案 2 :(得分:0)
下一步是确认您的更改。 git add
刚刚将它们添加到登台。然后,您需要提交它们以运行git commit -m "Message when committing"
。该消息将显示在您的提交消息上。然后运行git push
,将所有更改都放入存储库中。
请参阅git的文档以进一步了解。
用于将它们添加到暂存中。 https://git-scm.com/docs/git-add
答案 3 :(得分:0)
git add .
将不会提交您的更改,只会暂存它们。如果我们假设您的本地分支是最新的远程服务器,并且您执行了以下操作:
git add .
git push
什么都不会发生,因为您没有要推送的新提交。
git push -u origin master
将尝试将名为master
的本地分支推送到名为origin
的远程分支。几乎可以肯定origin
已经有一个名为master
的分支,因此您正在有效地尝试替换它。如果您使用-f
(强制)运行相同的命令,则将其替换。