GIT學習筆記(5)

2021-08-10 02:25:58 字數 2388 閱讀 9698

refs/heads/master 是乙個游標,當有新的提交發生時,master分支會指向新的commit,使用git reset將master(游標)指向任意乙個commit id

git

reset--

hard

head^#-

-hard引數會破壞工作區未提交的改動。

(1)通過git log --graph --oneline來檢視所有提交的id

(2)git reset --hard a810291執行命令將git重置到這一次提交

(3)重置後發現工作區檔案也變成了這次提交的狀態

使用git reset命令會徹底的丟棄重置點之後的所有提交。

只能通過commit id來恢復這些提交

帶有工作區的版本庫都提供分支日誌功能。

用以下命令檢視該引數

git config core.logallrefupdates

#執行後會顯示true

用tail命令檢視master分支日誌

tail 5

.git/logs/refs/heads/master

會發現logs下的這個master檔案記錄了master分支的變遷,最新的改變會追加在這個檔案的末尾,通過git reset –hard恢復重置以後,通過git log --oneline來檢視提交歷史,會發現通過reset丟失的commit歷史也回來了。

通過git reflog的子命令show也可以檢視logs中的master檔案

git reflog show master,git reflog會給每個commit id提供乙個好記得名稱,格式為@,可以用git reset到這一名稱直接重置到這乙個commit。

git reset有兩種形式

這一種commit不會改變master指向,也不會改變工作區,而是用指定commit的檔案paths來替換暫存區的檔案

這一種用法會重置引用,根據引數不同,可以對暫存區或工作區進行重置。

使用git reset --hard

1.改變master指向。將完整的commit id賦予master游標

2.改變暫存區。master游標用該commit id指向的內容改變暫存區

3.改變工作區。用objects中的檔案覆蓋工作區檔案。操作後,工作區與暫存區與head指向的目錄樹相同。

使用git reset --soft

執行--hard引數的第一步,而不改變暫存區和工作區

使用mixed(預設)

執行--hard引數的1、2步,而不改變工作區。

git reset:相當於git reset --mixedgit reset --mixed head,用head指向的目錄重置暫存區。

git reset --soft head^:不改變工作區與暫存區,maser的引用回滾一次。

git commit --amendgit reset --soft

此前用git commit --amend修改過使用者名稱和email,相當於執行了如下命令

git reset --soft head^

git commit -e -f .git/commit_editing

原本指向.git/refs/head/master的.git/head檔案內容變成了乙個具體的commit,此時可以

此時,git會進入分離頭指標狀態,在此之後的提交不會併入master分支。除非執行git checkout master.

在執行git checkout master後,分離頭指標模式下的提交和工作區都會變為master分割槽的內容。可以通過git merge命令合併master和head

執行git merge的具體操作如下

(1)執行git branch -v ,檢視輸出,確認處於master分支。

(2)執行合併操作,將「分離頭指標」狀態下的提交合併到當前分支

git merge ac818291c
此時工作區會發生改變。

(3)檢視日誌git log --graph --pretty=oneline

會發現日誌中間出現開發分支,並在最終進行了合併。最新提交將有兩個父提交

git 學習筆記5 rm mv,undo

刪除檔案 rm unix刪除檔案 git rm git刪除檔案 git rm f git強制刪除檔案 git rm git刪除所有臨時檔案移動檔案,或檔案重新命名 git mv file from file to對於提交不完全,或者想要修改注釋的 git commit amend 重新提交對於處於暫...

Git學習筆記

git stash git stash list 顯示git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。git stash clear 清空git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。關於git stash的詳細解釋,適用場合,這裡做乙個說明 使用git...

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...