Git學習筆記

2021-06-16 16:37:09 字數 2317 閱讀 6039

git stash

git stash list: 顯示git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。

git stash clear: 清空git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。

關於git stash的詳細解釋,適用場合,這裡做乙個說明:

使用git的時候,我們往往使用branch解決任務切換問題,例如,我們往往會建乙個自己的分支去修改和除錯**, 如果別人或者自己發現原有的分支上有個不得不修改的bug,我們往往會把完成一半的** commit提交到本地倉庫,然後切換分支去修改bug,改好之後再切換回來。這樣的話往往log上會有大量不必要的記錄。其實如果我們不想提交完成一半或者不完善的**,但是卻不得不去修改乙個緊急bug,那麼使用

'git stash

'就可以將你當前未提交到本地(和伺服器)的**推入到git的棧中,這時候你的工作區間和上一次提交的內容是完全一樣的,所以你可以放心的修 bug,等到修完bug,提交到伺服器上後,再使用''

將以前一半的工作應用回來。也許有的人會說,那我可不可以多次將未提交的**壓入到棧中?答案是可以的。當你多次使用

'git stash

'命令後,你的棧裡將充滿了未提交的**,這時候你會對將哪個版本應用回來有些困惑,

'git stash list

'命令可以將當前的git棧資訊列印出來,你只需要將找到對應的版本號,例如使用''

就可以將你指定版本號為stash@的工作取出來,當你將所有的棧都應用回來的時候,可以使用

'git stash clear

'來將棧清空。

在這裡順便提下git format

-patch 

-n , n是具體某個數字, 例如 

'git format-patch -1

'這時便會根據log生成乙個對應的補丁,如果 

'git format-patch -2

'那麼便會生成2個補丁,當然前提是你的log上有至少有兩個記錄。

使用場合:當前工作區內容已被修改,但是並未完成。這時boss來了,說前面的分支上面有乙個bug,需要立即修復。可是我又不想提交目前的修改,因為修改沒有完成。但是,不提交的話,又沒有辦法checkout到前面的分支。此時用git stash就相當於備份工作區了。然後在checkout過去修改,就能夠達到儲存當前工作區,並及時恢復的作用。

git reset

修復未提交檔案中的錯誤( 重置)

如果你現 在的工作目錄(work tree) 裡搞的一團亂麻,  但是你現 在還沒有把它們 提交;  你可以通過下面的命令, 讓工作目錄回到上次提交時的狀態(last committed state):

$ git reset --hard head

如果你只是要恢復乙個檔案, 如"hello.rb",  你就要使用git checkout

$ git checkout -- hello.rb 

這條命令把hello.rb 從head 中籤 出並且把它恢復成未修改時的樣子.

修復已提交檔案中的錯誤

如果你已經做了乙個提交(commit), 但是你馬上後悔了,  這裡有兩種截然不同的方法去處理這個問題:

1 創 建乙個新的提交(commit),  在新的提交裡撤消老的提交所作的修改.  這種作法在你已經把** 發布的情況下十分正確.

2 你也可以去修改你的老提交(old commit).  但是如果你已經把** 發布了, 那麼千萬別這麼做; git 不會處理項 目的歷史會改變的情況, 如果乙個分支的歷史被改變了那以後就不能正常的合併.

建立新提交來修復錯誤

建立乙個新的,撤消(revert)了前期修改的提交(commit) 是很容易的;  只要把出錯 的提交(commit) 的名字(reference) 做為引數傳給命令: git revert 就可以了;  下面這條命令就演示了如何撤消最近的乙個提交:

$ git revert head

這樣就建立了乙個撤消了上次提交(head) 的新提交,  你就有機會來修改新提交(new commit) 裡的提交注釋資訊.

修改提交來修復錯誤

如果你剛剛 做了某個提交(commit),  但是你又想馬上修改這個提交; git commit 現 在支援乙個叫--amend 的引數,它能讓 你修改剛 才的這個提交(head commit).  這項 機制能讓你在** 發布前, 新增一些新的檔案或是修改你的提交注釋(commit message).

如果你在老提交(older commit) 裡發現 乙個錯誤,  但是現 在還沒有發布到** 伺服器上.  你可以使用git rebase 命令的互動模式, "git rebase -i" 會提示你在編輯 中做相關 的修改.  這樣其實就是讓 你在rebase 的過程來 修改提交.

git 學習筆記

1 git checkout master 切換分支 2 git checkout b xx 新建分支,同時切換到該分支 3 dev 4 git add a 將變動檔案,提交到index 5 git commit m 將 暫存區 檔案,加入到版本控制中。6 git checkout master 7...

Git 學習筆記

顯示版本庫.git所在的目錄 git rev parse git dir 顯示工作區的根目錄 git rev parse show toplevel 相對於工作區根目錄的相對目錄 git rev parse show prefix git config 命令各引數的區別 git config e 版...

Git學習筆記

一,初始化git倉庫並提交專案 1,取得專案的 git 倉庫 有兩種取得 git 專案倉庫的方法。第一種是在現存的目錄下,通過匯入所有檔案來建立新的 git 倉庫。第二種是從已有的 git 倉庫轉殖出乙個新的映象倉庫來。要對現有的某個專案開始用 git 管理,只需到此專案所在的目錄,執行 git i...