如何撤消Git上其他远程存储库所做的提交?

如何撤消Git上其他远程存储库所做的提交?,git,Git,这听起来可能有点像一个问题,给人的印象是我太懒了,不敢做自己的研究,但实际上我没有找到有助于解决我的问题的资源 我目前正在使用同一个存储库中的两个Git克隆,它们分别克隆在我的个人笔记本电脑和我工作时使用的一台计算机上。有时,当我从笔记本电脑推送到存储库时,我忘记拉我的工作计算机,后来当我尝试将更改从工作计算机提交到存储库时,我会收到一条错误消息,告诉我先执行git pull。有没有什么方法可以撤销本例中从笔记本电脑中进行的强制更改 提前谢谢。你没有做错什么。如果需要,您不必撤消提交。在协作编程

这听起来可能有点像一个问题,给人的印象是我太懒了,不敢做自己的研究,但实际上我没有找到有助于解决我的问题的资源

我目前正在使用同一个存储库中的两个Git克隆,它们分别克隆在我的个人笔记本电脑和我工作时使用的一台计算机上。有时,当我从笔记本电脑推送到存储库时,我忘记拉我的工作计算机,后来当我尝试将更改从工作计算机提交到存储库时,我会收到一条错误消息,告诉我先执行
git pull
。有没有什么方法可以撤销本例中从笔记本电脑中进行的强制更改


提前谢谢。

你没有做错什么。如果需要,您不必撤消提交。在协作编程中,遇到这样的错误是很常见的。Git抱怨只是因为默认情况下它不允许分支被分支更新。假设我们有两个分支,A和B。当A对B有一个或多个新的提交,同时B对A有一个或多个新的提交时,它们是分开的

要避免此错误,请按照日志建议运行
git pull
。但是在您的情况下,更好的方法是使用
git pull-r
或者更具体地说
git pull origin-r
git pull
相当于
git fetch和&git merge
,而添加
-r
-rebase
则使其成为
git fetch和&git rebase
。使用rebase,您可以避免重复的合并提交,并保持分支历史记录干净整洁


当然,使用
gitpush--force
撤销提交也是一种解决方案。但是这样的话,如果你真的需要他们的改变,你就必须再做一次。这只会花费你更多的时间和精力。

你没有做错什么。如果需要,您不必撤消提交。在协作编程中,遇到这样的错误是很常见的。Git抱怨只是因为默认情况下它不允许分支被分支更新。假设我们有两个分支,A和B。当A对B有一个或多个新的提交,同时B对A有一个或多个新的提交时,它们是分开的

要避免此错误,请按照日志建议运行
git pull
。但是在您的情况下,更好的方法是使用
git pull-r
或者更具体地说
git pull origin-r
git pull
相当于
git fetch和&git merge
,而添加
-r
-rebase
则使其成为
git fetch和&git rebase
。使用rebase,您可以避免重复的合并提交,并保持分支历史记录干净整洁


当然,使用
gitpush--force
撤销提交也是一种解决方案。但是这样的话,如果你真的需要他们的改变,你就必须再做一次。这只会花费您更多的时间和精力。

您可以通过
git reset
从笔记本电脑中撤消从笔记本电脑中推送的内容,然后
git push--force
在远程计算机上重写历史记录。但最终它并不被推荐。Git告诉您从您的工作计算机中拉出,然后就这样做。git pull有什么问题?做这件事很简单,比强制力更简单、更安全。我基本上同意@LoiNguyenHuynh的评估(+1)。我们还需要注意的是,如果您单独处理回购协议,因为您之前从笔记本电脑上推送的工作仍然在笔记本电脑的本地上,另一种方法是强制推送,然后从笔记本电脑上拉/推送。然后,我发现洛伊的建议是常识性的答案,你应该首先考虑。我同意,如果我和别人一起工作,这将是一个问题,但谢天谢地,情况并非如此,我独自在这个特定的项目上工作。我之所以不愿意使用git pull,是因为我在工作电脑上做了很多更改,我担心使用git pull会重置我的工作。是这样吗?您可以通过
git reset
,然后
git push--force
在远程计算机上重写历史记录,从笔记本电脑上撤消您从笔记本电脑上推送的内容。但最终它并不被推荐。Git告诉您从您的工作计算机中拉出,然后就这样做。git pull有什么问题?做这件事很简单,比强制力更简单、更安全。我基本上同意@LoiNguyenHuynh的评估(+1)。我们还需要注意的是,如果您单独处理回购协议,因为您之前从笔记本电脑上推送的工作仍然在笔记本电脑的本地上,另一种方法是强制推送,然后从笔记本电脑上拉/推送。然后,我发现洛伊的建议是常识性的答案,你应该首先考虑。我同意,如果我和别人一起工作,这将是一个问题,但谢天谢地,情况并非如此,我独自在这个特定的项目上工作。我之所以不愿意使用git pull,是因为我在工作电脑上做了很多更改,我担心使用git pull会重置我的工作。是这样吗?