如何预览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,看看你是否得到同样的东西。