我无法理解 git 本地和远程版本控制的概念。例如,我在本地 git 代表中有一个 iPhone 应用程序。最初这是我的主分支。然后我检查了一个新分支 git checkout -b "update-2.0.1"
.
然后我设置git push origin update-2.0.1
确保我有一个单独的分支来开发此应用程序更新,并在完成后将其 merge 回我的主分支。很好!
现在我在更新分支上,我想为每个问题 ID 创建分支。所以我说git checkout -b "#3178"
- 当我现在尝试将这个新问题分支推送到我的远程存储库时,git 说 "Everything-up-to-date"
.
我不明白为什么无法将此问题分支推送到远程存储库?
git remote -b
返回
origin/master
origin/update-2.0.1
我很想看到第三个分支
origin/update-2.0.1/#3178
最佳答案
您需要重复第一个命令:
git push origin <name-of-branch>
为您在本地创建的每个新分支创建相应的远程分支。除非有可以推送到的地方,否则 Git 不会推送。如果您需要的话,这可以是一个空分支。
你最终会得到
origin/<name-of-branch>
而不是
origin/<name-of-branch>/<name-of-other-branch>
虽然它们的列出没有层次结构,但实际上它们确实是相互分支的。使用gitk或者其他东西直观地查看历史日志来确认这一点。
如果您想完成该问题的处理并将其 merge 到它开始的分支中,请执行以下操作:
git checkout <name-of-original-branch> // update-2.0.1
git merge --no-ff <name-of-finished-branch> // #3178
git push origin // Will write local update-2.0.1 to origin
查看git flow如果您想要一个很好的直观解释,说明为什么使用 --no-ff 选项是一个非常强大的模型,用于跟踪发布周期中从其他分支脱离的分支。
关于ios - git push 说一切都是最新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295509/