这可能吗?

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

git pull

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


当前回答

我使用这两个命令,就可以看到要更改的文件。

首先执行git获取,它给出如下输出(输出的一部分): ... 72年f8433 . .C8af041 develop -> origin/develop ...

这个操作给了我们两个提交id,第一个是旧的,第二个是新的。

然后使用git diff比较这两个提交 Git差异72f8433..C8af041 | grep“diff—git”

这个命令将列出要更新的文件:

diff --git a/app/controller/xxxx.php b/app/controller/xxxx.php
diff --git a/app/view/yyyy.php b/app/view/yyyy.php

例如app/controller/xxxx.php和app/view/yyyy.php将被更新。

使用git diff比较两次提交会打印所有更新过的文件 更改了行,但是使用grep,它只搜索并获得行 从输出中包含diff——git。

其他回答

下面这个有用的命令我从这个链接https://gist.github.com/jtdp/5443297。感谢https://gist.github.com/jtdp

git fetch origin

# show commit logs of changes
git log master..origin/master

# show diffs of changes
git diff master..origin/master

# apply the changes by merge..
git merge origin/master

# .. or just pull the changes
git pull

在做一个git取回之后,做一个git log HEAD..Origin /master显示您的最后一次公共提交和原点的主分支之间的日志条目。要显示差异,使用git log -p HEAD..origin/master显示每个补丁,或者git diff HEAD…原点/母点(三个点而不是两个点)显示单个差异。

通常不需要撤销获取,因为执行获取只更新远程分支,而不更新您的任何分支。如果您不准备在所有远程提交中执行拉取和合并操作,您可以使用git选择性地只接受您想要的特定远程提交。稍后,当您准备好获取所有内容时,git拉取将在其余提交中合并。

更新:我不完全确定为什么你要避免使用git获取。所有git获取所做的是更新远程分支的本地副本。这个本地副本与您的任何分支都没有任何关系,也与未提交的本地更改没有任何关系。我听说有人在cron作业中运行git fetch,因为它非常安全。(不过,我通常不建议这样做。)

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

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

你可以这样做:

$git fetch
$git changes origin

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

我使用这两个命令,就可以看到要更改的文件。

首先执行git获取,它给出如下输出(输出的一部分): ... 72年f8433 . .C8af041 develop -> origin/develop ...

这个操作给了我们两个提交id,第一个是旧的,第二个是新的。

然后使用git diff比较这两个提交 Git差异72f8433..C8af041 | grep“diff—git”

这个命令将列出要更新的文件:

diff --git a/app/controller/xxxx.php b/app/controller/xxxx.php
diff --git a/app/view/yyyy.php b/app/view/yyyy.php

例如app/controller/xxxx.php和app/view/yyyy.php将被更新。

使用git diff比较两次提交会打印所有更新过的文件 更改了行,但是使用grep,它只搜索并获得行 从输出中包含diff——git。

如果你不想让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)