如何比较本地更改和远程存储库之间的更改

时间:2013-09-02 12:15:33

标签: git github egit github-api jgit

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

1 个答案:

答案 0 :(得分:2)

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

  1. 您的本地分支位于远程
  2. 之前
  3. 您的遥控器位于当地
  4. 之前
  5. 您的本地和远程都没有另外一组提交,例如,您从一台计算机上推,但没有拉到这里或其他人最近推迟提交而您没有注意到等等。
  6. 前两个案例是微不足道的,第三个案件要复杂得多。在将本地更改与远程同步之前,您将始终必须先进行拉动,并且拉动可能会导致合并冲突。如果你不小心,你可以通过在发生冲突时强制提交来破解一些代码。

    如果不了解您打算做什么或确切用例是什么,我不能给你更多的帮助。我希望这就够了。 : - )