这些 git 高级命令你知道几个
大家好,我是 dom 哥。今天給大家分享幾個 git 的高級應用。
git 是目前最流行的版本控制工具。git 玩的 6 不 6,輕則影響自己的開發幸福指數 ??,重則影響下班時間 ??。本文介紹一些日常開發中常遇到的場景以及相關的 git 命令。
接下來就以前端流行的 mvvm 框架 vue 項目為例進行演示 ??。
查看 git log 統計信息 ??
誰才是真正的卷王?這個命令給你答案!
git shortlog -sn
左側是 commit 數量,右側是提交者 name
自定義 git log 輸出樣式 ??
這是素顏的 git log 樣子。一個 commit 獨占 7 行,一頁也展示不了幾個 commit 啊~
而且家人們誰懂啊,它這個日期格式把我看裂開了呀 Tue Dec 26 11:57:50 2023 +0800
先把日期格式調整的舒服一些:
git config --global log.date format:"%Y-%m-%d %X"
設置完之后日期格式是這樣紙滴 2023-12-26 11:57:50
再來一串魔法設置 git log 輸出的信息格式:
git config --global format.pretty "%C(auto)%h %s %C(italic dim white)%cn<%ce>[%cd]%Creset%C(auto)%d%Creset%n"
這是化妝后 git log 的樣子。一行一個 commit,簡直不要太清爽~
偷偷撤銷提交記錄的某次 commit ??
常在河邊走,哪有不濕鞋。誰還沒有提交過一個不該提交的 commit 呢,還 push 到遠端了,怎么辦?怎么辦?
git reset ?這會把某個 commit 之后的提交全干掉啊,不行,不行??
用下面這個命令,就可以悄無聲息的把某個 commit 摘掉了????
git rebase -i --onto commit-ish^ commit-ish
但事情沒那么簡單。此時只是本地的提交記錄被糾正了,遠端的還沒改變呢。你需要 git push!然而在 rebase 之后 git push,一定會被 reject,會報類似下面的錯誤信息
千萬別 git pull 哦!!!因為此時當前分支的本地和遠端已經產生了分歧,接下來就是決定誰覆蓋誰的時刻。
如果 git pull,那就是遠端覆蓋本地,上面的 rebase 操作白干!
如果想本地覆蓋遠端,只能 git push --force,加上 --force 強推到遠端!推上去遠端提交記錄就和本地一樣啦。
但是,實際操作起來肯定不會很順利,可能有一長串的 commit 需要確認,可能會出現大量的沖突文件,可能需要其他協作者刪掉本地的分支重新遷出。
刪除遠程分支 ??
刪除有風險,操作需謹慎。千萬別手抖!
git push -d origin <branch>
批量刪除本地分支和遠端分支
git branch | grep 'dombro_' | xargs git push -d origin
git branch | grep 'dombro_' | xargs git branch -d
當前分支名稱 ??
git rev-parse --abbrev-ref HEAD
這通常在 shell 腳本里會用到!
清理已刪除的本地遠程引用 ???
git fetch -p
為什么要清理?我也不曉得??
查看一個文件都哪些人編輯過 ??
git log --pretty=format:"%an" <file> | sort -u
為什么要看這個,就是想看看??
查看某個文件每一行都是誰寫的 ??
git blame --date=format:"[%Y-%m-%d %X]" <file>
這個太重要啦,bug來了想把鍋甩出去,得第一時間找到 TMD 這行代碼誰寫的。
但,正經人誰在命令行里看 blame 啊,這里就不得不推薦一個 vscode 插件 GitLens:
有了它,在 vscode 里 blame 簡直不要太方便,再也不用愁找這行代碼到底誰寫的啦
某個文件沖突太多,想直接用線上的 ??
git pull # 先拉最新的代碼
git checkout origin/master -- <file>
話說你用的 git 沖突解決工具是什么?我先說 ???♂?,webstorm 自帶的 git 工具,比 vscode 的好用多了。
什么!把 .vscode,.idea,.DS_Store 推送上去了!??
git rm --cached -r .vscode/ .idea/ .DS_Store/
別忘了 remove 完之后 commit 哦~
給當前項目單獨設置 user name 和 email ??
git config user.name <name>
git config user.email <email>
可能我想在 github 上的項目的提交者信息是 DOM哥<dombro@qq.com>,但公司內的項目用 姓名<公司@郵箱.com> 會比較好一點。
git config 設置完之后信息會存在項目根目錄 .git/config 中,跟隨項目。實現不同項目的提交者信息各不相同 ??。
總結
以上是生活随笔為你收集整理的这些 git 高级命令你知道几个的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 探索高峰:《重返未来1999》登山者栖所
- 下一篇: 少女前线2追放公测兑换码怎么获得?少女前