git各種操作:基本操作 and 多人協作 and 衝突解決
-
git基本操作
-
git 上次文件到遠程倉庫(參考://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 //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 //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
到這裡,多人協作以及衝突的問題就解決了。
————————————————-分割線————————————————