它甚至可能吗?
基本上,我只使用一个远程存储库:
git pull
现在,我想预测这种拉动会改变什么(差异),而不会触及我身边的任何东西.原因是我拉的东西可能不是"好",我希望其他人在使我的存储库"脏"之前修复它.
执行a之后git fetch
,执行a git log HEAD..origin/master
以显示上次常见提交与origin的主分支之间的日志条目.要显示差异,请使用git log -p HEAD..origin/master
以显示每个色块,或者git diff HEAD...origin/master
(三个点而不是两个)来显示单个差异.
通常有没有任何需要撤消取,因为做一个只获取更新远程分支,没有的你的分支机构.如果您不准备在所有远程提交中进行拉取和合并,则可以使用git cherry-pick
仅接受所需的特定远程提交.之后,当您准备好获取所有内容时,git pull
将在其余提交中合并.
更新:我不完全确定你为什么要避免使用git fetch.所有git fetch都会更新远程分支的本地副本.此本地副本与您的任何分支都没有任何关系,它与未提交的本地更改没有任何关系.我听说有人在cron工作中运行git fetch,因为它非常安全.(但我通常不建议这样做.)
我认为git fetch是你想要的.
它会提取更改和对象,而不会将它们提交到本地repo的索引.
它们可以稍后与git merge合并.
男人页
编辑:进一步的Explination
直接从Git-SVN Crash Course 链接
现在,您如何从远程存储库获得任何新的更改?你拿到它们:
git fetch http://host.xz/path/to/repo.git/此时它们位于您的存储库中,您可以使用以下方法检查它们:
git log origin您还可以区分更改.您还可以使用git log HEAD..origin来查看分支中没有的更改.那么如果想合并它们 - 只需:
git merge origin请注意,如果您未指定要提取的分支,则它将方便地默认为跟踪远程.
阅读手册页老实说是为了让您最好地了解选项以及如何使用它.
我只是想通过例子和记忆来做到这一点,我目前没有一个盒子可以测试.你应该看看:
git log -p //log with diff
可以使用git reset --hard(链接)撤消提取,但是树中所有未提交的更改以及您提取的更改都将丢失.
您可以从远程仓库中获取,查看差异,然后拉取或合并.
这是一个被调用的远程仓库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
这将为您提供一种在执行之前预览更改的简便方法merge
.