0

我想使用 Java 中的 Git Api(Egit 和 JGit)将更改与远程 Git 存储库(位于 GitHub)同步。我怎样才能做到这一点?这是否可以通过知道两个修订版之间的 HEAD ID 或其他方式来实现?

4

1 回答 1

2

仅仅知道HEAD两个存储库中的每一个就足以告诉您它们是否不同步,但不足以告诉您哪个存储库领先于另一个存储库。在一般情况下,不止一个人可以推送到存储库,因此假设您的本地存储库始终领先于您的远程存储库是不明智的。您必须使用 API 来查找第一个常见的 SHA,并使用它来确定如何处理同步存储库。您将不得不处理三个(实际上更多)案例:

  1. 您的本地分支在您的远程之前
  2. 您的遥控器领先于本地
  3. 您的本地和远程都有一组不在另一台上的提交,例如,您从一台计算机推送但没有拉到这里,或者其他人最近推送了提交而您没有注意到,等等。

前两种情况微不足道,第三种情况要复杂得多。在将本地更改与远程同步之前,您总是需要拉取,并且拉取可能会导致合并冲突。如果您不小心,您可能会在发生冲突时尝试强制提交来破坏某些代码。

于 2013-09-02T13:50:09.167 回答