git關聯本地和遠端倉庫的圖文筆記


前言
  • 場景:當已有本地倉庫和遠端倉庫的情況下,如何進行git管理。

  • 方式有兩種

    • 1.最簡單的方式是使用git clone將遠端代碼克隆到本地目錄,並將已有工程代碼直接拷貝到此目錄下讓git管理。

    • 2.手動關聯本地倉庫和遠端倉庫。(本着折騰的原則,本文記錄一下手動關聯的步驟)

  • 開始之前,安利一個git版本控制的gui客戶端工具:sourceTree,下文會以圖文的方式介紹關聯步驟。

準備工作
  • 本地安裝git。

  • gitlab中新建遠端倉庫。

  • 開始時,本地倉庫(master)和遠端倉庫(origin/master origin/dev)並沒有任何關聯。

步驟
  • 1)先將本地的工程初始化爲git倉庫

    • 進入工程目錄使用git init命令初始化。

  
  
  
  1. $ git init

  2. Initialized empty Git repository in G:/test.work/data-alarm-server/.git/

  • 2)爲本地添加一個遠端倉庫

  • 地址即是我們將要合併的遠端的地址

  
  
  
  1. $ git remote add origin http://xxx/xxx/dataalarmserver.git

  • 3)追蹤遠端分支

    • 開發時,經常會在遠端建立一個開發dev分支,同樣的,我們也可以在本地建立一個開發分支與遠端對應,本地默認分支名爲master。

    • 如下,我們就直接把本地的master分支和遠端dev分支關聯上。

    • 命令作用在於追蹤遠端分支,但如下圖所示,版本仍未同步。

  
  
  
  1. $ git branch --set-upstream-to=origin/dev

  2. Branch 'master' set up to track remote branch 'dev' from 'origin'.        

4)查看遠端分支

  • 括號中指明瞭地址是用於拉取還是推送,如果沒有權限,則不會顯示。

  
  
  
  1. git remote -v

  2. origin  http://xxxxxx/dataalarmserver.git (fetch)

  3. origin  http://xxxxx/dataalarmserver.git (push)

5)使用git pull拉取代碼

  • 直接pull代碼會報錯,單純使用pull命令無法拉取更新,因爲兩個倉庫可能都有內容,所以我們必須加上參數將不相關的兩個倉庫強行合併,報錯如下:

  
  
  
  1. Username for 'http://xxxx': username

  2. fatal: refusing to merge unrelated histories

6)合併不相關的兩個倉庫

  • --allow-unrelated-histories參數的作用在於允許關聯不相關的歷史信息。

  • 合併之後發現本地已經超前遠端2個版本了。

  
  
  
  1. git pull --allow-unrelated-histories

7)解決合併時的衝突

  • 初始化遠端倉庫時,有可能ReadMe.md及.gitignore文件內容會衝突,需要解決衝突。

8)推送

  • 由於我們只追蹤了遠端的dev分支,直接push會報錯。解釋如下:

    • 其中git push不帶參數,默認情況下,是將本地的master分支推送到遠端origin。

    • 正如下提示所說,我們需要指定將本地倉庫內容推送至遠端倉庫的dev分支。

    • 使用的命令是:git push origin HEAD:dev

  
  
  
  1. $ git push

  2. fatal: The upstream branch of your current branch does not match

  3. the name of your current branch.  To push to the upstream branch

  4. on the remote, use git push origin HEAD:dev

9)推送成功,檢查狀態

  • 如下status說明當前我們的分支已經和遠端的dev分支保持同步了

  
  
  
  1. $ git status

  2. On branch master

  3. Your branch is up to date with 'origin/dev'

  4. nothing to commit, working tree clean

總結
  • 如果不知道該使用什麼命令時,多多使用git status命令 和git --help來查詢手冊。

  • 圖形化工具能提高我們的開發效率,但是多使用命令更能加深我們對技術的理解。

本文分享自微信公衆號 - 俠夢的開發筆記(xmdevnote)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章