2012年12月9日 星期日

[git][reset] 回覆上一個動作

git reset HEAD^ --soft 取消剛剛的commit但保留修改過的檔案

  1. 修改一份.php檔加上隨意字串,例如:"QQQ"
  2. git commit -a -m "edited"
  3. 我後悔了,我要回復上一動,但又希望剛剛輸入的"QQQ"還在
    git reset HEAD^ --soft
  4. git log 查看commit紀錄,剛剛commit的真的不見了,且"QQQ"也還在

git reset HEAD^ --hard 取消剛剛的 commit,回到再上一次 commit的 乾淨狀態

兩種情形:

  • 接續剛剛上面的情形,假如已經git reset HEAD^ --soft後,但又後悔不想保留"QQQ":
    輸入:git reset
    HEAD --hard  回覆到最近的一次commit,並且已修改的檔案還原到原始狀態,
    注意:如果你想還原全部修改過的檔案才使用此操作
  • 正常情況:
  1. 修改一份.php檔加上隨意字串,例如:"QQQ"
  2. git commit -a -m "edited"
  3. 我後悔了,我要回復上一動,但希望還原到上一個commit的原始狀態,也就是修改過的資料不保留
    輸入:git reset HEAD^ --hard
  4. git log 查看commit紀錄,剛剛commit不但不見了,也還原此commit的原始資料狀態
可以參考另外這篇有指令的集合:http://gogojimmy.net/2012/02/2...


$ git reset HEAD <file>:將剛剛add的檔案還原成untracked(unstage)
  1. 新增ddd.txt   (形態為unstracked)
  2. git add ddd.txt (形態變為 Changed to be commit)(stage)
  3. git reset HEAD ddd.txt (形態變為unstracked)








沒有留言:

張貼留言