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

  • git基本操作

  • git 上次文件到遠程倉庫(參考://blog.csdn.net/beiqiaofeng123/article/details/104859326)

如果第一次上傳,配置一下用戶名和郵箱(我的用戶名是lays03,郵箱是[email protected]
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

 

 

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

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

 

Tags: