如何让git从分支而不是从标签中拉出?

时间:2019-07-23 04:22:04

标签: git git-pull

我们的仓库中正好有一个与分支名称同名的标签。因此,当我尝试从该分支中​​拉出时,git会混淆并从标记中拉出,就像这样。我必须先删除该标签才能进行git pull工作。

那我怎么告诉git pull from branch而不是tag?

cc-backend ➤ git pull origin 0.9.0-rc6-patch1                                       
From 10.0.0.28:webcc/cc-backend
 * tag                 0.9.0-rc6-patch1 -> FETCH_HEAD
Already up to date.

/* I have to delete that tag and git pull again to get the result I want */

cc-backend ➤ git pull origin 0.9.0-rc6-patch1                                       
From 10.0.0.28:webcc/cc-backend
 * branch              0.9.0-rc6-patch1 -> FETCH_HEAD
Updating 9d7e9dc3..2bf3f96a
Fast-forward
 app/Services/GroupSeat/Seat.php | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

3 个答案:

答案 0 :(得分:3)

您应使用全名,例如

git checkout refs/heads/<branchname>

或标记

git checkout refs/tags/<refname>

git pull origin refs/heads/<branchname>

要访问中的相关文档类型 git help revisions

请参阅SPECIFYING REVISIONS部分

答案 1 :(得分:1)

默认情况下,获取的refspec是fetch = +refs/heads/*:refs/remotes/origin/*

因此,您还可以git fetch(获取所有分支),然后使用origin/<remote branch>合并或重新建立分支

但更方便的解决方法是就标记的命名约定达成共识:v0.9.0-rc6-patch1而非0.9.0-rc6-patch1。这样,再也不会混淆了。

答案 2 :(得分:1)

似乎远程存储库具有标签和具有相同名称0.9.0-rc6-patch1的分支。使用全名来获取/拉取

# fetch/pull the tag
git fetch/pull origin refs/tags/0.9.0-rc6-patch1

# fetch/pull the branch
git fetch/pull origin refs/heads/0.9.0-rc6-patch1