-
git基本操作
-
git 上次檔案到遠端倉庫(參考:https://blog.csdn.net/beiqiaofeng123/article/details/104859326)
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 remote add origin https://github.com/lays03/testgit.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
到這裡,多人協作以及衝突的問題就解決了。
-------------------------------------------------分割線------------------------------------------------