民间,
我克隆了一个回购。我通过发出以下命令创建了一个分支来处理某个功能:
git branch fix78
然后我通过
在那个分支上工作 git checkout fix78
我继续向这个当地分行提交。现在我想将其推送到repo,因此我发出了以下命令:
git push origin master:fix78
我从网络浏览器查看了repo,发现在repo上创建了一个名为fix78的新分支。但它没有我的任何承诺。
我在这里做错了什么?这就是我想要实现的目标:
有一个repo(master(SVN术语中的trunk)),现在当我正在处理一个功能时,我想创建一个本地分支,然后我还要检查这个分支到repo(所以其他团队成员可以看到我在做什么),然后我希望我的本地分支与我创建的这个远程分支同步。
任何帮助/反馈都会非常棒。
感谢。
答案 0 :(得分:61)
git push origin master:fix78
将本地主服务器推送到名为fix78的远程分支。您想推送本地分支fix78,它具有相同的语法但没有master:
您可以通过执行git push origin :fix78
删除远程分支然后git push origin fix78
将本地分支推送到远程仓库来修复它。
答案 1 :(得分:52)
push命令的格式为
git push remote_name source_ref:destination_ref
您需要做的就是纠正错误
git push origin +fix78:fix78
加号表示您不关心该分支可能会丢失历史记录,因为之前的推送是错误的。
备用语法
git push -f origin fix78
如果省略目的地,则暗示它的名称相同。如果跟踪设置到遥控器上的特定分支,则它将转到该分支。删除分支有2种语法,旧的:
git push -f origin :fix78
和
git push --delete origin fix78
第一个被解读为“push nothing into fix78”,删除它。
一个技巧是,如果指定.
作为远程名称,则表示当前的repo为远程名称。这对于更新本地分支非常有用,无需检查它:
git push . origin/master:master
将更新主人而无需结帐主人。
希望这有帮助