Git的一些實用操作

2021-08-11 20:40:33 字數 3819 閱讀 3659

1.使用「git diff」來摺疊多行

用git diff經常會出現很多內容,導致很多內容被遮住了,讓人很是苦惱,幸運的是這裡有個解決方案。

如果你使用less作為預設的pager,只需要輸入-s,就可以保證不會被diff刷屏了。

或者,你也可以使用git config設定pager來達到同樣的效果:

為當前專案設定pager:

$ git config core.pager 『less -r』

再將pager設定的作用域設定為整個專案:

$ git config –global core.pager 『less -r』

2.設定全域性**

在某些網路環境下,你可能需要為git配置**,這很簡單,只需要一行命令就可以了:

3.clone某個特定分支

在某些大型專案中,或者只是圖方便,有時候你可能只希望clone某個分支,你可以這樣做:

mkdir br

anch

cdbranch

git init

git remote add -t br

anch

−for

igin

remote_repo

git checkout $branch

4.比較某個檔案和遠端分支上的區別

很簡單:

git diff localbranch remotebranch filepath

5.列出版本庫中所有已刪除的檔案

也許你是想將其恢復,因此需要仔細確認某些merge操作,無論如何,列出版本庫中所有已刪除的檔案會非常有幫助。你只需要這樣做:

git log –diff-filter=d –summary

如果你想將其恢復,參照這裡。

如果你不想知道是哪次commit中刪除的,只需要新增乙個grep delete。

git log –diff-filter=d –summary | grep delete

6.在版本庫所有版本中搜尋一條字串

往往你想要查詢某段**、某個函式、乙個常量、乙個檔案,但是卻找不到了。它被刪除了,什麼時候刪除的?這個小技巧能搜尋整個版本庫中git diff資訊,可能會花些時間,但是非常有用:

git rev-list –all | (

while read revision; do

git grep -f 『your search string』 $revision

done

)7.應用另外乙個(不相關的)本地版本庫中的patch

從另乙個版本庫中cherry-pick一條提交記錄,首先需要將那個版本庫作為乙個遠端版本庫新增進來,並fetch其變化,然後cherry-pick其提交記錄。

如果你追求速度,也可以使用這個未經優化的命令:

git –git-dir=../some_other_repo/.git format-patch -k -1 –stdout | git am -3 -k

8.從新的主幹中分出乙個新分支

有時候你會在better_brach上工作一段時間,並準備將其設為新的master,你會怎麼做?

這裡是stack overflow上提供的常規解決方案:

1.切換到better_brach分支:

git checkout better_branch

2.保留better_branch分支全部內容,但是記錄合併:

git merge –strategy=ours master

3.切回mater

git checkout master

4.快速合併

git merge better_branch

5.如果你想讓合併步驟變得更清晰,可以新增commit資訊。只需要修改下第二步:

git merge –strategy=ours –no-commit master

git commit # here add your custom message to the commit template

9.向分支提交乙個初始的空commit,保證完全復位

這樣會重寫歷史記錄,所以只能在未和任何人分享前做,否則將可能把同事者的檔案破壞。

1.建立乙個新的空分支,例如:newroot

git checkout –orphan newroot

git rm –cached -r .

git clean -f -d

2.建立空的commit

git commit –allow-empty -m 『[empty] initial commit』

3.重新傳送分支的全部內容

git rebase –onto newroot –root master

4.刪除臨時分支newroot

git branch -d newroot

現在master就已經包含了乙個空的root commit了。

10.清空乙個分支來做些不同的事

有時候你會想要從某個分支重新開始,或者打算保留一些邏輯上和主幹相關但是跟蹤另乙個跨職能方面的**,就像github專案的gh-pages。

但如果你只想重新開始某個分支,清空所有歷史記錄呢?

1.檢出(checkout)乙個分支:

git checkout -b branch_to_zero

2.跟上條一樣,先建立增加乙個初始的空commit,之後就可以通過重新設定來清空乙個分支。

3.使用hard重置分支到剛剛建立的初始commit:

git reset –hard initial_commit

11.如何修改乙個特定的commit?

當你想在推送前重做你最後的commit時,可以使用修改命令(git commit –amend)。如果你想修改的不是最後乙個commit呢?

這種情況下,你可以使用git rebase,例如,你想要修改bbc643cd commit,執行下面的命令:

$ git add

現在你就可以使用

$git commit –amend

來修改commit,之後使用

$ git rebase –continue

返回之前最新的commit。

12.如何隱藏多個已修改檔案中乙個?

git stash –keep-index命令可以用來隱藏上次commit中沒有add的東西,之後add想要提交的檔案並執行相應命令就可以了。

按照下面的提示,你可以把一條老的commit提交到多個變更集中:

互動地rebase最後一條好的commit:

git rebase -i last_good_commit

將某些變化標記為edit:

git reset head^

git add file1 file2 file3

新增相應的檔案:

git add file1 file2 file3

因此之前沒有新增的檔案:

git stash –keep-index

別忘了收尾:

git commit

git stash pop

有必要的話,重複第二步之後的步驟:

git rebase –continue

一些git實用操作

將倉庫中的改動同步到本地 在git bash中進入專案目錄下,使用git pull命令 本地有更新,上傳到github倉庫 1 先進入專案資料夾 通過命令 git init 把這個目錄變成git可以管理的倉庫 git init 2 把檔案新增到版本庫中,使用命令 git add 新增到暫存區裡面去,...

git的一些操作

轉殖新增 git clone 位址 github轉殖 下來 git add 新增修改的 git status 檢視狀態 git commit m 新增備註 git push 遠端推送 修改後提交 git pull 每次上傳 前都要拉 git add 新增修改的 git status 檢視狀態 git...

git的一些操作

建立資料夾 mkdir git test 建立git test 資料夾 建立檔案 echo 這是建立檔案裡面的內容 test.md 普通資料夾公升級為 初始化為git倉庫 git init ls a 檢視所有的 檢視檔案內容 cat test.md 新增到版本庫裡面 git add test.md ...