这可能吗?

基本上,有一个远程存储库,我只需要使用:

git pull

现在,我想在不接触任何东西的情况下预览一下这个拉力会改变什么(一个差异)。原因是我正在拉取的东西可能不是“好的”,我希望其他人在使我的存储库“脏”之前修复它。


当前回答

您可以从远程回购中获取,查看差异,然后拉取或合并。

这是一个名为origin的远程回购和一个名为master的分支跟踪远程分支origin/master的示例:

git checkout master                                                  
git fetch                                        
git diff origin/master
git pull --rebase origin master

其他回答

我创建了一个自定义的git别名来为我做这件事:

alias.changes=!git log --name-status HEAD..

你可以这样做:

$git fetch
$git changes origin

这将为您提供一个在进行合并之前预览更改的好方法。

我可能迟到了,但这件事已经困扰我太久了。 根据我的经验,我更希望看到哪些更改正在等待,而不是更新我的工作副本并处理这些更改。

这是~/。gitconfig文件:

[alias]
    diffpull = !git fetch && git diff HEAD..@{u}

它获取当前分支,然后在工作副本和这个获取的分支之间做一个差异。因此,您应该只看到git pull带来的更改。

如果你不想让git-fetch更新你的本地。git,只要复制你的本地repo到一个临时目录,并在那里做一个pull。这里有一个简写:

$ alias gtp="tar -c . | (cd /tmp && mkdir tp && cd tp && tar -x && git pull; rm -rf /tmp/tp)"

Ex.:

$ git status
# On branch master
nothing to commit (working directory clean)

$ gtp
remote: Finding sources: 100% (25/25)
remote: Total 25 (delta 10), reused 25 (delta 10)
Unpacking objects: 100% (25/25), done.
From ssh://my.git.domain/reapO
   32d61dc..05287d6  master     -> origin/master
Updating 32d61dc..05287d6
Fast-forward
 subdir/some.file       |    2 +-
 .../somepath/by.tes    |    3 ++-
 .../somepath/data      |   11 +++++++++++
 3 files changed, 14 insertions(+), 2 deletions(-)

$ git status
# On branch master
nothing to commit (working directory clean)

$ git fetch
remote: Finding sources: 100% (25/25)
remote: Total 25 (delta 10), reused 25 (delta 10)
Unpacking objects: 100% (25/25), done.
From ssh://my.git.domain/reapO
   32d61dc..05287d6  master     -> origin/master

$ git status
# On branch master
# Your branch is behind 'origin/master' by 3 commits, and can be fast-forwarded.
#
nothing to commit (working directory clean)

您可以从远程回购中获取,查看差异,然后拉取或合并。

这是一个名为origin的远程回购和一个名为master的分支跟踪远程分支origin/master的示例:

git checkout master                                                  
git fetch                                        
git diff origin/master
git pull --rebase origin master

在其他地方克隆repo,并在真正的checkout和新的克隆上执行git log,看看是否得到了相同的东西。