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

时间:2010-09-03 14:51:54

标签: git

如果我执行了git push命令,有没有办法看看会推送什么?

我想象的是像Github的“拉取请求”功能的“文件已更改”选项卡。当我发出拉取请求时,我可以查看如果他们接受我的拉取请求将会被拉入的内容:github example of aggregate changes

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

14 个答案:

答案 0 :(得分:579)

有关要推送的文件列表,请运行:

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。请参阅How do I view 'git diff' output with a visual diff program?

答案 1 :(得分:173)

总是干涸:

git push --dry-run

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

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

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

alt text

因此,您在原点之后所做的任何提交都是将被推送的提交。

通过键入gitk&,在要推送的分支中打开shell中的gitk,然后查看远程控制器上的内容与要推送到远程控制器的内容之间的区别,选择本地未压缩的提交然后右键单击遥控器并选择“Diff this - > selected”: alt text

答案 2 :(得分:149)

只需列出等待推送的提交:这是你要记住的那个

git cherry -v
  

显示SHA1旁边的提交主题。

答案 3 :(得分:19)

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

答案 4 :(得分:8)

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

使用TortoiseGit:
右键单击根文件夹项目> TortoiseGit>与先前版本的差异>
对于版本2,请选择refs/remotes/origin/master

答案 5 :(得分:7)

尝试git diff origin/master..master(假设origin/master是您的上游)。与git push --dry-run不同,即使您没有对上游的书面许可,这仍然有效。

答案 6 :(得分:5)

使用git gui,您可以在其中看到实际提交中更改内容的列表。您还可以使用gitk为reflog提供简单的界面。只需在remotes/...master之间进行比较即可看出,将推送什么。它提供了类似于屏幕截图的界面。

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

答案 7 :(得分:4)

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

git diff --stat --patch origin master

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

答案 8 :(得分:2)

如果您使用的是Mac OS X,我会建议您使用Tower,这是一个非常棒的程序,让我很高兴与Git打交道。我现在更需要记住终端命令,它提供了一个很棒的GUI来查看,跟踪和解决文件中的差异。

不,我不隶属于他们,我只是使用他们的软件并且非常喜欢它。

http://www.git-tower.com/

答案 9 :(得分:1)

您可以按以下方式列出提交:

git cherry -v

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

git diff HEAD^^

答案 10 :(得分:1)

  1. 如果您具有远程写权限
  

git push --dry-run

  1. 如果您没有远程写权限
  

git diff --stat HEAD远程/分支

答案 11 :(得分:0)

只需加上我的两分钱... 我想在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'

之后,您可以例如将此列表转发到其他地方,也许是短绒毛;)

希望这会对某人有所帮助。

答案 12 :(得分:0)

git commit -m "{your commit message}"之后,您将在推送之前获得提交哈希。 因此,您可以通过运行以下命令来查看要使用git进行推送的内容:

git diff origin/{your_branch_name} commit hash

例如: git diff origin/master c0e06d2

答案 13 :(得分:0)

只想为PyCharm用户添加: 您可以右键单击文件-> Git->与分支比较

然后您可以选择主(或任何其他)