在公司git伺服器上建造了一個項目,然後建立一個分支 b1然後添加了一個github的master git remote add r1 https://github.com/xx/xx
怎麼合併本地分支b1和遠端r1分支呢?
補充編輯,原始需求是在一個github活躍的專案上面做二次開發,又要將程式碼放到公司git上,或是大家有什麼好的建議? 謝謝
如果要合併兩個分支的話,起碼要保證二者俱有相同的祖先,按照樓主的補充二者的確是有相同的祖先,所以是可以合併的。 這樣的話我的方案是,先將github倉庫中的項目使用git clone命令克隆的本地,然后使用git remote add ...命令添加公司git服务器上的仓库为远程仓库;接着在本地使用git pull命令进行拉取与合并,当然git pull命令後要添加遠程分支的url別名和分支名;最後如果衝突解決完畢而且合併完成就可以推送到公司的遠程倉庫了。 我覺得像這樣先在本地的另一個倉庫進行合併可能更安全一點兒。當然,因為我也沒實際處理過這樣的問題,所以如果我的方案沒有成功,希望樓主可以跟我回饋下問題出在哪裡。
git clone
git remote add ...
git pull
git push的時候可以選擇哪個遠端伺服器,所以先從github上拉分支,解決衝突,再push到公司分支的master上,等公司的人檢查合併,應該沒有問題
git push
按題主的說法,r1 其實不是一個 branch,而是一個 remote。就先假設你要合併本地的 b1 分支和 r1 的master 分支吧。
r1
既然你已經加了 r1,那麼你需要做的事兒就是:
首先切換到 b1。指令是 git checkout b1
git checkout b1
取得 r1 master branch的 HEAD 指標。指令是 git fetch r1
git fetch r1
把 r1 master branch 上的內容應用到本地。可以用 git merge r1/master,也可以 git rebase r1/master。前者產生非線性的歷史紀錄,後者產生線性的。
git merge r1/master
git rebase r1/master
然後你再 push 到公司的庫,就搞定了
順便:git pull = git fetch + git mergegit pull = git fetch + git mergegit pull --rebase = git fetch + git rebasegit pull --rebase = git fetch + git rebase
git fetch
git merge
git pull --rebase
git rebase
如果要合併兩個分支的話,起碼要保證二者俱有相同的祖先,按照樓主的補充二者的確是有相同的祖先,所以是可以合併的。
這樣的話我的方案是,先將github倉庫中的項目使用
git clone
命令克隆的本地,然后使用git remote add ...
命令添加公司git服务器上的仓库为远程仓库;接着在本地使用git pull
命令进行拉取与合并,当然git pull
命令後要添加遠程分支的url別名和分支名;最後如果衝突解決完畢而且合併完成就可以推送到公司的遠程倉庫了。我覺得像這樣先在本地的另一個倉庫進行合併可能更安全一點兒。當然,因為我也沒實際處理過這樣的問題,所以如果我的方案沒有成功,希望樓主可以跟我回饋下問題出在哪裡。
git push
的時候可以選擇哪個遠端伺服器,所以先從github上拉分支,解決衝突,再push到公司分支的master上,等公司的人檢查合併,應該沒有問題按題主的說法,
r1
其實不是一個 branch,而是一個 remote。就先假設你要合併本地的 b1 分支和 r1 的master 分支吧。既然你已經加了 r1,那麼你需要做的事兒就是:
首先切換到 b1。指令是
git checkout b1
取得 r1 master branch的 HEAD 指標。指令是
git fetch r1
把 r1 master branch 上的內容應用到本地。可以用
git merge r1/master
,也可以git rebase r1/master
。前者產生非線性的歷史紀錄,後者產生線性的。然後你再 push 到公司的庫,就搞定了
順便:
git pull
=git fetch
+git merge
git pull
=git fetch
+git merge
git pull --rebase
=git fetch
+git rebase
git pull --rebase
=git fetch
+git rebase