git命令網上有很多介紹,記住常用80個左右命令基本夠用了,使用時常發現命令忘記。本文對自己常用的幾個命令做下整理,供需要時查閱。
【初始配置】
# git config --list // 查看配置信息
# git config --global user.name "name" // 配置個人的用戶名稱
# git config --global user.email [email protected] // 配置電子郵件地址
# git config user.name // 查閱某個環境變量的設定,例如user.name
【git庫創建】
1. git init // 創建本地git庫
2. git init --bare <repo> // 本地創建一個名爲repo的git源文件夾。該文件夾作爲本地git源,
// 初始化後包含git源子文件夾,git clone下來沒有源碼。
3. git clone <XXX.git> <localrepo> // 下載git庫到本地localrepo(默認master分支)
git clone <XXX.git> -b XX <localrepo> // 下載遠端XX分支到本地
4. git pull origin master //從遠程拉取最新版本到本地,自動合併merge
5. git fetchorigin master //從遠程拉取最新版本到本地,不會自動merge。手動merge(git merge orgin/master)
6. git remote add upstream <原作者項目的URL> //在本地添加遠端upstream分支,用於將個人分支和遠端分支內容保持一致,避免pr時衝突
【查看修改記錄】
1. git status // 查看本地修改的文件名列表
2. git diff // 查看本地修改的文件詳細內容
3. git log //查看commit log記錄
4. git show <commit id> // 顯示某次提交的內容
git show <commit id> --stat // 顯示某次提交內容修改的文件統計信息
【提交修改】
1. git add <file> // 將修改的file文件添加到工作目錄(working directory)
2. git add . // 將本地所有修改的文件添加到工作目錄
git add . -A // 將本地所有修改的文件添加到工作目錄(文件/目錄更改名稱場景,
//加-A參數後git status查看會顯示file1-->file2重命令信息,很直觀)
3. git commit -a -m "XXX" // 提交本地工作目錄所有修改
git commit -m “XXX” // 提交本地工作目錄修改(已先執行git add命令)
4. git push origin master // 將本地分支修過push到遠端的master分支
5. git rebase <commit id>^ -i // 重新設置基線。commit多個patch時,若需要修改前面commit的patch內容時,
//需要用rebase,此時後提交的patch內容會自動重新設置基線。
//該命令很常用,-i表示交互式
6. 刪除一些沒有git add的文件:
git clean參數: -n 顯示將要刪除的文件和目錄,-f 刪除文件,-df刪除文件和目錄
# git clean -f //刪除文件
# git clean -df // 刪除文件和目錄
【撤銷】
1. git reset --hard <commit ID> // 恢復到commit ID。commit ID之後的所有修改都會被刪除,修改數據丟失。
// 操作時需要注意
git reset <commit ID> // 恢復到commit ID, commit ID之後的修改不會修改,仍然在本地,可以再次提交
【暫存功能】
1. git stash // 臨時保存本地修改至暫存區。保存後,本地修改git diff看不到,默認恢復到上一次pull
2. git stash list // 打印本地暫存區棧信息;
3. git stash apply stash@{1} //將指定版本號爲stash@{1}的工作取出來;
4. git stash pop // 將當前分支的最後一次緩存的內容釋放出來,但是剛纔的記錄不存在list中
git stash apply // 將當前分支的最後一次緩存的內容釋放出來,但是剛纔的記錄還存在list中
5. git stash clear // 清除暫存區(清除後stash中數據會丟失,操作前確認信息是否均已恢復)
【branch管理】
1. git branch // 查看本地分支
git branch -v //查看分支的最後修改
2. git branch --remote // 查看遠端分支
3. git checkout master //切換到主分支
4. git merge xx //合併分支xx到主分支
5. git branch -d xx //刪除分支,如果還未合併到master,則會出現不能刪除提示,用-D可以強制刪除
6. git checkout -b xx //建立分支並切換到分支xx
7. git checkout -b 本地分支名 遠程分支名 //基於遠程分支創建本地分支,eg: git checkout -b dev origin/dev
其中,遠程分支名爲git branch –r所列出的分支名, 一般是諸如“origin/分支名”的樣子。如果本地分支名已經存在, 則不需要“-b”參數。
【生成patch】
1. git format-patch -1 <commit id> // 生成指定commit id的一個patch。補丁中含有這個補丁開發者的名字,
// 在應用補丁時,這個名字會被記錄進版本庫。
2. git format-patch -s -1 // 生成最近commit id的一個patch;
git format-patch -s -N // 生成最近commit id的N個patch;
3. git format-patch <commit id 1> <commit id 2> // 將commit id1 ~ commit id2之間提交生成patch
4. git diff > path // 將本地修改生成patch。該補丁中不包含開發者的名字。
【patch合入】
1. git am <XX.patch> //合入XX.patch(帶commit id信息,XX.patch中的commit信息也一同合入)
2. git apply <XX.patch> --reject // 強制合入XX.patch(僅合入XX.patch中的修過內容,commit信息不合入,
// 需要重新git commit -a -m "XX"重新提交patch)