一般流程
-
從遠端庫克隆專案到本地
git clone https://XXXXX/XXX/XXX.git 複製程式碼
-
切換到需要繼承的分支
一般克隆下來的都是master分支,當然也可以直接在這個分支上建立新的本地分支,有些時候如果不是在master分支的下建立新的本地分支的話,就需要切換到需要繼承的分支下,假設我們需要切換到遠端分支origin/release/rt46,命令如下:
git checkout release/rt46 複製程式碼
-
建立新的本地分支並切換到該分支
建立新的本地分支會在當前所在分支下進行建立,在建立後其內容會與當前分支內容一致,如果進行了第二布的話,那麼當前分支就是release/rt46,否則就為master。建立本地分支feature/addTools並切換到該分支:
git checkout -b feature/addTools 複製程式碼
這條命令表示建立了分支feature/addTools並且切換當前本地工作臺到新的分支,相當於是執行了如下兩條命令:
git branch feature/addTools # 建立feature/addTools分支 git checkout feature/addTools # 切換到feature/addTools分支 複製程式碼
-
然後你就可以愉快的在本地分支feature/addTools裡面進行你的任務啦,假設到現在你的任務都已經完成了,那你需要執行後面的步驟
-
將所有的修改新增到索引裡面
這裡說一下GIT裡的一些概念:工作區 - 索引 - 版本資料庫
工作區指的是你當前所有能夠看到的專案內容,你可以假想為你的IDE能夠編輯的所有的工程檔案,那工作區就是這些工程檔案所在的專案目錄,所以可以直接理解為工作區就是含.git資料夾的專案工程目錄區域
索引是儲存在.git裡的某個檔案,用來記錄修改的操作內容
版本資料庫裡面儲存了各個版本,分支下的操作步驟,以及檔案操作的註釋等內容
注意下,這裡的工作區,索引,版本資料庫都是指代你的本地環境,個人簡單理解的git具有分散式版本控制就是因為只要有人克隆了整個專案,那麼他也具有了整個『工作區-索引-版本資料庫』,所以相當於每個人本地都是一個git版本庫
那為什麼需要說明這些概念,因為大家常用過兩個命令:
git add
和git commit -m '註釋內容'
對吧,那其實他們的關係是這樣的:工作區 ----
git add
----索引----git commit
----版本資料庫當我們在工作區對程式碼進行修改後先add到索引:
git add . # .符號表示將當前所有的修改全部新增到索引 # 或 git add filename.js # 這樣就表示只是將工作區做了修改的filename.js檔案新增到索引 複製程式碼
然後新增到版本資料庫
git commit -m '修改了一些內容' # -m後面加上檔案修改的註釋內容 複製程式碼
git commit會講當前索引裡面的所有修改描述資料新增到版本資料庫裡面,如果對不同的檔案描述不同的話,建議多進行幾次
add filename
和commit
-
將分支提交到遠端倉庫裡面
我們之前的操作只是在本地建立了feature/addTools分支,如果需要提交到遠端倉庫上去,直接git push是不可行的
git push --set-upstream origin feature/addTools 複製程式碼
這樣的話是在遠端倉庫建立了一個feature/addTools分支,以後就可以在這個分支下愉快的進行
git push
了 -
更新繼承的分支內容,保證最新
先別急著push,假設存在這種情況,你在release/rt46下新建了feature/addTools分支後,另一個同學他的任務寫完了合併到了release/rt46分支裡面,那此時的話,遠端倉庫上的release/rt46是有新增內容的,所以一般為了保證我繼承的release/rt46分支比較新的話,我們在push之前需要進行如下操作
-
切換到父分支
git checkout release/rt46 複製程式碼
-
把新的內容拉下來,拉下來後是最新的release/rt46了
git pull 複製程式碼
-
切換到工作分支
git checkout feature/addTools 複製程式碼
-
更新工作分支的父分支
git rebase release/rt46 複製程式碼
-
-
推送到遠端倉庫裡的feature/addTools分支下
git push 複製程式碼
常用git命令
-
切換分支
切換分支需要注意看當前的工作區和索引是否有修改,如果有必須要先完成commit才可以切換
git checkout <分支名> 複製程式碼
-
刪除分支
刪除本分支需要先切換到其他分支,才可以刪除本分支
git branch -D <分支名> 複製程式碼
-
合併分支
假設當前分支是release/rt46,需要與feature/addTools合併
git merge feature/addTools 複製程式碼
會將feature/addTools修改的內容合併到release/rt46裡面
-
檢視所有分支
git branch -a 複製程式碼
可以通過grep通道限制顯示的內容
git branch -a | grep release/rt4 複製程式碼
-
新增遠端版本庫
git remote add <remote> <url> 複製程式碼
remote指代遠端版本庫,一般預設遠端版本庫為origin
-
檢視提交歷史
git log # 檢視所有提交歷史 git log -p <file> # 檢視指定檔案的提交歷史 複製程式碼
-
撤銷工作區所有未提交的檔案修改內容
git reset --hard HEAD 複製程式碼
-
撤銷指定的未提交檔案內容
git checkout HEAD <file> 複製程式碼
-
更新所有線上程式碼和分支
git fetch 複製程式碼