【发布时间】:2013-03-11 18:45:38
【问题描述】:
需要在脚本中执行此操作。谢谢。
【问题讨论】:
标签: git
需要在脚本中执行此操作。谢谢。
【问题讨论】:
标签: git
我使用以下命令(作为别名)列出所有未推送到远程存储库的本地提交。
log --oneline --decorate=short --graph --all --branches --not --remotes
这需要修改以在脚本中使用,并且可能有一些管道命令可以做同样的事情,但我觉得它很有用。
关键在于最后几个参数:
--all 包括 refs/ 中的所有引用——如果你只想要当前分支的提交,你可能不想要这个。--branches 包括 refs/heads 中的所有 refs -- 将其保留为当前或明确指定一个分支以限制提交列表。--not --remotes 具有魔力——确保列出的所有提交都不在 refs/remotes 中。编辑 > 看起来git rev-list ... 管道命令具有相似的参数,但我尚未对其进行测试以知道它是否工作相同。建议将管道命令用于脚本,因此请查看它——man-page 以供参考。
希望这会有所帮助。
【讨论】:
如果情况是这样的:
/--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
【讨论】:
git status 表示当前分支在跟踪分支之后的距离。您可以在脚本中运行它并解析输出。可能还有一个管道命令可以更直接地为您提供信息。
【讨论】:
您可以使用 'git fetch' 命令提取最新的更改信息,然后如果您在跟踪的分支上执行 'git status',它应该会显示给您未推送到服务器的提交数或当前分支落后多远。
使用 fetch 命令不会将更改应用到本地分支,为此,您必须使用 'git merge origin/branch_name' 合并它。 p>
【讨论】: