git,如何将本地分支推送到特定的远程

git, How to push local branch into the specific remote

您能解释一下如何将本地分支推送到特定的远程分支吗?

$ git branch -vv 
dev 4d46c96 [origin/dev] Merge branch '1783' into dev
dev_3_feature 226b914 second commit in dev_3_feature
dev_second_feature 6b5f10f second commit in dev_2_feature
master baf5fc0 [origin/master: ahead 1] master feature
* myFeature da5cc64 second commit in dev_1_feature
test 334cf7e commiting my super changes locally
  1. 我希望将我的 DEV 功能推入 origin/dev 并作为分支保留在那里,我该怎么做?

  2. What/where/how 我应该在本地设置默认推入 origin/dev 而不是 origin/master 吗?

更新:

所以,一般在使用 Remote 时,首先需要拉取仓库或分支。

如果它的存储库那么

git pull origin

如果它的分支那么

git pull origin <yourRemoteBranchName>

拉取之后,它就会出现在你的机器上。现在您当前的分支是 yourRemoteBranchName.

如果您是新手,想知道“起源”是什么,那么运行命令git remote -v。它在某种意义上是 github 存储库的别名,因此您可以记住它。它可以是原产地,也可以是您选择的任何东西。


现在,你有了上面的远程分支,然后你可以从那个拉取的远程分支创建你的本地分支。它将从您当前的远程分支创建一个新的本地分支。

git checkout -b your_branch

将远程分支推送到远程服务器时会自动创建远程分支。所以当你准备好时,你可以这样做:

git push <remote-name> <branch-name>

其中 <remote-name> 通常是 origin,git 为您从中克隆的遥控器提供的名称。然后,您的同事只需拉出该分支,它就会自动在本地创建。

但是请注意,正式的格式是:

git push <remote-name> <local-branch-name>:<remote-branch-name>

但是当你省略一个时,它假定两个分支名称相同。话虽如此,作为谨慎的一句话,不要犯只指定:<remote-branch-name>(带冒号)的严重错误,否则远程分支将被删除!

为了让后续的 git pull 知道该怎么做,您可能想要使用:

git push -u <remote-name> <local-branch-name>

如下所述,-u 选项设置了一个上游分支:

For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument-less git-pull(1) and other commands.

如果想直接与上游分支合并,

git merge branchName

您可以参考此文档:https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging。它有很好的例子。

本地切换到dev分支,然后推送到origin远程的dev分支:

git checkout dev
git push -u origin dev

git push 上的 -u 选项设置上游跟踪,这样当您在开发分支上时,git pushgit pull 会自动执行与 git push origin devgit pull origin dev.


如果我误解了你的问题,并且你想将所有带有 "dev..." 的分支推送到它们各自的原始分支,你可以对每个分支执行上述步骤,或者你可以执行 git push origin --all 将您的分支 所有 推送到原始远程。所以在 origin 上,你会有 origin/devorigin/dev_3_feature


如果我双重误解了你的问题,而你想将所有带有 "dev..." 的分支推送到一个远程分支中,那么我建议你不要这样做。如果您 merge/rebase 将所有开发分支合并为一个分支,然后将其推送到原点,那可能是最好的。假设您想使用一个名为 dev:

的分支
git checkout dev
git merge dev_3_feature
git merge dev_second_feature
git push -u origin dev

每次合并后,您可能必须解决合并冲突,因此请注意。

最后一点,您可能需要一些更具描述性的分支名称用于未来的功能分支,因为像 dev_second_feature 这样的名称并不能真正告诉您功能是什么。