2015-11-16 58 views
0

如何从远程分支中将特定的提交(例如:ID为'xyz')从本地计算机上提取?请注意,自从'xyz'提交之后,还有几个提交被推送到这个分支。如何从远程分支提取特定的提交?

此外,我已经在这个远程分支,而不是主人。

回购,我只包括主人和我想从拉的分支。

我知道有很多关于这个问题的帖子,但是他们都没有专门针对我的问题。

+0

您确定要*拉*提交吗?不检查吗? – Biffen

+0

您在本地分支机构有任何未经改动的更改和/或您是否向本地分支机构提交任何尚未推送至远程机构的提交? –

+0

@ chamila-c是的,但我意识到我需要恢复到'xyz'提交并从那里开始。 – ZeroDarkThirty

回答

1

假设你的支行名称是<branchname>,你可以这样做:

# (Optionally) Save your work to a 'temp' branch, in case you want to come back to it: 
git checkout -b temp 
git add -A . 
git commit -m "WIP" 

# Get back to your branch, and reset it to 'xyz': 
git checkout <branchname> 
git fetch origin 
git reset --hard xyz 

在这一点上,现在你的分支是“XYZ”按遥控器,你可以从那里重新开始。

+0

太棒了!有效。我的本地目录已恢复到'xyz'提交期间的状态。还有一个疑问......这对我未来对这个分支的提交没有任何影响,对吗?我仍然可以按照之前的方式提交并推送到远程分支吗?谢谢。 – ZeroDarkThirty

+0

你提到远程服务器在'xyz'之后有进一步的提交,所以如果你现在在'xyz'之后添加你自己的提交(本地),那么你的本地分支将与它的远程设备分离。一旦本地分支与远程分支分离,您需要合并(或重新分配)才能推送。或者你需要强制推动,但这只是最后的手段,而且只有在你理解了所有的影响之后才能做到。 –

+0

你可以给我步骤来使用'merge'和/或'rebase'来做到这一点吗?只是在一个假设的情况。谢谢。 – ZeroDarkThirty

相关问题