1. git簡介
- 工作區:本地電腦存放專案檔案的地方;
- 暫存區:在使用git管理專案檔案的時候,其本地的專案檔案會多出一個.git的資料夾,將這個.git資料夾稱之為版本庫。其中.git資料夾中包含了兩個部分,一個是暫存區(Index或者Stage),顧名思義就是暫時存放檔案的地方,通常使用add命令將工作區的檔案新增到暫存區裡;
- 本地倉庫:使用commit命令可以將暫存區中的檔案新增到本地倉庫中;
- 遠端倉庫:專案程式碼在遠端git伺服器上,比如專案放在github上,就是一個遠端倉庫,通常使用clone命令將遠端倉庫拷貝到本地倉庫中,開發後推送到遠端倉庫中即可
2. git配置
- 配置使用者名稱:
git config --global user.name "your name"
;
- 配置使用者郵箱:
git config --global user.email "youremail@github.com"
;
3. 工作區操作
新建倉庫
- 建立新的本地倉庫:
git init
- 從遠處倉庫複製專案:
git clone
提交
- 提交工作區所有檔案到暫存區:
git add .
- 提交工作區中指定檔案到暫存區:
git add [檔名]
撤銷刪除
- 刪除工作區檔案,並且也從暫存區刪除對應檔案的記錄:
git rm -f [檔名]
- 從暫存區中刪除檔案,但是工作區依然還有該檔案:
git rm --cached [檔名]
- 拉取暫存區的檔案,並將其替換成工作區檔案:
git checkout -- [檔名]
,簡單的說 就是當我們把工作區弄亂了,可以幫我們 拉取暫存區 恢復工作區
查詢資訊
- 查詢當前工作區所有檔案的狀態:
git status
- 對比工作區和暫存區之間的差異,即修改後還沒有暫存的內容:
git diff
4. 暫存區操作
提交檔案到本地倉庫
- 將暫存區中的檔案提交到本地倉庫:
git commit -m "commit_info"
- 將所有已經使用git管理過的檔案暫存後一併提交,跳過add到暫存區的過程:
git commit -a -m "commit_info"
- 提交檔案時,發現漏掉幾個檔案,或者註釋寫錯了,可以修改上一次提交:
git commit --amend
- 輸入指令後會進入git vim 編輯器
- 按
a
,i
或o
進入編輯模式
- 按
ESC
進入操作模式
- 在操作模式下,
:wq
為寫入退出,:q!
不儲存退出
檢視資訊
- 比較暫存區和本地倉庫的差異:
git diff --cached
- 指定檔案在暫存區和本地倉庫的不同:
git diff [檔名] --cached
;
- 檢視提交歷史:
git log
- 引數-p展開每次提交的內容差異
git log -p
- 用-2顯示最近的兩次更新
git log -p -2
版本回退
- 將程式碼回退到上一次提交時的狀態:
git reset --hard Head
- 將程式碼回退到上上一次提交時的狀態:
git reset --hard Head~1
- 將程式碼回退到上上上一次提交時的狀態:
git reset --hard Head~2
- 檢視之前所有版本切換的操作記錄,可以通過這個命令得到的版本號回退到指定的版本:
git reflog
- 將程式碼回退到指定版本:
git reset --hard [版本號]
分支管理
- 顯示本地倉庫的所有分支:
git branch
;
- 建立分支:
git branch [分支名]
- 從當前所處的分支切換到其他分支:
git checkout [分支名]
- 新建並切換到新建分支上:
git checkout -b [分支名]
- 刪除分支:
git branch -d [分支名]
- 刪除遠端分支:
git push origin :[分支名]
- 將當前分支與指定分支進行合併:
git merge [分支名]
;
- 檢視各個分支最後一個提交物件的資訊:
git branch -v
;
- 在遠端分支的基礎上建立新的本地分支:
git checkout -b <branch-name> <remote-name>/<branch-name>
- 即:
git checkout -b [本地分支名] origin/[遠端分支名]
- 使用例子:
git checkout -b branch-dev origin/branch-dev
;
5. 本地倉庫操作
- 新增遠端倉庫,取一個變數名代替地址:
git remote add [變數名] [遠端伺服器地址]
- 示例:
git remote add origin https://github.com/Saber-tgb/test-git.git
- 指定預設上傳伺服器地址並推送分支:
git push -u origin master
- 將本地的master分支推送到origin伺服器 同時指定origin為預設上傳伺服器地址,後面就可以不加任何引數使用git push了
- 將本地倉庫某分支推送到遠端倉庫:
git push origin [分支名]
- 將
dev
分支推送到遠端倉庫git push origin dev
- 拉取遠端倉庫:
git pull
6. 忽略檔案.gitignore
- 我們可以建立一個名為 .gitignore 的檔案,列出要忽略的檔案模式
*.a
!lib.a
/TODO
build/
doc/*.txt
doc/**/*.txt
複製程式碼