在分支dev
下,当我运行
git status
我得到了
On branch dev
Your branch is up-to-date with 'hub/dev'.
nothing to commit, working directory clean
当我跑步时
git remote show hub
我得到了
* remote hub
Fetch URL: ssh://user@user.com/home/user/private/repos/user_hub.git
Push URL: ssh://user@user.com/home/user/private/repos/user_hub.git
HEAD branch: master
Remote branches:
dev tracked
master tracked
userModule tracked
Local branches configured for 'git pull':
dev merges with remote dev
master merges with remote master
Local refs configured for 'git push':
dev pushes to dev (up to date)
master pushes to master (up to date)
userModule pushes to userModule (up to date)
我没想到得到HEAD branch: master
。怎么了?
在dev
下,当我运行git push
时,它会推送到hub/master
,而应该推送到hub/dev
。我该如何解决这个问题,以便当我们在分支dev
时,它会推送到hub/dev
?
根据一些评论,上面的配置似乎是正确的。
请参阅下面的post-update
挂钩;问题可能是由它造成的吗?
#!/bin/sh
echo
echo "**** Pulling changes... [Hub's post-update hook]"
echo
case " $1 " in
*'refs/heads/dev'*)
cd /home/user/www/dev/ || exit
unset GIT_DIR
git pull hub dev
echo
echo "Dev was pulled"
echo
;;
esac
case " $1 " in
*'refs/heads/master'*)
cd /home/user/www/www/ || exit
unset GIT_DIR
git fetch hub && git reset --hard hub/master
echo
echo "Master was reset to reflect bare changes. PRAY THE LORD!"
echo
;;
esac
exec git-update-server-info
这是 git config :
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "hub"]
url = ssh://user@user.com/home/user/private/repos/user_hub.git
fetch = +refs/heads/*:refs/remotes/hub/*
[branch "master"]
remote = hub
merge = refs/heads/master
[branch "dev"]
remote = hub
merge = refs/heads/dev
[merge]
renameLimit = 999999
更新2: 这个问题似乎已经解决了,但就我所知,我没有采取任何措施来“修复”它。 :s尽管如此,如果有人想澄清是否有问题,或者为什么这可能是个问题,请告诉我。非常感谢你。
答案 0 :(得分:2)
你使用的是什么版本的git?
在git v2.0之前git push
将推送所有您的分支机构,而不提供源/分支名称!!!
阅读发行说明的第一段: https://git.kernel.org/cgit/git/git.git/tree/Documentation/RelNotes/2.0.0.txt
当" git push [$ there]"不说什么推,我们用过了 传统"匹配"到目前为止的语义(你的所有分支都被发送了 只要已经存在同名分支,就可以到远程控制台 在那边)。在Git 2.0中,默认值是" simple"语义, 推动:
只有当前分支到同名的分支,并且只有 当前分支设置为与该远程集成时 分支,如果你正在推送到同一个遥控器;或
只有当前分支到具有相同名称的分支,如果您 正在推送到一个不是你常去的地方的遥控器。
您可以使用配置变量" push.default"改变 这个。如果你是一个想要继续使用的老人 "匹配"语义,您可以将变量设置为"匹配",for 例。阅读文档以了解其他可能性。
正如您在问题中所描述的那样 - 您的开发状态是干净的但是当您按下它时会推动掌握。听起来你在master中有一些未推送的提交,所以git push
也只是推送了master。