??通常,很多朋友在使用 Git
的時候都會直接用 IDE
中集成的插件或者自帶的工具等來實現代碼的拉取、提交、合并以及其他操作,當然這肯定也是可以的,但是長期這樣子操作,我們就會忽略掉 Git
業務運行的底層邏輯。
那么,我這里就精心總結了我這么多年所用到的最常見的命令匯總,只需要 一篇文檔 就能夠輕松搞定你所有的 Git
操作煩勞。
一、拉取其他分支代碼:
??1、先克隆遠程倉庫代碼 Main
分支
git clone <倉庫地址>
??2、切換目錄到項目文件夾中
3、將遠程倉庫的所有分支拷貝到本地倉庫
git fetch
??4、切換到目標分支
git checkout <目標分支>
二、查看分支列表
git branch
三、創建分支
git branch <分支名稱>
四、切換分支
git checkout <目標分支>
五、同步遠程代碼到本地
git pull origin <指定分支>
六、合并分支
??1、通過 merge
命令將其他分支的代碼合并到當前分支:
git merge <目標分支>
??2、如果想要將 YW
分支合并到 TEST
分支。
首先確保 YW
和 TEST
兩個分支的代碼都已經提交到遠程倉庫,并且已經更新了最新的代碼;
而后由 YW
分支切換到 TEST
分支;
執行命令 git merge YW
將本地的 YW
分支合并到 TEST
分支;
最后將 TEST
分支提交到遠程倉庫即可完成合并。
3、合并分支的時候不 Commit
,自行可以繼續編輯合并的文件:
git merge --no-ff --no-commit <目標分支>
??4、合并分支后撤銷合并:
第一步:
git checkout <執行 merge 操作所在的分支>
??第二步:
git reset --hard <merge 前的版本號>
??當然,這里還有其他的方案。
5、merge
后沒有 commit
,但是想要終止 merge
,可以采取如下方案
git merge --abort
七、拉取指定分支的指定文件到當前分支
??采用 checkout
命令,--patch
參數表示補丁,而不是直接替換整個文件
git checkout --patch <指定某個分支名> <目標分支的指定文件或者文件夾名稱>
八、列出兩個分支的差異文件列表:
??采用命令 diff
進行差異比較,加上參數 stat
可以只列出有差異的文件列表。命令如下所示:
git diff <分支1> <分支2> --stat
y - 存儲這個
hunk
n - 不存儲這個hunk
q - 離開,不存儲這個hunk
和其他hunk
a - 存儲這個hunk
和這個文件后面的hunk
d - 不存儲這個hunk
和這個文件后面的hunk
g - 選擇一個hunk
/ - 通過正則查找hunk
j - 不確定是否存儲這個hunk
,看下一個不確定的hunk
J - 不確定是否存儲這個hunk
,看下一個hunk
k - 不確定是否存儲這個hunk
,看上一個不確定的hunk
K -不確定是否存儲這個hunk
,看上一個hunk
s - 把當前的hunk
分成更小的hunks
e - 手動編輯當前的hunk
? - 輸出幫助信息
九、刪除分支
# 刪除本地分支
Git branch -dlocalBranchName
# 刪除遠程分支
Git push origin --deleteremoteBranchName
十、重命名分支
??在當前分支時
git branch -m new_branch_name
??1、當不在當前分支時
git branch -m old_branch_name new_branch_name
十一、回滾
# 查看提交的歷史
git log
# 如果嫌上面的輸出信息過多可以使用這條(只輸出版本號)git log --pretty=oneline # 回到上個版本
git reset --hard HEAD^
# 回到上上個版本
git reset --hard HEAD^^
# 本地分支回滾到指定版本
git reset --hard <commit ID號>
# 強制推送到遠程分支
git push -f origin <branch name>
# 強制推送到指定分支,這里指定的版本之后的提交記錄將會移除。
十二、commit
后但是沒有 push
,想要撤回:
??使用 git log
查看 git
操作日志,如下:
在這個例子中,a123456 是要取消的提交,b123456 是要回退到的提交。
撤回 commit
但不取消暫存區的修改內容:軟回退
git reset --soft b123456
??撤回的同時將本地修改也刪除掉:硬回退
git reset --hard b123456
??如果已經 push 到遠程分支了,那么需要將當前的撤回推送到遠程分支一下,命令如下:
git push -f