Git學習筆記

2022-10-11 08:36:08 字數 3159 閱讀 3011

雖然一直在用git,但是自從開始用jetbrains家的ide以後就沒碰過命令列版本的git了(圖形化介面害人不淺)

基礎知識

the woking directory:與本地檔案系統同步

staging index:即被git add加入的暫存區

commit history:git commit後加入的版本庫

head指標:在commit history中指向當前工作位置

具體命令

branch

git branch列出所有分支,git branch

基於head新建分支,-d用於刪除已合併的分支,-d強制刪除分支,m重新命名分支。

status

status 顯示的是目前需要add(圖中為紅色)和需要commit(綠色)的檔案,這一命令同時給出檔案目前的狀態

log 顯示當前分支的版本歷史,--branches=*檢視所有分支的歷史。可以增加各種選項。--oneline顯示簡介版本,--graph繪製拓撲圖更直觀顯示版本變化,-n限制顯示個數,--author等可以查詢特定限制的修改。

1.切換分支

2.使用git checkout -b <new-branch><existing-branch>可以基於已有分支新建並切換到新分支,<existing-branch>預設為當前head。

3.切換到某次commit的狀態,可以檢視舊版本的**。但此時處於"detached head"狀態,此時所進行的修改與整個開發工作完全分離。可以通過git switch -c建立新branch來儲存修改,或是直接git switch -來撤銷修改(好像也可以用git checkout -b?不知道有啥區別)。

具體實現過程是用commit history中的檔案更新staging index,再更新woking directory。因此可以使用git checkout .來放棄未add的更改。

通過乙個新的提交來消除某次提交產生的影響,原有的提交會保留。

使用git revert head

將head指標和branch的指標指向指定的commit。--soft到此為止,--mixed還會修改staging index,即當前的檔案修改不會丟失,--hard額外再修改woking directory。預設為--mixed。(所以--soft是處理啥需求的啊

reset相當於丟棄了所選commit之後的commit,因此只能在push之前執行。

可以利用git reset來將特定檔案移出staging index,或直接使用git reset重置staging index。

rm

--cached主要用於刪除staging index中的檔案,預設則會同時刪除staging index和woking directory下的檔案。如果staging index或woking directory中要刪除的檔案與head中的檔案不同,則需要使用-f。同樣地,-r用於刪除目錄。

remote

管理本地儲存的遠端庫條目。-v顯示所有遠端庫,addrmrename增、刪、改遠端庫條目

將整個分支移動到另乙個分支,通過將原始分支中的每個提交建立新的提交來實現(如下圖),可以保證提交歷史的簡潔性和線性。-i可以讓分支的歷史記錄更加符合需求。

建立乙個全新的提交來合併兩個分支,不會改變已有的提交歷史,但是會引入乙個新的提交,汙染了歷史記錄。

git push --force

強制更改遠端分支使其與本地分支同步,只有當沒有其他人在使用這一遠端分支時才可以考慮使用,可以有效清除黑歷史

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

Git 學習筆記

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