Git 基本常用操作
一. Git基本的工作流程簡介如下:
- 在工作目錄中修改某些檔案;
- 對修改後的檔案進行快照,然後儲存到暫存區域;
- 提交更新,將儲存在暫存區域的檔案快照永久轉儲到 Git 目錄中.
二.git常用命令操作
1. git clone
git clone 程式碼庫的url
eg: git clone ssh://[email protected]:29422/project
git clone -b test ssh://[email protected]:29422/test.git
克隆到本地的庫,預設的程式碼庫的當前分支(活動分支)名稱是master,如果下載的時候,加上-b 分支名稱,下載下來的程式碼庫的當前分支(活動分支)就是指定的分支名稱: git clone –b branch1 ssh://
2.git status
可以使用git status檢視版本庫中檔案提交的狀態,沒提交的資訊會有顯示.
3.git add //將工作區的修改提交到暫存區
1). git add filename
2). git add directoryname
3). git add . //其中.表示當前目錄下新新增的檔案或目錄,修改的檔案或目錄
4.git commit //將暫存區的檔案或目錄提交到版本庫區
git commit 與 git commit –m “message”相同,只是後者直接以-m引數將提交日誌寫入
5.git commit - -amend
1). 修正提交單中錯誤的使用者名稱及郵箱
eg:git commit - -amend --author=’jon [email protected]’
2). 程式碼走查不通過的時候,在本地使用這個命令可以不產生新的程式碼走查單
在本地修改完走查不通過的檔案,需要執行git commit的時候,不要使用git commit –m,而是使用git commit --amend命令(前提原生代碼庫中的.git/hooks/commit-msg 鉤子指令碼是存在的,如果鉤子指令碼不存在,要到gerrit web頁面的走查單中將changed-id xxxx貼到git commit --amend彈出的編輯框中)
6.git rm //刪除檔案或目錄
1). git rm 檔名稱
2). git rm –r 目錄名稱
3) .將不需要的檔案及目錄從工作區及暫存區中刪掉
a. 如果需要刪除git庫中已經受控的檔案或目錄請使用此命令,不要使用作業系統下的刪除命令.受控-表示檔案及目錄狀態為跟蹤狀態
b. 如果要刪除第一次放到工作區的檔案或目錄,直接使用作業系統下的刪除命令,也可以使用 git clean –df 移除不受控的檔案或目錄
c. git rm test.txt 將test.txt從工作區及暫存區刪除,如果需要提交,下一步直接執行git commit –m “message”即可
7.git mv
git mv oldname newname //將檔案或者目錄重新命名
8.git diff //對比本地庫中工作區與暫存區的差異
1). git diff --cached //對比本地庫中暫存區與庫區的差異
2). git diff head //對比本地庫中工作區與庫區的差異
9.git checkout
1). git checkout -- filename 或者git checkout -- directory
在本地git庫的工作區修改或刪除已受控的檔案,後悔了,想要會退到之前的狀態(工作區的檔案回到修改之前的狀態,暫存區,庫區不受影響)
2).git checkout branchname //切換到某個分支
3). git checkout –b branch1 commit-ID //以某個提交修訂版本為基準建立新分支,並切換到新分支
10.git reset head //一般是在執行git add的之後,想取消add的動作(工作區不受影響,庫區不變,暫存區回到add之前的狀態)用
1).git reset head 檔名稱
2).git reset head 目錄名稱
11.git pull //更新本地庫
1).git pull --rebase //在本地庫的A分支下執行該命令,表示將遠端庫中對應的A分支內容更新到本地A分支,加入引數 --rebase 可以避免在更新過程中本地庫中產生合併節點
2).git pull origin branchname //將遠端倉庫的分支內容更新到本地庫的當前分支上
12.git push //將提交到本地庫中的內容推送到遠端庫中
1).git push origin HEAD:refs/for/branchname //推送到gerrit頁面走查
2).git push origin branchname //直接推送到遠端git庫中
13.git log //輸出資訊顯示
1).git log -p //用於檢視每一次提交條目的補丁內容,這在程式碼複查時很管用,--表示本次提交版本之前檔案的修改狀態
2).git log --stat //顯示被修改檔案的修改統計資訊,新增或刪除了多少行
3). git log --pretty=format
可以將提交歷史顯示成你想要的格式,這裡format的可選項包括:oneline,short,medium,full,fuller,email,raw
14.git log 可以指定程式碼提交者或者郵箱進行提交者程式碼日誌查詢
eg:git log --author ="jon"
git log --author="[email protected]"
15.git branch
1).git branch //在本地庫執行git branch 可以檢視本地庫的分支,並且可以檢視本地庫當前分支(通常用*標記)
2).git branch –r //在本地庫中檢視遠端庫的分支
3).git branch branname commit-ID //以某個修訂版本建立新分支,commit-ID為40位的雜湊值
4).git branch –d branchname //刪除分支,在刪除時會檢查要刪除的分支是否已經合併到其他分支,否則拒絕刪除
5).git branch –D branchname // 強制刪除分支
6).git branch –m branch1 branch2 //分支重新命名,如果庫中有同名的分支,則拒絕重新命名
7).git branch –M branch1 branch2 //強制重新命名,不論庫中是否有同名的分支