2013-10-10 89 views
0

所以我有几个不同的分支,我在git上工作。例如,现在我在分支“test1”上,我希望能够通过分支“test1”上的特定提交ID来执行pull操作并覆盖我的本地工作。我不关心我的本地分支“test1”的本地更改覆盖使用git的特定分支

任何人都知道这个命令。

+0

当你在test1上说'本地修改'时,你的意思是你已经改变了你没有提交和/或你所做的修改是否在本地提交了吗? – MDrabic

+0

另外,你是否试图从另一个本地分支'拉'提交到本地分支test1或从远程分支test1正在跟踪提交一个提交? – MDrabic

+0

当我说本地是的时,我的意思是我承诺的变化以及我还没有承诺的变化。我不关心这两个地方。我只想使用提交ID在同一分支test1上覆盖具有特定提交的本地副本。 – Chapsterj

回答

1

我会首先推荐重置本地test1的分支通过执行以匹配其远程跟踪分行:

//from the local test1 branch 
git fetch origin 
git reset --hard origin/test1 

注:这假定远程被命名为‘原点’和远程分支被命名为‘测试1’ 。

现在您已经拥有远程test1分支的最新镜像,您可以根据您希望使用的特定提交来创建新的分支。例如:

//from the local test1 branch 
git checkout -b <new branch name> <commit id> 
//Example 
git checkout -b crazy_idea_branch 06bb7167afbb9f399ea57f1cc5d0daead0dd6703 

您可以找到有关git reset在这个堆栈溢出的答案更详细。

+0

Thanks MDrabic。我将如何获得完整的分支名称。现在我只做了git分支,它向我展示了所有分支,但不是原点。重置后,可以将特定的提交拉到我的本地,然后推回到test1分支。通过这种方式,我将在本地执行特定的提交,并将其作为最新代码推送到远程分支。 – Chapsterj

+0

使用'git branch -a'来显示本地和远程分支。如果你拥有你的远程分支,而且没有其他人从你的代码中提取代码,那么你可以使用'git push origin test1 --force'。这将用本地分支的内容覆盖远程分支。由于您拥有远程分支的本地镜像,因此您只需从本地test1分支中“签出”特定的提交,而不是从远程分支中提取特定的提交。 – MDrabic