如何在git branch上获取最新的checkout提交?

时间:2017-07-03 11:31:51

标签: git

我希望使用git进行软件更新。这意味着客户端具有远程git存储库的本地克隆,并且从swing接口,它将看到当前提交的子提交,这意味着所有提交都比当前提交更新。

然后客户端将从较新提交列表中检查所需的提交,并对该提交进行更新。

为了执行git命令,我使用ProcessBuilder创建了一些方法。

为了测试行为,我有2个本地存储库和一个远程存储库。 1.在localRepo1中我克隆了remoteRepo,然后我将文本写入newFile并提交它,然后推送它。 2在localRepo2中我克隆了remoteRepo:它现在是远程repo的完整副本,所以它也有newFile。 3来自localRepo1我正在编写一个包含另一个文本的newFile2并将其推送到远程存储库。 4来自localRepo2我希望看到差异,我只有一个提交,而不是2.我的意思是,在localRepo2中我只有newFile,而不是newFile和newFile2文件。

我正在使用2个终端进行测试:int第一个我在目录localRepo1中,第二个终端在localRepo2目录中。

执行

git rev-list --all --date-order 

在每个本地回购,然后我可以清楚地看到差异:

localRepo1:

82d8715010cab1a6649ebecb6adeff9c3c88d85f
a2ad1c5ab691fc63a283d7dde85014606ed85f62
c8757e4f8ff318260577e479e3c9146f79aebacf

localRepo2:

a2ad1c5ab691fc63a283d7dde85014606ed85f62
c8757e4f8ff318260577e479e3c9146f79aebacf

我正在寻找一个命令来查看丢失的提交:

82d8715010cab1a6649ebecb6adeff9c3c88d85f

这个缺失的提交是客户端将看到一个swing组件(例如comboBox - 可能有更多缺少提交)并且可以检查更新到。

我如何看待这些差异?

2 个答案:

答案 0 :(得分:-1)

我找到了一个令人满意的解决方案:

git fetch origin

然后

git whatchanged ..origin/<branchName>

exp:

git whatchanged ..origin/maste

答案 1 :(得分:-2)

我可以想到两种方式。

我建议的是,不要推。而是取你的客户端软件。然后,客户端的本地分支在他们正在使用的提交上保持正确,并且fetch为他们提供反映最新可用提交的远程分支ref。

git rev-list --reverse origin/master..master

将显示可以进行更新的可用提交,一旦选择了一个,客户端软件就可以(快进)将所选提交合并到本地分支中。

rev-list代替log,因为前者更适合脚本解析)

唯一的缺点是您需要定义客户端软件何时检查更新。如果这不可能......好吧,我不相信。但如果你拒绝以这种方式解决它:

维持两个分支。你推送的那个,以及客户实际上的那个。在同一次提交中启动两个,并且只通过推送分支(快进)合并来更新客户端分支。