如何预览git-pull而不做提取?

这甚至有可能吗?

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

git pull 

现在,我想预览一下这种拉动会改变(差异),而不会碰到我身边的任何东西。 原因是,我拉的东西可能不是“好”,我希望别人修复它之前让我的存储库“脏”。

做一个git fetch ,做一个git log HEAD..origin显示最后一个常见的提交和原始分支之间的日志条目。 要显示差异,请使用git log -p HEAD..origin来显示每个补丁,或者使用git diff HEAD...origin (三个点不是两个)来显示一个差异。

通常不需要取消提取,因为执行提取只会更新远程分支,而不会更新分支。 如果您不准备在所有远程提交中执行pull和merge操作,则可以使用git cherry-pick来仅接受所需的特定远程提交。 后来,当你准备好了所有的东西时,一个git pull会合并到其余的提交中。

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

我认为git fetch是你想要的。

它将把这些变化和对象放在当地的回购指数中。

以后可以用git merge来合并它们。

手册页

编辑:进一步的分析

直接从Git-SVN Crash Course 链接

现在,您如何从远程存储库获得任何新的更改? 你拿他们:

 git fetch http://host.xz/path/to/repo.git/ 

在这一点上,他们在你的仓库,你可以检查他们使用:

 git log origin 

您也可以区分这些更改。 您也可以使用git log HEAD..origin来查看您的分支中没有的更改。 那么如果想合并它们 – 只需要:

 git merge origin 

请注意,如果您不指定分支进行抓取,它将方便地默认为跟踪远程。

阅读手册页是诚实地给你最好的select和如何使用它的理解。

我只是想通过例子和记忆来做到这一点,我现在没有一个盒子可以testing。 你应该看看:

 git log -p //log with diff 

取回可以通过git reset –hard ( link )来解除,但是树中的所有未提交的更改将会丢失以及您所取得的更改。

你可以从一个远程仓库获取,查看差异,然后拉或合并。

这是远程回购被称为origin一个例子,一个名为master的分支跟踪远程分支origin/master

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

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

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

你可以这样做:

 $git fetch $git changes origin 

这将帮助您在merge之前预览更改。

关于在其他地方克隆回购,以及在真正的结帐和新鲜克隆上做gitlogin,看看你是否得到同样的东西。