【问题标题】:git push to remote branchgit推送到远程分支
【发布时间】:2011-09-10 20:48:46
【问题描述】:

伙计们,

我已经克隆了一个 repo。我通过发出以下命令创建了一个分支来处理某个功能:

git branch fix78

然后我在那个分支上工作了

git checkout fix78

我继续向这个本地分支提交。现在我想将它推送到 repo,因此我发出了以下命令:

git push origin master:fix78

我从网络浏览器查看了 repo,发现在 repo 上创建了一个名为 fix78 的新分支。但它没有我所做的任何提交。

我在这里做错了什么?这就是我想要实现的目标:

有一个 repo(master(SVN 术语中的树干)),现在当我在开发一个功能时,我想创建它的本地分支,然后我还想将此分支签入到 repo(所以其他团队成员可以看到我在做什么),然后我希望我的本地分支与我创建的这个远程分支同步。

任何帮助/反馈都会非常棒。

谢谢。

【问题讨论】:

    标签: git version-control git-branch git-push git-remote


    【解决方案1】:

    git push origin master:fix78 将本地 master 推送到名为 fix78 的远程分支。您想推送本地分支 fix78,它具有相同的语法但没有 master:

    您可以通过git push origin :fix78 删除远程分支然后git push origin fix78 将本地分支推送到远程仓库来修复它。

    【讨论】:

    • 太棒了,非常感谢,我完全理解 git push origin master:fix78 和 git push origin :fix78 之间的区别
    【解决方案2】:

    推送命令的形式为

    git push remote_name source_ref:destination_ref
    

    你需要做的就是纠正你的错误

    git push origin +fix78:fix78
    

    加号表示您不关心该分支可能会丢失历史记录,因为之前的推送是错误的。

    替代语法是

    git push -f origin fix78
    

    如果您省略了目的地,则暗示它是同一个名称。如果跟踪设置到远程上的特定分支,它将转到该分支。删除分支有两种语法,旧的:

    git push -f origin :fix78
    

    git push --delete origin fix78
    

    第一个被读作“push nothing into fix78”,将其删除。

    一个技巧是,如果您将. 指定为远程名称,则意味着当前存储库为远程。这对于无需检查即可更新本地分支很有用:

    git push . origin/master:master
    

    将更新 master 而无需 checkout master。

    希望对你有帮助

    【讨论】:

    • 确实,这有帮助。感谢您发布!
    猜你喜欢
    • 2016-07-08
    • 2012-07-25
    • 1970-01-01
    • 2015-08-14
    • 2014-02-04
    • 2016-10-25
    • 2018-12-22
    • 2017-07-22
    • 2020-12-31
    相关资源
    最近更新 更多