[英]Do I have to manually merge a branch with master after pushing the branch to github?
我問這個問題是因為我有點困惑(只是有點困惑)。
當我使用Pycharm
(在 master 以外的分支上)時,它為我提供了提交分支的更改並將其推送到 github 的機會。
所以我就是這樣做的。
現在...
之后,我運行這個:
current branch *test
1.git pull origin master
2.git checkout master
3.git merge test
1.
它告訴我一切都是最新的。 然后繼續3.
它還告訴我所有最新的master
。
問題:
編輯
master branch
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
出現一條消息,多行顯示正在更新的分支。
我重新運行命令git pull origin master
來自http://github.com/username/project的消息出現
我按下綠色按鈕提交更改並推送。 彈出窗口似乎nothing to commit
我運行命令git checkout master
您的分支已經與 origin/master 保持同步
我運行命令git merge test
都是最新的!!!
那么為什么要git merge test
呢?
1. 它告訴我一切都是最新的。 然后繼續到 3。它也告訴我所有與主人的最新情況。
$ git pull origin master
這個命令相當於
$ git fetch origin master
$ git merge master
第一步從origin
遠程(這是您的 GitHub 存儲庫的昵稱)中的master
分支下載所有更改。 第二個命令將master
(現在包括來自 GitHub 的任何更改)合並到當前分支 ( test
)。 由於您可能在master
上創建了分支並且沒有進行任何其他更改,因此您會收到所有內容都是最新的消息。
我不確定為什么第 3 步說所有內容都與 master 保持同步。 您可能執行了其他未在此處發布的命令,或者將相同的更改直接提交給master
或之前的合並test
。
問題:
- 當我提交一個分支到 github 時會發生什么?
當您將分支推送到 GitHub 時,您會在 GitHub 存儲庫中創建該分支以及它所代表的整個更改歷史記錄。 任何其他分支都沒有任何變化,包括master
。
在將該分支推送到 master 后,是否必須運行上面的代碼塊?
“將一個分支推送到 master”沒有任何意義,因為master
也是一個分支。 您只能將分支推送到遠程. 或者您可以將一個分支合並到另一個分支。
要使用本地更改更新 GitHub 存儲庫,您有兩種選擇:
手動將您的分支合並到master
,然后將master
推送到 GitHub
$ git checkout master $ git merge test $ git push origin master
請注意,這僅執行原始命令中的第 2 步和第 3 步。 您原來的 Step 1 將master
合並到test
。 僅當master
有更改並且您想要檢查合並沖突並在它們存在時解決它們時才需要這樣做。 相反,您想要做相反的事情:將test
合並到master
。 這就是為什么我先結帳master
然后合並test
。
將分支推送到 GitHub 並在您的 GitHub 存儲庫中創建拉取請求。 然后,當您合並 PR 時,GitHub 上的master
將更新,您需要將更改拉回本地存儲庫:
$ git checkout master $ git pull origin master
ps 如果您願意,您可以在 PyCharm 中執行所有這些命令的等效操作。
是的。 您必須手動合並分支。 因為在當前狀態下,您的回購中有兩個分支。 所以如果你想將新分支合並到主分支然后
git checkout master
git merge <your-new-branch>
git push -u origin master
這應該可以完成工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.