Git 同步遠端數據庫

使用 Git 與 Github 進行團隊合作時,會利用遠端數據庫做上傳與下載,同時也會出現 Git 衝突,本篇文講解如何處理這些狀況。

寫這篇的時候,因為專題正準備驗收,壓力山大,導致我廢話很多。

git remote - 遠端數據庫

1
2
3
4
5
6
7
8
9
10
11
# 如何推送分支到遠端數據庫

查詢遠端數據庫
git remote

修改遠端數據庫名稱
git remote rename 原名稱 修改名稱

推送分支到遠端數據庫
git push origin master
[預設遠端主機名稱] [分支名稱]

P.S. 只有在 master 時才能直接輸入 git push 推送到 Github 上

git pull - 下載遠端數據庫

單純一條 master 分支

1
2
3
4
5
推送至遠端數據庫
git push origin master

下載遠端數據庫
git pull

無法 push 的案例

腦補小故事
公司裡有「海豹人」跟「漂亮阿姨」兩位工程師
海豹人下班後,高興地看完動漫後,覺得好無聊
於是他寫了一些 code 裝認真,寫完後也 push 上去了

隔天,漂亮阿姨比海豹人先到公司
她寫了一些 code 之後也想要 push
於是輸入 push 指令 git push origin master
但是卻出現無法 push 的提示

GITHUB

漂亮阿姨大概看了一下,才知道原來 Github 上有自己還沒抓下來的檔案!
漂亮阿姨心裡想著「哇靠!海豹人昨晚回家不看動漫居然還在寫 Code?」
同時輸入 git pull 把還沒抓下來的 code 下載下來

叮咚!

漂亮阿姨心想「咦?怎麼又跳出了一個視窗」

GITHUB

原來是提示要幫忙自動合併的 vim 視窗
漂亮阿姨迅速輸入 wq! 離開視窗,並完成了合併 (merge)
這時候,漂亮阿姨用 git log 查詢時,就有出現自己 push 的檔案了

這之後,海豹人也利用 git pull 先抓下漂亮阿姨新 push 的檔案
並與漂亮阿姨解釋原理……

海豹人:
「總而言之,妳一定要先拿到我 commit 的紀錄,才能繼續 push 東西上去
即使有時間先後順序也沒關係,Git 會自動做合併的動作
因此,當妳出現無法 push 的時候,就代表遠端有 code 妳還沒有 pull」

從此以後,海豹人與漂亮阿姨利用著 Git 進行各種合作,可喜可賀!
全劇終

git fetch

劇終不代表結束,而只是以另一種形式延續……
沒有啦!這邊只是想再提一些小觀念

剛才的 git pull 就是 將遠端分支與本地分支進行合併 (merge)
但有時候我們不希望 pull 下來之後,導致自己的數據庫太亂,或者擔心有衝突時
可以先使用下面這個指令:
git fetch origin(遠端數據庫) branch1(遠端分支)

這時候就會多出一個 FETCH_HEAD 的分支
這個就是遠端數據庫的分支
可以等到看過覺得沒問題後,再合併 FETCH_HEAD 也 OK

謹慎點也不錯嘛 :D

以上資源是我自己整理過後的筆記,若有錯誤歡迎隨時和我聯繫。