git各種操作:基本操作 and 多人協作 and 衝突解決

Tiancfq發表於2021-09-15
  • git基本操作

  • git 上次檔案到遠端倉庫(參考:https://blog.csdn.net/beiqiaofeng123/article/details/104859326)

如果第一次上傳,配置一下使用者名稱和郵箱(我的使用者名稱是lays03,郵箱是2725281280@qq.com)
git config --global user.name [username]
git config --global user.email [email.address] 
 
如果需要管理本地工程,切換到專案的根目錄下,
git init 
 
新增需要上傳的檔案到暫存區
git add fileName (單個檔案)
git add dir (dir資料夾下所有檔案,包括子目錄)
git add .  (新增當前目錄下的所有檔案到暫存區)
 
提交檔案到本地倉庫
 
git commit -m "init commit"

 

將本地倉庫與遠端倉庫連線
git remote add origin https://github.com/username/倉庫名.git

  

將檔案推送到遠端倉庫
git push -u origin master

 

  •  github基本操作

git init 將這個資料夾變成git可以管理的倉庫 本地和遠端倉庫關聯
git add 檔名 將檔案新增到暫存區 git push -u origin master push到遠端倉庫
git commit -m "提交的註釋" 將檔案提交到倉庫 git checkout -b dev 建立並切換分支
git status 檢視是否還有檔案沒有提交 git branch 檢視當前的分支
git diff 檔名  檢視檔案修改了什麼內容 git checkout 分支名 切換到相應分支
git log  顯示最近的操作/顯示分支合併情況 git merge 分支名 將分支合併到主分支上
git reset --hard HEAD^ 回退到檔案的上一個版本,如果想回退到上n個版本,在HEAD後加上n個^即可 git branch -d 分支名 刪除分支
git reflog 顯示每一次操作的詳情及版本號    
git reset --hard 版本號 回到對應版本號的版本    
git checkout -- file 丟棄工作區的修改    

 

 


下面介紹git多人協作以及衝突解決的問題

  • 簡要介紹

首先說一下git多人協作以及衝突解決的問題

模擬的場景:兩個人需要對github上的同一個檔案進行操作,這裡用一臺電腦的兩個視窗來模擬。操作物件:readme.txt

事先將github倉庫裡面的內容clone到本地,並且建好分支dev,因為我們一般不在master分支上直接操作。

  • git多人協作 and 衝突解決

  • 步驟一(在第一個視窗中操作):

進入分支dev,在dev下修改readme.txt檔案的內容,並將dev分支push到遠端倉庫

git add readme.txt

git commit -m "註釋(根據自己的需要來寫)"

git push origin dev

 

  • 步驟二(在第二個視窗中操作):

進入第二個視窗,模擬第二個人。從github倉庫裡面獲取內容,並將遠端倉庫dev分支(步驟一中我們操作的那個分支)下的內容pull到本地dev分支上

git clone https://github.com/username/倉庫名.git

git checkout -b dev origin/dev

 

  • 步驟三(在第二個視窗中操作):

修改檔案內容,增加“2222”內容。並且將修改後的檔案新增到暫存區,並且push到遠端倉庫

git add readme.txt

git commit -m "2222"

git push origin dev

 

  • 步驟四(在第一個視窗中操作):

回到第一個視窗,模擬第一個人。修改檔案內容,增加“3333”。同樣將修改後的檔案新增到暫存區,並且push到遠端倉庫

(命令和步驟三中的一樣)

可以看到報錯了,原因是已經有別人對遠端倉庫進行了更新,導致我們第一個人現在操作的物件的版本不是最新的,因為需要重新獲取遠端倉庫裡面的內容。

 

  • 步驟五(在第一個視窗中操作):

使用git pull,重新獲取遠端倉庫裡面的內容。可以看到顯示衝突

git pull

 

  • 步驟六(在第一個視窗中操作):

檢視readme.txt檔案中的內容,檢視衝突程式碼,<<<<<<<HEAD表示的是當前dev上的衝突內容      >>>>>>>表示的是之前push的那個人dev分支上的衝突內容

我們要做的就是刪掉這些“<<<<<<<”和“>>>>>>>”即可。刪除完之後,重新git add、git commit、git push

 

  • 步驟七:

去github中檢視情況,首先dev分支上的內容確實更新了,但是master上面的內容並沒有。

 

這是因為我們一直是在dev分支上進行操作,push的時候也是push到dev分支,這時只要切換到 master,並merge即可。然後重新將readme.txt  push到遠端master分支即可。

git checkout master

git merge dev

 

 

到這裡,多人協作以及衝突的問題就解決了。

-------------------------------------------------分割線------------------------------------------------

 

相關文章