1 新建倉庫
初始化 一個git倉庫: 使用命令 ***git init **
複製程式碼
2 提交檔案
分兩步執行
2.1 新增到暫存區
使用命令見檔案新增到快取區: **git add ( fileName )**
多個檔案用逗號隔開 : **git add 檔名1 , 檔名2 **
直接新增所有 : **git add .**
複製程式碼
2.2 提交到本地倉庫
使用命令 : git commit -m "提交說明"
多次修改本地檔案 然後 git add . 會將多次提交的檔案變化一次性提交到本地倉庫
複製程式碼
3 檢視提交檔案
3.1 檢視當前倉庫狀態
git status
如果沒有提交的檔案,會顯示 working tree clean , 表示工作目錄是乾淨的!
複製程式碼
3.2 檢視當前檔案修改詳情
git diff 檔名
diff : difference
複製程式碼
3.3 檢視版本歷史記錄
git log
git log
命令顯示從最近到最遠的提交日誌記錄。
如果嫌輸出資訊太多,看得眼花繚亂的,試試這個命令: git log --pretty=oneline
複製程式碼
3.4 退回版本
3.4.1 退回版本時候必須得知道當前版本
用
HEAD
表示當前版本HEAD^ 表示上一個版本
HEAD^^表示上上一個版本
以此類推..... 表示第100個版本我門可以用 HEAD~100 複製程式碼
3.4.2 退回到上一個版本
git reset --hard HEAD^
3.4.3 不想退回上一個版本,想回到之氣前版本
git reset --hard 版本號(也就是一串很長的版本id)
如果在恢復到最新版本,但是又忘記 commit id 了, 可以試試這個命令會記錄每一次你使用的每一次命令!
複製程式碼
gti reflog
3.5 撤銷修改
丟棄工作區區的修改(也可以手動刪除)
$ git checkout -- 檔名
複製程式碼
命令git checkout -- readme.txt
意思就是,把readme.txt
檔案在工作區的修改全部撤銷,這裡有兩種情況:
一種是
readme.txt
自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;一種是
readme.txt
已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。
`
3.6 刪除檔案
git rm 檔名
3.7 恢復檔案
git checkout -- test.txt
複製程式碼
3.8 分支管理
新建分支
git branch 分支名
切換分支
git checkout 分支名
檢視分支
git branch
當前分支會顯示帶 *
合併分支
git merge 命令用於合併指定分支到當前分支(切換後的分支)
git merge 分支名
git log --graph`命令可以看到分支合併圖。
刪除分支
git branch -d 分支名
3.9 bug分支
修復bug時,我們會通過建立新的bug分支進行修復,然後合併,最後刪除;
當手頭工作沒有完成時,先把工作現場git stash
(會將本地工作區修改的檔案變化隱藏起來,git status命令是無法看到的)一下,然後去修復bug,修復後,再git stash pop
,回到工作現場。
檢視bug分支 git stash list
3.10 新功能分支feature
開發一個新功能分支
開發一個新feature,最好新建一個分支;
如果要丟棄一個沒有被合併過的分支,可以通過git branch -D <name>
強行刪除。
3.11 多人協作
- 檢視遠端庫資訊,使用
git remote -v
; - 本地新建的分支如果不推送到遠端,對其他人就是不可見的;
- 從本地推送分支,使用
git push origin branch-name
,如果推送失敗,先用git pull
抓取遠端的新提交; - 在本地建立和遠端分支對應的分支,使用
git checkout -b branch-name origin/branch-name
,本地和遠端分支的名稱最好一致; - 建立本地分支和遠端分支的關聯,使用
git branch --set-upstream branch-name origin/branch-name
; - 從遠端抓取分支,使用
git pull
,如果有衝突,要先處理衝突。
重要的總結
HEAD
指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
。- 穿梭前,用
git log
可以檢視提交歷史,以便確定要回退到哪個版本。- 要重返未來,用
git reflog
檢視命令歷史,以便確定要回到未來的哪個版本。
git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用
HEAD`時,表示最新的版本。
場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令
git checkout -- file
。場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令
git reset HEAD <file>
,就回到了場景1,第二步按場景1操作。
檢視工作目錄和暫存區去的差別
git diff
工作目錄和本地倉庫差別
git diff HEAD
暫存區和本地倉庫差別
git diff --cached
詳細請檢視 原文