盘点Git的那些冷门玩法
其實(shí)也不是很冷門,只是要實(shí)現(xiàn)以下需求時(shí),筆者一時(shí)間竟然想不起來,還要借助搜索引擎,于是記錄一下,算是?備忘。希望對(duì)大家也有幫助。
強(qiáng)制覆蓋master分支
最近對(duì)?Spring Cloud YES[1]?進(jìn)行了升級(jí),由于改動(dòng)太多了,導(dǎo)致了大量的沖突,合并比較費(fèi)勁。于是想用開發(fā)分支強(qiáng)制覆蓋master分支,以下是步驟。
解決方案
1?切換到develop分支下,并保證本地已經(jīng)同步了遠(yuǎn)端develop的最新代碼。
git checkout develop git pull2?把本地的develop分支強(qiáng)制(-f)推送到遠(yuǎn)端master。
git?push?origin?develop:master?-f3?切換到舊分支master。
git checkout master4?下載遠(yuǎn)程倉(cāng)庫最新內(nèi)容,不做合并。
git fetch --all5?把HEAD指向master最新版本。
git reset --hard origin/master參考文檔
Git強(qiáng)制覆蓋master分支[2]
修改提交人信息
近日用公司電腦提交代碼到個(gè)人Git倉(cāng)庫(是的,阿里不禁GitHub,也不禁止用公司電腦提交私人倉(cāng)庫哦,只要不涉及公司商業(yè)機(jī)密即可,是不是更有來阿里的欲望了呢?如需內(nèi)推,前往:阿里內(nèi)推?查看詳情),忘記修改提交人信息了……于是導(dǎo)致提交信息都是個(gè)人公司郵箱等信息……
感覺這種信息比較敏感,所以想把提交記錄修改掉。
解決方案
以下是操作步驟,記錄一下,防止未來有類似需求時(shí)又到處搜索。
1?批量修改本地提交記錄:
git filter-branch -f --env-filter \"GIT_AUTHOR_NAME='要改成的提交人用戶名'; GIT_AUTHOR_EMAIL='要改成的提交人郵箱'; \GIT_COMMITTER_NAME='要修改的提交人用戶名'; GIT_COMMITTER_EMAIL='要修改的提交人郵箱';"2 push
git push -u -f搞定!
根本
要想從根本上解決問題,應(yīng)該養(yǎng)成習(xí)慣,在clone完項(xiàng)目后,就立馬為每個(gè)倉(cāng)庫設(shè)置提交人信息:
git config user.name "itmuch" git config user.email "eacdy0000@126.com"參考文檔
?git 修改已提交的某一次的郵箱和用戶信息[3]?git修改提交作者和郵箱[4]
刪除tag
前幾天要發(fā)布一個(gè)私人小項(xiàng)目,然而手誤,打錯(cuò)標(biāo)簽了,想要?jiǎng)h除。由于這種場(chǎng)景比較少,一時(shí)間竟然忘記怎么玩了……大寫的尷尬。記錄下:
解決方案
# 本地刪除 git tag -d [tag名稱] # 遠(yuǎn)程刪除 git?push?origin?:refs/tags/[tag名稱]示例:
git tag -d v1.0 git?push?origin?:refs/tags/v0.9???????參考文檔
操作標(biāo)簽[5]
git status?亂碼
筆者使用?Iterm2?,當(dāng)執(zhí)行?git status?如果文件名帶有中文,會(huì)出現(xiàn)亂碼,如下所示:
On branch master Your branch is up to date with 'origin/master'.Changes?not?staged?for?commit:(use "git add <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)modified:???"\345\276\205\345\217\221\345\270\203/git?status\344\271\261\347\240\201.md"???????解決方案
git config --global core.quotepath false此時(shí),再次執(zhí)行?git status?就會(huì)正常顯示啦:
On branch master Your branch is up to date with 'origin/master'.Changes?not?staged?for?commit:(use "git add <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)modified:???待發(fā)布/git?status亂碼.mdno changes added to commit (use "git add" and/or "git commit -a")參考文檔
當(dāng)git遇上中文亂碼[6]?,里面還有其他亂碼場(chǎng)景的解決方案。
合并兩個(gè)不相關(guān)的Git倉(cāng)庫
17年總結(jié)的:合并兩個(gè)不相關(guān)的Git倉(cāng)庫
使用GitLab Mirrors同步Git倉(cāng)庫
使用GitLab Mirrors同步Git倉(cāng)庫[7]
使用post receive hook同步Git倉(cāng)庫
使用post receive hook同步Git倉(cāng)庫[8]
總結(jié)
以上是生活随笔為你收集整理的盘点Git的那些冷门玩法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么要重写 hashcode 和 eq
- 下一篇: Elasticsearch 7.0 已经