如何使用TortoiseGit进行推送

3
在推送过程中发生了以下错误。
git.exe push    "origin" master:master

To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'non-fast forward'
section of 'git push --help' for details.
To //oht-fsv1/Source/Git/Test
! [rejected]        master -> master (non-fast forward)

有什么问题吗?

1个回答

7
git push中可以得知:

当更新更改了分支(或更一般地说,引用),使其从指向提交 A 转变成指向另一个提交 B 时,仅当 B 是 A 的子孙时,它才被称为快进式更新。

在从 A 快进更新到 B 时,原始提交 A 构建在其之上的提交集是新提交 B 构建在其之上的提交集的子集。因此,它不会丢失任何历史记录。

相比之下,非快进式更新将会丢失历史记录。

因此,这将防止您丢失历史记录:先尝试进行 git pull,解决潜在的冲突,然后 "git push" 结果即可。


我刚遇到了这个错误,那么我该如何防止git pull覆盖我的当前更改。我之前尝试过git pull,它覆盖了我最新的更改,让我感到相当困惑。冲突将如何被检测到? - vfclists
@vfclists:小心git checkout -- filename命令:它实际上是一种覆盖(而不是合并)更改的操作。在您的情况下,使用git pull --rebase命令会更安全。 - VonC
如果 git pull 显示“已经是最新的”,而 git push 也出现了同样的问题,那么我现在面临的就是这个情况。 - Adil
@Adil:“已经是最新的”总是让我想起“分离的HEAD”情况:https://dev59.com/hXNA5IYBdhLWcg3wWsUA#1000009和https://dev59.com/om025IYBdhLWcg3w1JiG#5772882。你这里是不是也是这种情况? - VonC
就是这样VonC。 我想这是一个未完成的rebase。不幸的是,在我发现自己没有分支之后,我不得不手动重新做一些更改!感谢提供的链接。 - Adil
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接