有没有办法查看我git push
执行命令后将被推送的内容?
我所描绘的是类似Github的“拉动请求”功能的“文件已更改”标签。当我发出拉取请求时,我可以查看并查看如果他们接受我的拉取请求将被拉入什么内容:
命令行是可以的,但是我更喜欢某种GUI(例如上面的屏幕截图)。
有没有办法查看我git push
执行命令后将被推送的内容?
我所描绘的是类似Github的“拉动请求”功能的“文件已更改”标签。当我发出拉取请求时,我可以查看并查看如果他们接受我的拉取请求将被拉入什么内容:
命令行是可以的,但是我更喜欢某种GUI(例如上面的屏幕截图)。
Answers:
有关要推送的文件的列表,请运行:
git diff --stat --cached [remote/branch]
例:
git diff --stat --cached origin/master
对于要推送的文件的代码差异,请运行:
git diff [remote repo/branch]
要查看将要更改的文件的完整文件路径,请运行:
git diff --numstat [remote repo/branch]
如果要在GUI中查看这些差异,则需要为此配置git。请参阅如何使用可视化差异程序查看“ git diff”输出?。
HEAD
针对原点(git diff origin/master HEAD
)而不是索引diff 。当且仅当您没有暂存要提交的更改时,对索引进行比较才会产生相同的结果。如果您上演了更改,它们将包含在差异中,但由于尚未提交,因此显然不会被推送。
git diff --stat origin/master HEAD
是正确的答案。
git diff --cached [remote/branch]
绝招:)
总是空运行:
git push --dry-run
除了实际发送数据外,它将执行所有操作。
如果您想要更多的图形化视图,则可以有很多选择。
git附带的Tig和gitk脚本都显示本地副本的当前分支以及远程或原始副本的分支。
因此,您在原点之后进行的所有提交都是将被推送的提交。
在要键入的分支中,从Shell打开gitk gitk&
,然后键入要查看的内容,然后查看远程对象和即将推送到远程对象之间的区别,选择本地未推送的提交,然后右键单击远程对象,然后选择“差异->选定”:
git diff --stat HEAD origin/master
或git diff HEAD origin/master
。重要的是HEAD,否则您的差异中应包含未提交的更改
git push --dry-run
在于它仍然需要在远程进行写许可。因此,如果您有一个未经许可就可以向上游推送的克隆,但是您想查看本地未进行的更改是什么,--dry-run
则不要这样做。
branch
和origin/branch
,我会约努茨G. Stan的回答去,因为它实际上并不需要连接到远程回购。这可能是好是坏,取决于您的需求。
尝试git diff origin/master..master
(假设这origin/master
是您的上游)。与不同git push --dry-run
,即使您没有对上游的写入权限,这仍然有效。
使用git gui
,您可以在其中查看实际提交中更改的列表。您还可以使用gitk
wich为reflog提供简单的界面。只是比较之间remotes/...
,并master
看到了,什么都会推动。它提供了类似于您的屏幕截图的界面。
这两个程序都包含在git中。
gitk --all
你得到的所有评论的完整列表,现在你可以用你的遥控器比较您的开发分支的实际状态来推。
如果您使用的是Mac OS X,我建议您使用Tower,它是一个很棒的程序,它使我很高兴与Git打交道。我现在不再需要记住终端命令,它提供了一个出色的GUI,可以查看,跟踪和解决文件中的差异。
不,我不隶属于他们,我只是使用他们的软件并且非常喜欢它。
只是加我的两分钱...我想在gitlab运行器上的gitlab管道中运行作业时实现此功能。最好的方法是使用以下脚本:
git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA
同样在我的情况下,我想按扩展名过滤文件,以实现此目的,我使用了:
git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA '*.py'
之后,您可以例如将此列表转发到其他地方,或者是短绒毛;)
希望这会帮助某人。