git命令的奇技淫巧

2021-07-25 18:53:17 字數 2098 閱讀 7912

1.git忽略規則,.gitignore不生效的解決辦法

在專案開發過程中,突然心血來潮想把某些目錄或檔案加入忽略規則,在gitignore檔案中定義後發現並未生效,原因是.gitignore只能忽略那些原來沒有被track的檔案,如果某些檔案已經被納入了版本管理中,則修改.gitignore是無效的。那麼解決方法就是先把本地快取刪除(改變成未track狀態),然後再提交:

git rm -r --cached . 

git add .

git commit -m  "update .gitignore"

2.刪除遠端分支,並且及時清理本地分支

刪除遠端分支的命令: git push origin :feature_***, 就是在push的分支名字前面加 冒號。

而刪除完遠端分支之後,git branch -a還能看到遠端有該分支, 這裡可以輸入 git fetch 及時更新檢視的遠端倉庫的資訊。

本地分支怎麼做到及時清理?

辦法有兩個,我習慣的辦法是,git branch -d ***x(分支名字), 另外一種辦法是, git remote prune origin , 這種方式我沒仔細研究過。

?3. 回滾**

將**提交到了遠端的倉庫,但是突然想把這幾次的提交回滾到某個版本。

git reset --hard 某次提交的id,這個時候本地**是會回滾到這個提交的階段,然後

git push origin 《分支名字》  -f,注意這裡的-f,這個f引數可以讓你強制提交遠端**,忽略落後於遠端分支幾次commit的情況

使用 git push origin 《分支名字》 -f ,這個有可能會返回permission 拒絕的錯誤, 原因是多數master分支都是被protected的狀態,需要到**託管平台,修改一下。

4. 刪除本地除了master分支之外的其他分支

主要命令

git branch | grep -v "master" | xargs git branch -d

注意點 :

1.執行前需要切換到master分支執行

2.當前分支未做修改

5. 簡寫

git checkout -brach ***  比如說我們要新建乙個分支,並且跳到這個分支上就要使用這個命令。

我們可以簡寫成git ck -b ***   

ck = checkout

br = branch

將這兩個命令配置在 ~/.gitconfig的 [alias]下即可。如下圖

6. 推送多個倉庫

場景是這樣的,我有乙個專案,想要推送到github的同時,也想將**推送到碼雲的git中。

方法有兩種:

第一種簡單粗暴,直接git remote add origin2 [email protected]:csucoderlee/my-awesome-project.git 直接新增另外乙個遠端源即可,這樣每次都需要git push origin master / git push origin2 master 向兩個**倉庫推送**,可能有的人覺得這樣每次都要向不同的倉庫去推送比較麻煩,可能倉庫位址多了的話,浪費時間,那就看第二種。

第二種git remote set-url --add origin ,配置多個遠端的位址,這樣每次只要提交一次 git push origin master 命令即可,就可以將**分別推送到不同的倉庫中,但是要注意的一點是,這樣的方式git pull origin master**,會有問題,只能從配置的第乙個位址中去拉去**,也就是fetch的url對應的就是第乙個配置的遠端倉庫,其他的都只是push倉庫。

可以使用git remote -v ,就看到第乙個位址後面(fetch)其他的都是(push)。

所以個人推薦第一種

7. 修改分支名字

先改本地分支的名字

git branch -m oldbranchname newbranchname

刪除遠端舊的分支

git push origin :oldbranchname

推送改過名字的本地分支到遠端

git push origin newbranchname

git 奇技淫巧

例如 1.0.0 git tag a 1.0.0 m 1.0.0 版本的備註資訊.複製 git push origin tags 複製 例如 1.0.0 git tag d 1.0.0 複製 刪除遠端標籤需要先刪除本地標籤,再執行下面的命令 git push origin refs tags 1.0...

Git的奇技淫巧

git常用命令集合,fork於tips專案 git是乙個 分布式版本管理工具 簡單的理解版本管理工具 大家在寫東西的時候都用過 回撤 這個功能,但是回撤只能回撤幾步,假如想要找回我三天之前的修改,光用 回撤 是找不回來的。而 版本管理工具 能記錄每次的修改,只要提交到版本倉庫,你就可以找到之前任何時...

c 的奇技淫巧

關於陣列 數論演算法技巧 stl其他 while scanf d d n,m eof 等價於 while scanf d d n,m 2 前者eof為檔案結束符,較保險 後者 後的數字為輸入的變數的個數 不能只寫while scanf d d n,m 這樣無法結束讀入 wwq大佬教的,希望我不要和他...