防止git pull合并

时间:2013-04-03 09:31:13

标签: git merge pull

有时我输入错误的分支名称,当我做“git pull origin BRANCH”时。
当XXX不是我当前在本地存储库中检查的分支时,有没有办法禁止“git pull origin XXX”?即,如果本地检查的分支是XXX而不是YYY,则允许“git pull”。

也就是说,我确实希望“合并”成为hapen,但只有当我拉出我当前在本地存储库中检查的相同分支时。有没有办法我可以配置本地存储库,只允许来自同一分支名称的“git pull”?

例如: 案例1:
本地存储库上当前已检查的分支是“test”

[* test ] /code$ git pull origin master

这会将“test”-branch中的代码合并到我的本地“master”分支。 ==>我想禁止这个。

案例2:

本地存储库上当前已检查的分支是“master”

[* master ] /code$ git pull origin master

这会将远程“master”分支的更改合并到我的本地“master”分支。 ==>这个 没关系。

我希望我能很好地解释我的问题。

提前致谢。

4 个答案:

答案 0 :(得分:3)

您应该使用git fetch

执行following

  

从远程存储库中获取所有未包含的对象   出现在当地的。

修改

What is the difference between 'git pull' and 'git fetch'?"git pull does a git fetch followed by a git merge"

编辑2:

AFAIK你不能禁止进入分支,因为它可以是本地名称,无论何时何地。

但是你可以通过使用将项目更改为最后一次提交 git pull --abort没有检查它应该是这样的。

在你成为git checkout之前,你可以做的另一件事是git pull到分支的SHA1。

请记住,您可以随时撤消所有(不可逆转):

git clean -fd
git reset HEAD --hard

答案 1 :(得分:1)

使用不合并代码的git fetchgit pull实际上是两个命令git fetch后跟git merge

的组合

答案 2 :(得分:1)

不要太担心,你可以通过明智地使用git reset来解决这个问题。只需确保每次拉出存储库都在shiphape中。

答案 3 :(得分:0)

来自'man git-pull':

    git pull runs git fetch with the given parameters and calls git merge to
    merge the retrieved branch heads into the current branch.

因此,

    git fetch origin master

不会自动合并。

你也可以这样做:

    git fetch origin master:tmp 

从获取的主分支创建新分支'tmp' 然后git merge FETCH_HEAD会向您显示任何冲突。

这是你的意思吗?