Git穿梭時空

2021-08-06 03:43:42 字數 2446 閱讀 6542

在使用git的時候想把git add新增到暫存區的檔案撤出怎麼辦!或者想回到某個已經提交的版本怎麼辦,更甚者想把工作區的修改撤銷掉又該怎麼辦。這些想法就像穿梭時空一樣不可思議,但這在git裡都是可以實現的!

先說把git add新增到暫存區之後,怎麼把檔案怎麼撤出暫存區。可以使用git reset head 檔名命令把檔案從暫存區撤出。下面是git reset的具體用法。

git reset commit id命令會重置分支所指向的commit id,還可以根據引數不同可以對暫存區,工作區進行重置。

git reset --soft commit id:改變分支指向的commit id

git reset --mixed commit id(如果不帶引數預設就是–mixed): 改變分支指向的commit id然後替換暫存區,暫存區的內容與分支指向的目錄樹一樣

git reset head:使用head指向的目錄樹重置暫存區,工作區不會受影響,可以理解為把git add命令更新到暫存區的內容撤出暫存區。

git reset head 檔名:相當於把指定的檔案的改動撤出暫存區。

git reset --soft head^: 使分支回退到上乙個提交,暫存區和工作區不會被改變。

git reset head^:工作區不會被改變,暫存區和分支回退到上乙個提交的狀態。

git reset --hard head^: 工作區,暫存區,分支都會回退到上乙個提交。

git reset --hard:替換分支的引用指向,替換暫存區,暫存區指向與分支指向一樣,替換工作區,工作區內容與暫存區一致。

git reset --soft:替換分支的引用指向.

git reset --mixed(預設的): 替換分支的引用指向,暫存區指向與分支指向一樣,

git reset head:使暫存區指向與分支指向一樣,相當於用git add 新增到暫存區的檔案撤出來。

tips :所以你想修改上次提交的message可以使用下面這個命令

git commit --amend: 修改最近提交的訊息。

想把工作區的某個檔案的修改撤銷掉可以使用git checkout 檔名這個命令。下面是git checkout的具體用法。

git reset改變的是分支的指向!而git checkout改變的是head的指向!因此git checkout命令還可以切換分支。

git checkout 分支名:切換到指定的分支,工作區,暫存區,head的指向都指向指定分支所指向的目錄樹。

git checkout 檔名:用暫存區中的檔案覆蓋工作區中的檔案從而達到撤銷對檔案的修改。

git checkout branch 檔名:用branch所指向的目錄樹裡面的檔案替換工作區和暫存區中的檔案。

git checkout .:注意有個(.),這個命令會清空你對工作區所以的修改(前提是檔案處於modified狀態下)。想當於用暫存區的所以檔案直接覆蓋工作區!

在使用git reset --hard head^命令回到上乙個版本之後又後悔了怎麼辦。此時使用git log命令是只能看到當前分支之前的提交。那此時該怎麼辦! 可以是用git reflog

git reflog命令檢視的是.git/logs/下面的子檔案,這個檔案包括了分支的操作,commit操作,pull操作,push操作,checkout操作等等都記錄(包含commit id)這.git/logs/檔案下面對應的子檔案。(git reflog這個命令應該是能看到所以會產生commit id的操作記錄吧?

)tips: git reflog .git/logs/檔名可以看到具體的操作記錄,比如 git reflog master 檢視master分支上的操作記錄。

tips:.git/logs/下面的子檔案檔案裡面的內容與git reflog命令看到的內容是相反的,git reflog最近的操作在前面而檔案最近的操作在後面

《pro git》

《git權威指南》

Git 時空穿梭

這次玩一玩git的核心技能 時空穿梭 在quick start中我們了解到,git是乙個版本控制系統,那麼咱們就來控制一下版本。首先,看一下readme.md的版本有哪些。用git log命令檢視 git log readme.md輸出 commit 9624d8b969e4e0e36acd63ea...

Git 時光穿梭

1.git status 命令可以讓我們掌握倉庫當前狀態 2.git diff 檔名 顧名思義 檢視difference,可以得到檔案更改的詳細資訊 3.head指向的版本是當前版本,git 允許我們在版本之間穿梭,使用命令 git reset hard commit id 穿梭前可以檢視提交歷史,...

Git時光機穿梭

一.1.檢視倉庫當前狀態 git status 2.檢視具體修改的內容 git diff readme.txt 提交前再看下是否包含某檔案 git status 3.提交檔案分兩步add 和commit git add readme.txt git status git commit m add d...