3

需要在脚本中执行此操作。谢谢你。

4

4 回答 4

2

我使用以下命令(作为别名)列出所有未推送到远程存储库的本地提交。

log --oneline --decorate=short --graph --all --branches --not --remotes

这需要修改以在脚本中使用,并且可能有管道命令可以做同样的事情,但我发现它很有用。

关键在于最后几个论点:

  • --all包括所有的参考refs/——如果你只想要当前分支的提交,你可能不想要这个。
  • --branches包括所有 refs refs/heads- 将其保留为当前或明确指定一个分支以限制提交列表。
  • --not --remotes包含魔法——确保没有列出的提交在refs/remotes.

编辑 > 看起来git rev-list ...管道命令具有相似的参数,但我还没有测试过它是否工作相同。建议将管道命令用于脚本,因此请查看它——手册页以供参考。

希望这可以帮助。

于 2013-03-22T05:18:22.853 回答
1

如果情况是这样的:

      /--a--b--c  myBranch [local branch]
     /
----x <- [closest common ancestor]
     \
      \--e--f  origin/myBranch [tracked remote]
  • git status将显示一条消息myBranch..origin/myBranch [ahead 3, behind 2]-ahead 3表示您的本地分支比最近的共同祖先提前 3 次提交,behind 2表示远程分支比最近的共同祖先提前 2 次提交
  • git log origin/myBranch..myBranch将显示有关提交的日志a-b-c- 它将显示提交的日志,范围从两个分支的共同祖先到myBranch
  • git log myBranch..origin/myBranch将显示有关提交的日志e-f- 它将显示提交的日志,范围从两个分支的共同祖先到origin/myBranch

您可以在这些命令中添加您喜欢的任何选项,例如:git log --oneline --decorate origin/myBranch..myBranch

于 2013-03-22T10:13:38.230 回答
0

您可以使用“git fetch”命令获取最新的更改信息,然后如果您在跟踪的分支上执行“ git status”,它应该会显示未推送到服务器的提交数量或当前分支的距离在后面。

使用fetch命令不会在您的本地分支中应用更改,为此,您必须使用'git merge origin/branch_name'合并它。

于 2013-03-22T02:09:02.810 回答
0

git status指示当前分支在跟踪分支之后的距离。您可以在脚本中运行它并解析输出。可能还有一个管道命令可以更直接地为您提供信息。

于 2013-03-22T01:56:41.093 回答