Git:开始一个新的本地分支

时间:2014-01-16 06:32:20

标签: git branching-and-merging

我是git的新手。

在工作中我们有一个远程存储库,我可以在推送之前在本地进行更改。

只想确认我的工作流程是否正确。

  1. git fetch以获取对origin / master的所有更改
  2. git checkout -b newbranch origin / master
  3. git merge origin / master(当我在我正在处理的当前分支上时)
  4. 这是我一直在做的工作,但我一直都会遇到这个令人讨厌的错误:

    error: failed to push some refs to 'ssh://xxxxx'
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
    hint: before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    

    我认为这必须归功于我的工作方式。

    请帮忙!

3 个答案:

答案 0 :(得分:1)

git fetch命令将来自远程存储库的提交导入到本地存储库中。

生成的提交存储为远程分支,而不是您正在使用的常规本地分支。

这使您有机会在将更改集成到项目副本之前查看更改。

$ git pull <remote>

获取当前分支的指定远程副本,并立即将其合并到本地副本中。这与git fetch <remote>后跟git merge origin/<current-branch>相同。

$ git pull --rebase <remote>

与上述命令相同,但不使用git merge将远程分支与本地分支集成,而是使用git rebase

答案 1 :(得分:0)

您应该检查远程和本地分支的状态。为此

  1. git fetch origin
  2. git log newbranch - not origin / master。 此命令应显示尚未推送到中央存储库的本地提交。
  3. git log origin / master - not newbranch。这将显示在origin / master中但尚未合并到newbranch
  4. 的提交
  5. 如果步骤3显示smth
  6. ,则将origin / master合并到newbranch中
  7. 重复步骤1-4,直到步骤3为您提供空输出(没有合并到newbranch的origin / master中的提交)
  8. 再次推送:git push origin newbranch:master

答案 2 :(得分:0)

git pull首先从远程仓库获取代码,并通过合并来更新本地仓库。

git pull origin master

提交更改后,您必须拉一下,然后推送您的更改。应手动解决任何冲突。 在新分支上工作时,首先将其与主人合并,同时留在该分支上。

$git branch 
newbranch
$git pull origin master 
This will update your new branch with master changes and both the branches are at same state

现在,$git checkout master 然后git merge newbranch 这会将newbranch与master合并。

我建议你推荐Git-Branching-Basic-Branching-and-Merging以便对git有一个很好的理解。