有没有办法知道如果我执行git push命令会推送什么?

我所描绘的是类似于Github的“拉请求”功能的“文件更改”选项卡。当我发出一个拉请求时,我可以看看如果他们接受我的拉请求,会拉进什么:

命令行是可以的,但我更喜欢某种图形用户界面(比如上面的截图)。


总有演练:

git push --dry-run

它会做所有事情,除了实际发送数据。

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

Tig和git附带的gitk脚本都显示本地副本的当前分支和远程或源文件的分支。

任何在原点之后的提交都是会被推送的提交。

在你想要推送的分支中,输入gitk&从shell打开gitk,然后查看远程上的内容和你将要推送到远程的内容之间的差异,选择本地未推送提交,右键单击远程,选择“Diff this -> selected”:


使用git gui,在那里你可以看到在实际提交中所更改的列表。你也可以使用gitk,它为reflogs提供了一个简单的界面。只要比较一下遥控器/…和主人看,什么都会推。它提供了一个类似于截图的界面。

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


对于要推送的文件列表,运行:

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'输出与一个可视化的diff程序?


你可能需要运行git difftool origin/master....这将显示当前分支上还没有在原点/主分支上的内容的统一差异,并在您选择的图形差异工具中显示它。要保持最新,请先运行git fetch。


如果你使用的是Mac OS X,我会推荐你使用Tower,它是一个很棒的程序,让我很高兴处理Git。我现在不再需要记住终端命令,它提供了一个很棒的GUI来查看、跟踪和解决文件中的差异。

不,我不是他们的会员,我只是使用他们的软件,而且非常喜欢。

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


在将本地版本推送到远程回购(类似于演练中的推送)之前,比较本地版本的一种方法是:

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


尝试git diff origin/master..Master(假设原点/ Master是您的上游)。与git push -dry-run不同的是,即使你没有对上游的写权限,这仍然可以工作。


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

git diff --stat --patch origin master

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


列出等待推送的提交: (这是你会记得的)

git cherry -v

在sha1旁边显示提交主题。


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

git cherry -v

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

git diff HEAD^^

如果您有远程写权限

git push --dry-run

如果您没有远程写权限

git diff --stat HEAD remote/branch

只是补充我的意见… 我想在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'

之后,你可以把这个列表转发到其他地方,也许是一个linter;)

希望这能帮助到一些人。


在git commit -m "{your commit message}"之后,你会在推送之前得到一个提交散列。 所以你可以通过运行下面的命令看到你要用git推送什么:

git diff origin/{your_branch_name} commit hash

宇宙摧毁了一切


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

然后你可以选择master(或其他)