git 基本使用手冊
部落格更新:tengfeios.com
介紹一些關於git的基本操作
git的基本操作
最開始需要一個讓git關聯一個檔案見,可以使用git init命令
git init
在當前目錄下建立.git資料夾,使當前資料夾成為git倉庫
現在本地有一個git倉庫了,就可以告訴git,我想提交的檔案有哪些,可以使用git add命令
git add 檔名
把檔案放入暫存區,為建立歷史作準備
執行 git add之後,git已經知道,我們要提交的檔案有哪些了,那麼現在可以使用git commit命令提交了
git commit
提交暫存區的所有檔案,使檔案成為一條git記錄。執行git commit命令預設進入vim介面,我們在vim裡面輸入提交的備註,使用:wq就可以提交成功了。
執行git log
git log
顯示提交歷史
git 分支
什麼是分支
在我們的開發工作中,可能要同時處理多個需求。那麼每個需求和每個需求都是沒有關係的,但是他們都是同一個專案的需求。
傳統的工作方式,在同一份程式碼中去開發很多新需求,新程式碼的穩定性是最差的,會出現測試困難,開發不好定位等一些問題。
git 分支可以解決這個問題,我們在當前主分支上開闢一個新的分支,繼續git commit,後面的提交歷史不會影響主分支。最後我們這個分支的需求通過測試以後合入主幹。
也有公司,有這樣的場景,他們的專案要出一個新版本,比如2.0版本,但是1.0還要繼續維護。這個時候,可以分別給每一個版本都建立一個分支。這樣子,1.0版本分支上可以修復一些bug,但是他沒有2.0的新特性。
不同的公司對於git分支的使用有不同的規範。
總而言之,分支的出現是為了分離提交的。新的一個開發方向可以考慮建立一個分支。新分支穩定後合入主幹。
現在我們去建立一個分支
git branch 分支名
建立一個新的分支,新分支與老分支的提交記錄是一樣的。
建立完畢後,我們可以使用git checkout命令切換到新的分支
git checkout 分支名
切換分支
切換到新分支之後就可以進行新的提交了。
新的分支功能穩定後,就可以使用git merge命令把新分支合併到主分支上面去了。
git merge
在主分支執行git merge 要合併的分支名,完成合並
遠端倉庫
我們以前的所有操作都是在本地倉庫進行的,一般專案會有多人協作開發。我們把本地的修改更新遠端倉庫。這樣就可以把程式碼共享給同事。
首先我們新增一個遠端倉庫
git remote add 遠端倉庫名 遠端倉庫連結。
遠端倉庫名,可以隨便寫,一般是origin。
git remote
-
git remote
獲取所有遠端倉庫,使用git remote -v 可以獲遠端倉庫連結
-
git remote add 遠端倉庫名 遠端倉庫連結
新增一個git遠端倉庫,可新增多個遠端倉庫
-
git remote rm 遠端倉庫名
刪除一個遠端倉庫
現在就可以使用git push向遠端倉庫更新程式碼啦。
git push 遠端倉庫名 遠端倉庫分支名
把當前本地分支推入遠端倉庫。
如果沒有遠端倉庫,可以使用github,碼雲之類的網站建立一個。
在我們執行git push向伺服器推程式碼的時候,別人可能也在git push,我們需要通過git pull更新其他人的程式碼。
git pull 遠端倉庫 遠端倉庫分支
把遠端倉庫的分支下載到本地,並將遠端分支與當前分支合併。
git衝突
實際開發過程中會產生一個經常遇到的問題。
如果其他人的提交和我們的提交同時修改了同一個檔案,那麼git merge會怎樣合併呢?
我們可以嘗試一下。
在兩個不同的分支,修改同一個檔案,分別提交。
執行git merge 分支名,合併分支
提示:
Auto-merging 衝突的檔名 CONFLICT (content): Merge conflict in 衝突的檔名 Automatic merge failed; fix conflicts and then commit the result
意思是自動合併分支失敗,存在衝突。
現在git需要我們解決衝突,我們去解決一下衝突的問題。
開啟衝突的檔名,會發現衝突的程式碼塊被git修改過,大概如下
<<<<<<< HEAD
23
=======
32
>>>>>>> Dev
第一行代表衝突開始,HEAD表示當前分支
Dev表示要合併的分支
=======將分支的修改進行隔離
現在我們就知道如何修改衝突了,編輯此檔案,把衝突的內容修改為理想的狀態,
執行git add . 告訴git,我們已經解決衝突。
執行git commit,就可以成功合入分支了。
總結
通過以上的命令,可以完成日常的開發任務了。但是git作為常用的版本管理工具,還有很多需要掌握的內容。下一篇介紹git進階的一些命令。