Mil*_*kov 197 git version-control
它甚至可能吗?
基本上,我只使用一个远程存储库:
git pull
Run Code Online (Sandbox Code Playgroud)
现在,我想预测这种拉动会改变什么(差异),而不会触及我身边的任何东西.原因是我拉的东西可能不是"好",我希望其他人在使我的存储库"脏"之前修复它.
Gre*_*ill 219
执行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,因为它非常安全.(但我通常不建议这样做.)
Bri*_*aro 45
我认为git fetch是你想要的.
它会提取更改和对象,而不会将它们提交到本地repo的索引.
它们可以稍后与git merge合并.
编辑:进一步的Explination
直接从Git-SVN Crash Course 链接
现在,您如何从远程存储库获得任何新的更改?你拿到它们:
Run Code Online (Sandbox Code Playgroud)git fetch http://host.xz/path/to/repo.git/此时它们位于您的存储库中,您可以使用以下方法检查它们:
Run Code Online (Sandbox Code Playgroud)git log origin您还可以区分更改.您还可以使用git log HEAD..origin来查看分支中没有的更改.那么如果想合并它们 - 只需:
Run Code Online (Sandbox Code Playgroud)git merge origin请注意,如果您未指定要提取的分支,则它将方便地默认为跟踪远程.
阅读手册页老实说是为了让您最好地了解选项以及如何使用它.
我只是想通过例子和记忆来做到这一点,我目前没有一个盒子可以测试.你应该看看:
git log -p //log with diff
Run Code Online (Sandbox Code Playgroud)
可以使用git reset --hard(链接)撤消提取,但是树中所有未提交的更改以及您提取的更改都将丢失.
Ant*_*zzi 19
您可以从远程仓库中获取,查看差异,然后拉取或合并.
这是一个被调用的远程仓库origin和一个名为master跟踪远程分支的分支的示例origin/master:
git checkout master
git fetch
git diff origin/master
git pull --rebase origin master
Run Code Online (Sandbox Code Playgroud)
我创建了一个自定义git别名来为我做这件事:
alias.changes=!git log --name-status HEAD..
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
$git fetch
$git changes origin
Run Code Online (Sandbox Code Playgroud)
这将为您提供一种在执行之前预览更改的简便方法merge.
我可能会迟到,但这件事已经困扰我太久了。根据我的经验,我宁愿查看哪些更改正在等待,而不是更新我的工作副本并处理这些更改。
这在~/.gitconfig文件中是这样的:
[alias]
diffpull = !git fetch && git diff HEAD..@{u}
Run Code Online (Sandbox Code Playgroud)
它获取当前分支,然后在工作副本和所获取的分支之间进行比较。所以你应该只看到随之而来的变化git pull。