# Developer 1 & developer 2 add staging as follows
$ git clone myForkOfProject.git
$ git remote add live project.git
[master] $ git branch docs
[master] $ git checkout docs
[docs] $ git add README
[docs] $ git commit -m "pushing to live's staging from local's docs works" README
[docs] $ git push live docs:staging
开发人员1希望看到有选择地将文档中的文件合并到他的本地mybranch
[master] git branch mybranch
[master] git checkout mybranch
[mybranch] $ git fetch live staging
# Checks to see if anything changed
[mybranch] $ git status -s ./
[mybranch] $
# Doesn't know what to merge since diff, status shows no change
# Where as if developer1 did
[mybranch] $ git pull live staging
[mybranch] $ git status -s ./
A README
developer1想要做的只是将登台中的最后一次更改提取到工作目录而不自动添加README。
如何提取/获取以便git status -s ./
只下载更改
[mybranch] git *fetch changes from staging into mybranch 's working directory*
[mybranch] git status -s ./
[?] README
# This is what developer1 wants to see
# so that he can decide to 'git add README' manually
# here are the unsuccessful attempts to do the same
# Developer2 makes a commit, and does git push live docs:staging
[mybranch] $ git fetch live staging
[mybranch] $ git pull live staging --no-commit --no-log --no-ff
我的最后一个选项是有选择地拨打git rm --cached README
,但我想知道我是否遗漏了git fetch
,git merge
流程中的内容。
答案 0 :(得分:3)
git status
用于显示工作目录中的内容。因此,在git fetch
之后,如果没有更改工作副本,那么您当然不会看到任何内容。
git show
用于显示更改集。因此,如果您想在应用更改之前查看更改,请执行git show
(查找要使用git log live..mybranch
检查的更改等;您甚至可以使用git log --patch
来查看与内联的差异提交说明)。
但是,在此工作流程中,您说您特别希望将更改合并到工作副本中 - 但不来提交它们。
您可以分两步完成此操作:首先,git merge
您的更改。然后,您git reset [revision]
,给出您在合并之前所处的修订。
这将使您不进行任何分阶段的更改,一个无动于衷的HEAD
(您重置回合并之前的状态,因此它已被有效地逆转),以及包含所有修改之前的工作副本你做了git merge
。
git pull
只是git fetch; git merge
或git fetch; git rebase
的简写,具体取决于您的设置。