Git从远程强制拉分支

时间:2012-02-10 21:57:13

标签: git merge github fetch pull

所以我在GitHub上有2个分支:master和branchA。说我一直在做硕士和硕士提前3次提交或其他什么。因此,master上的提交d,e和f不在branchA中。接下来说我的同事用commit g将branchA上传到GitHub。所以我们有:

master: a, b, c, d, e, f
branchA: a, b, c, g

现在说我想切换到branchA并准确拉出GitHub上的内容。我遇到的问题是,当我使用git branch branchA时,它会自动使用master作为我的起始位置,从而添加d,e,f,当我拉动branchA时,我会发生冲突,如g和d,e, f尚不兼容。

有没有办法从GitHub中提取我的本地提交日志与GitHub上的匹配?我试过了git pull -f,但这显然也没有用。

2 个答案:

答案 0 :(得分:0)

git fetch origin
git checkout origin/branchA -b <local branch name>

这将使用您指定的名称创建一个本地分支,该分支是branchAorigin的完全复制。如果您的GitHub遥控器的名称不是origin,请相应调整。

您也可以使用git branch指定起点:

git fetch origin
git branch <local branch name> origin/branchA
git checkout <local branch name>

-b git checkout的{​​{1}}标记如果您计划检查您正在创建的分支,只会缩短一步。

此外,如果您希望本地分支名称与远程分支相同,则可以采用更短的方式:

git fetch origin
git checkout -t origin/branchA

将创建与branchA的{​​{1}}匹配的本地origin

答案 1 :(得分:0)

你应该

git fetch

然后用

之类的东西检查发生了什么
git log --all --oneline --graph --decorate

现在您可以合并或修改同时完成的工作。任何以“origin”为前缀的分支都将是github上的内容(假设你是克隆的地方)。本地分支也会有不同的颜色。

如果你想工作一个尚未工作的分支,请检查并在本地分支中跟踪

git checkout -t origin/someBranch

我只会在特殊情况下使用pull,我正在合并或重新安排自己的工作。根据其他人的所作所为,我可能会选择重新合并而不是合并。