2、git進階操作
2.1.1 分支的創建
命令 參數 含義 git branch (git checkout -b) <new_branch> <old_branch> 表示創建分支 -d <-D> 刪除分支 –d如果分支沒有合并,git會提醒,-D強制刪除 -a -v 查看分支 -m 重新命名分支 commit id 從指定的commit id簽出代碼 git branch branch_name commit id $ git push origin branch_name將本地分支推到遠程 $ git push origin branch_name --delete 將遠程分支刪除
### 2.1.2 分支的合并
命令 參數 含義 git merge <branch_name> 需要合并的分支 --abort 終止合并,并回復文件 --continue 繼續合并
### 2.1.3 git rebase
命令 參數 含義 git rebase <branch_1> <branch_2> 將branch_1上面的移動到branch_2 --abort 終止rebase --continue 繼續rebase -i 進入交互模式
2.2 git reset/revert/checkout撤銷操作
命令 參數 含義 git reset --soft commit_id 撤銷到某個commit,不修改工作區和索引區內容 --mixed commit_id 撤銷到某個commit,不修改工作區,修改索引區內容 --hard commit_id 撤銷到某個commit,并重置工作區和索引區內容 HEAD file_name 撤銷索引區指定的file_name git revert commit_id 只撤銷某個commit git checkout -- . 撤銷工作區所有文件
2.3 git remote遠程服務器操作
創建倉庫 git clone --bare DataStruct-Algorithm /F/datastruct-algorithm.git git init --bare DataStruct_algorithm.git
命令 參數 含義 git remote -v 查看詳細的信息 show server_name 查看主機的詳細信息 add server_name web_site 添加主機 rm server_name 刪除主機 rename old_server_name new_ server_name 修改主機名
2.4 git log高級用法
命令 參數 含義 git log -n 表示查看最近提交的n條記錄 --graph 顯示當前分支提交記錄以圖形方式展示,后面—all 表示所有的分支 --date=short 查看提交的時間 -p 表示提交文件的修改了那些內容 file_name 表示查看file_name文件的提交記錄 commit_id..commit_id 查看兩個commit id之間的提交記錄 --since=<date> 自date以來的記錄 --before=<date> 表達date之前的記錄 --after=<date> 表示date之后的記錄 --until=<date> 表達直到date之后的記錄 $ git log --since="2019-07-11" --until="2019-07-16" --date=short\n 表示2019-07-11~2019-07-16(不包括16號)之間提交的記錄 --grep=<contents> 根據提交的message內容進行匹配 --author=”author_name” 根據作者名來搜索 --skip=n 跳過前面的n條記錄 --stat 顯示提交的文件 --left-right branch1…branch2 比較兩個分支的commit差異
命令 參數 含義 git reflog show 查看當前分支的記錄 --all 查看所有分支的記錄 在找到commit id之后可以使用cherry-pick branch等命令 reflog有個特點就是它只存在本地記錄里面,并不會上傳到服務器上
2.5 git diff/show查看提交詳情
2.5.1 diff
命令 參數 含義 git diff 不加參數 尚未緩存的修改(還未執行add命令) --cached 已經緩存的修改 <branch_name1> <branch_name2> [file_name] 比較兩個分支file_name的差異 commit_id commit_id 比較兩個commit id 區別
3.5.2 show
命令 參數 含義 git show <commit_id> 顯示commit id提交修改的內容 <commit_id> <file_name> 查看commit id 中對應的file_name修改內容 <tag_name> 查看tag信息
### 2.6 git tag操作
命令 參數 含義 git tag -m 注釋信息 -f 強制覆蓋 -d 刪除 -l 列出所有的tag -n 列出詳細信息 $ git tag v2.0.0.0 –m “new version v2.0.0.0” $ git ls-remote --tags <server_name>查看遠程tag $ git fetch <server_name> <tag_name> 拉取遠程tag $ git push --delete <server_name> <tag_name> 刪除遠程的tag
注意在checkout tag的時候,如果我們在當前的tag上做了提交,就會造成一個游離的HEAD現象,這是個非常危險的操作,有可能會造成你的commit丟失問題。
2.7 git stash操作
stash的查看,增加,刪除,對比,應用
命令 參數 含義 git stash save [message] 保存stash,并且有注釋信息 show [stash] -p 查看某個stash的詳細信息 drop [stash] 刪除某個stash pop 將當前的第一個stash應用到當前的分支上 apply [stash] 應用指定的stash,并且保存stash不變化 clear 清空stash list 查看所有的stash
2.8 git blame操作
命令 參數 含義 git blame file_name 查看這個文件都有誰提交的 file_name -L num1:num2 查看這個文件從num1行到num2行都有誰提交的 file_name –L:function_name 查看這個文件里面函數最后一次誰修改過 --colors-lines 顯示顏色標記 這個命令有時候可以結合grep使用,主要是為了精確查找信息
### 2.9 git patch 操作
1.先生成patch文件 $ git format-patch start_commit_id..end_commit_id $ git format-patch –n3 2.可以事先檢測在合并的時候是否存在沖突 $ git apply --check patch_file 3.合并patch文件 $ git am patch_file 4.撤銷patch $ git apply –R patch_file
2.10 git submodule管理大型項目的利劍
$ git init –bare test_submodule.git $ git submodule add git@github.com:MingYueRuYa/cpp_inside_object.git $ git submodule add git@github.com:MingYueRuYa/cpp_study.git $ git commit –m “add submodule” $ git push
拉取遠程分支 $ git clone git@github.com:MingYueRuYa/test_submodule.git $ git submodule init $ git submodule update (git submodule update –init 將上面的兩步合起來) $ git submodule foreach git pull $ git submodule foreach git submodule update $ git rm -rf submodule_name (刪除submodule)