我怎么做:

从另一个分支创建一个本地分支(通过 git 分支或 git checkout -b) 将本地分支推到远程存储库(即发布),但使其可追踪,以便 git pull 和 git push 工作。


当前回答

基于这里的答案,我把这个过程作为一个简单的Bash脚本,当然也可以用作Git alias。

对于我来说,重要补充是,这促使我进行单位测试,然后默认地在当前分支名称中进行。

$ git_push_new_branch.sh

  Have you run your unit tests yet? If so, pass OK or a branch name, and try again

  usage: git_push_new_branch {OK|BRANCH_NAME}

  e.g.

  git_push_new_branch           -> Displays prompt reminding you to run unit tests
  git_push_new_branch OK        -> Pushes the current branch as a new branch to the origin
  git_push_new_branch MYBRANCH  -> Pushes branch MYBRANCH as a new branch to the origin

git_push_new_branch.sh

function show_help()
{
  IT=$(cat <<EOF

  Have you run your unit tests yet? If so, pass OK or a branch name, and try again

  usage: git_push_new_branch {OK|BRANCH_NAME}

  e.g.

  git_push_new_branch.sh           -> Displays prompt reminding you to run unit tests
  git_push_new_branch.sh OK        -> Pushes the current branch as a new branch to the origin
  git_push_new_branch.sh MYBRANCH  -> Pushes branch MYBRANCH as a new branch to the origin

  )
  echo "$IT"
  exit
}

if [ -z "$1" ]
then
  show_help
fi

CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$1" == "OK" ]
then
  BRANCH=$CURR_BRANCH
else
  BRANCH=${1:-$CURR_BRANCH}
fi

git push -u origin $BRANCH

其他回答

简单地说,要创建一个新的地方分支,做:

git branch <branch-name>

要将其推到远程存储库,请:

git push -u origin <branch-name>

如果你不分享你的repo与其他人,这是有用的推所有的分支到远程,并 -set-upstream跟踪正确为你:

git push --all -u

(不是OP想要什么,但这个单线是相当受欢迎的)

如果你正在与其他人分享你的repo,这不是一个很好的形式,因为你会用你所有的Dodgy实验分支来关闭repo。

完整的 Git 工作流,以推动本地变更到另一个功能分支类似于此

排除所有远程分支

git pull --all

列出所有分支现在

git branch -a  

查询或创建分支(用分支名替换 <函数分支>):

git checkout -b <feature branch>

顯示目前的分支. 必須顯示與 * 前面

git branch      

添加您的本地变更(. 是目的在这里)

git add .

现在做你的改变:

git commit -m "Refactored/ Added Feature XYZ"

重要:从大师更新:

git pull origin feature-branch

点击您的本地变更:

git push origin feature-branch

你可以在2个步骤中完成:

使用支票来创建本地分支:

git checkout -b yourBranchName

随心所欲地与你的分支工作。

使用推命令自我创建分支,并将代码发送到远程存储库:

git push -u origin yourBanchName

有很多方法可以做到这一点,但我认为这很简单。

这里已经提供的解决方案的轻微变化:

创建一个本地分支,基于某些其他(远程或本地)分支: git checkout -b 分支名称 将本地分支推到远程存储库(发布),但使其可追踪,所以 git pull 和 git push 将立即运行 git push -u 起源 HEAD 使用 HEAD 是一个“手动的方式,将当前分支推到相同的名称在远程”。 来源: https://git-scm.com/docs/git-push 在 Git 条款中, HEAD (in)