2017-03-11 60 views
0

我在问这个问题,因为我有点困惑(只有轻微的)。将分支推送到github后,我是否必须手动合并分支和主分支?

因为我使用Pycharm(在主分支以外的分支)它提供了我提交并推送分支到github的更改的机会。

所以我这样做。

现在...

后,我运行此:

current branch *test 

1.git pull origin master 
2.git checkout master 
3.git merge test 

1.它告诉我一切都是最新的。然后去3.它也告诉我所有最新的master

问题:

  1. 会发生什么事时,我承诺,推动一个分支github上?
  2. 在将分支推送给主设备后,我是否必须运行上面的代码块?

编辑

  1. 我在master branch
  2. 我跑git checkout test开始的。

出现消息。

switched to branch test. your branch is ahead of origin/test by 3 commits. 
(use "git push" to publish your local commits) 
  • 我运行git pull origin master
  • 一个消息显示与正被更新的多行示出了分支的命令。

  • 我从http://github.com/username/project

    • 分支主重新运行出现git pull origin master

      一个消息中的命令 - > FETCH_HEAD 已经向上最新

  • 我按下绿色按钮来提交更改并推送。弹出显示nothing to commit

  • 我运行命令git checkout master

  • 你的分支是已经是最新的与原籍/主

  • 我运行命令git merge test

    所有最新!

  • so why git merge test

    回答

    0

    on 1.它告诉我所有的都是最新的。然后继续3.它也告诉我所有与主人约会。

    $ git pull origin master 
    

    此命令不会等同于

    $ git fetch origin master 
    $ git merge master 
    

    第一步下载所有从master分支在origin远程(这是一个昵称为您的GitHub库)的变化。第二个命令合并master(现在包括来自GitHub的任何更改)到当前分支(test)。由于您可能在master上创建了该分支并且没有进行任何其他更改,因此您会收到一条消息,即所有内容都是最新的。

    我不确定为什么第3步说所有内容都与主人保持同步。您可能执行了其他您未在此处发布的命令,要么直接对master进行相同的更改,要么将之前合并为test

    问题:

    1. 会发生什么事时,我承诺,推动一个分支github上?

    当你推一个分支到GitHub上,那么你创建你的GitHub库一个分支,与它代表了整个修改历史记录。没有任何其他分支会发生变化,包括master

    当我将该分支推送给主设备后,我是否必须运行上面的代码块?

    “推分支到主”没有任何意义,因为master也是一个分支。您只能将分支推送到远程。或者你可以合并一个分支到另一个分支。

    要与你的本地修改更新您的GitHub库,你有两个选择:

    1. 手动合并的分支master,然后按master到GitHub上与

      $ git checkout master 
      $ git merge test 
      $ git push origin master 
      

      请注意,这只是从原始命令中执行步骤2和3。您的原始步骤1合并mastertest。这仅在master发生更改并且您想要检查合并冲突并解决它们(如果存在)时才有必要。相反,你想做相反的事情:合并testmaster。这就是为什么我先结账master然后合并test

    2. 将分支推送到GitHub并在您的GitHub仓库中创建合并请求。然后,当你合并PR,master在GitHub上会被更新,您将需要拉更改回本地回购:

      $ git checkout master 
      $ git pull origin master 
      

    附:如果您愿意,您可以在PyCharm中执行所有这些命令的等效操作。

    +0

    我刚刚编辑我的文章。谢谢您的回复。不那么困惑,但仍然困惑。 –

    +0

    @GeorgePamfilis我认为你应该重读一段我解释'git pull origin master'的用法。特别是,它改变**当前分支**,这不一定是“主”。当其他人对master进行更改时,我只使用这个命令,并且首先执行'git checkout master',这样我就可以用他人的更改更新自己的'master'。而且,当第一次尝试成功时,再次运行相同的命令没有任何意义。即使第一次尝试失败,在再次运行命令之前,您需要采取必要的措施进行修复。 –

    +0

    @GeorgePamfilis“那么为什么'git合并测试'?”我在第1部分中解释了关于使用本地更改更新GitHub回购的方法。希望我最近的编辑比原文更清晰。 –

    相关问题