我怎么能看到我要用git推送什么?

cmc*_*loh 553 git

有没有办法看看如果我做了git push命令会被推动什么?

我想象的是像Github的"拉取请求"功能的"文件已更改"选项卡.当我发出拉取请求时,我可以查看如果他们接受我的拉取请求将会被拉入的内容:github聚合更改的示例

命令行没问题,但我更喜欢某种GUI(如上面的截图).

Ion*_*tan 627

要获取要推送的文件列表,请运行:

git diff --stat --cached [remote/branch]
Run Code Online (Sandbox Code Playgroud)

例:

git diff --stat --cached origin/master
Run Code Online (Sandbox Code Playgroud)

对于要推送的文件的代码差异,运行:

git diff [remote repo/branch]
Run Code Online (Sandbox Code Playgroud)

要查看将更改的文件的完整文件路径,请运行:

git diff --numstat [remote repo/branch]
Run Code Online (Sandbox Code Playgroud)

如果你想在GUI中看到这些差异,你需要为它配置git.请参阅如何使用可视差异程序查看'git diff'输出?.

  • 这不完全是你想要的.你应该对着原点(`git diff origin/master HEAD`)区分`HEAD`而不是索引.当且仅当您没有为提交暂存更改时,区分索引将给出相同的结果.如果您进行了更改,它们将被包含在差异中,但显然不会被推送,因为它们尚未提交. (50认同)
  • git diff的两种变体 - 没有给出提交的缓存只会显示与HEAD相关的差异.我认为你的意思是git diff [--stat] - 缓存的origin/master,假设origin的主分支是master (8认同)
  • 这个答案需要编辑,以包含来自@Jefromi的注释中的信息.git diff --stat origin/master HEAD`是正确的答案. (5认同)
  • @mfontani对我有正确的答案.我想检查从我已经提交的内容中推送出什么内容,而不是如果我承诺我已经改变的内容将会得到什么.`git diff --cached [remote/branch]`诀窍:) (2认同)
  • 而不是输入origin/master,你可以使用@ {u}例如git diff @ {u}或git diff HEAD @ {u}注意,这只有在你已经创建并链接了上游跟踪分支时才有效.当我有很多分支和大量的遥控器时,我觉得它很有用,所以我不必考虑在哪里链接. (2认同)

Bri*_*aro 186

总是干涸的:

git push --dry-run
Run Code Online (Sandbox Code Playgroud)

除了实际发送数据外,它将执行所有操作.

如果你想要一个更加图形化的视图,你有很多选择.

Tig和git附带的gitk脚本都显示本地副本的当前分支以及远程或原点的分支.

替代文字

因此,您在原点之后进行的任何提交都是将被推送的提交.

在shell中打开gitk gitk&,然后在你想要通过键入的分支中进行推送,然后查看远程控制器上的内容与要推送到远程控制器的内容之间的区别,选择本地未按下的提交并右键单击遥控器和选择"Diff this - > selected": 替代文字

  • git push --dry-run并没有向我展示我希望看到的东西.gitk更接近,但它没有向我显示将推送的所有更改的总计.因此,如果我将6个提交推送到远程,我想看到将被推送的总和.我不关心每个提交单独的内容,因为下一个提交可以被完全否定. (16认同)

Ale*_*sco 158

如果只列出等待推提交: (这是你会记得一个)

git cherry -v
Run Code Online (Sandbox Code Playgroud)

显示SHA1旁边的提交主题.

  • 一个有趣的事情是你可以指定一个遥控器进行比较,如:`git cherry -v heroku/remote`,以防你将代码保存在多个遥控器中. (5认同)

小智 20

你可能想跑git difftool origin/master....这应该显示当前分支上尚未在原始/主分支上的统一差异,并将其显示在您选择的图形差异工具中.要获得最新信息,git fetch请先运行.

  • `git difftool -d origin / master`,我把我的difftool设置为融合,所以很好用,谢谢! (2认同)

vkg*_*vkg 11

  1. 如果您有远程写入权限
git push --dry-run
Run Code Online (Sandbox Code Playgroud)
  1. 如果您没有远程写入权限
git diff --stat HEAD remote/branch
Run Code Online (Sandbox Code Playgroud)


小智 8

在推送远程仓库之前比较本地版本的一种方法(在干运行中推送):

使用TortoiseGit:
右键单击根文件夹项目> TortoiseGit> Diff with previous version>
for Version 2 chooserefs/remotes/origin/master


Ed *_*vis 7

试试git diff origin/master..master(假设那origin/master是你的上游).与git push --dry-run此不同,即使您没有对上游的写入权限,这仍然有效.


ccp*_*zza 6

要查看哪些文件已更改查看与分支相比的实际代码更改,master您可以使用:

git diff --stat --patch origin master
Run Code Online (Sandbox Code Playgroud)

注意:如果您碰巧使用任何 Intellij IDE,那么您可以右键单击您的顶级项目,选择Git >与分支比较> 并选择您想要的源,例如origin/master。在出现的文件树中,您可以双击文件以查看视觉差异。与上面的命令行选项不同,您可以从差异窗口编辑本地版本。


fuz*_*fuz 5

使用git gui,您可以在其中查看实际提交中更改的列表。您还可以使用gitkwich为reflog提供简单的界面。只是比较之间remotes/...,并master看到了,什么都会推动。它提供了类似于您的屏幕截图的界面。

这两个程序都包含在git中。


Dav*_*idS 5

您可以通过以下方式列出提交:

git cherry -v
Run Code Online (Sandbox Code Playgroud)

然后与以下命令进行比较,其中 ^ 的数量等于提交的数量(在示例中为 2 次提交):

git diff HEAD^^
Run Code Online (Sandbox Code Playgroud)