Git undo 操做

相比傳統的版本管理工具,git 的 undo 操做也不是很簡單明瞭,本文嘗試總結經常使用的 undo 操做。git

從新提交工具

應該避免考慮不周全的提交,但這太難了。所以Git 專門提供了一個命令來彌補粗心的提交致使的問題。說白了就是讓你從新提交一次。spa

$ git commit --amend

這個命令會從新提交暫存區中的內容。所以你能夠從新考慮哪些文件須要提交,而且把此次提交用的comment準備好。指針

 

爲了更好的理解這個命令,咱們看看它是怎麼工做的。code

它至關於下面的兩條命令:blog

$ git reset --soft head^
$ git commit -e -F .git/COMMIT_EDITMSG

第一條命令讓頭指針指向上次的提交,而且不改變暫存區和工做區。it

第二條命令是從新提交,而且強制輸入提交說明。class

回滾暫存區中的變動版本管理

咱們但願每次提交都是一個相對完整的總體。因此不少時候是提交全部變動文件中的一部分。im

舉個簡單的例子,當前修改了兩個文件,但願把它們包含到不一樣的提交中。因此問題就來了,咱們習慣了使用

git add -u 或者 git add . 這樣的命令,一不留神就把全部的修改文件添加到了暫存區。

其實git已經很殷勤的告訴咱們該怎麼作了:

$ git reset head begin.txt

好了再用 git status 命令看看,begin.txt 此時已經離開了暫存區。

回滾工做區中的變動

這是一個很危險的操做,由於這真的會丟掉工做區中的變動,而且是找不回來的。在產生這個念頭時,必定要三思!至於具體的操做,Git 也爲咱們提供了詳細的指導:

$ git checkout -- begin.txt

再看看工做區,begin.txt 文件已經被回滾了。

相關文章
相關標籤/搜索