2015-08-08 16 views
-1

我有一個只有一個提交的Git倉庫。我想將此提交移到暫存區域。已知的命令是git reset --soft。所以我打這樣的事情:當只有一個提交存在時,如何將提交移動到暫存區域?

$ git --version 
git version 2.3.2 (Apple Git-55) 
$ git log 
commit 2d70c0de8824967378da348afa7be6eca9839dcc 
Author: gtchoi <[email protected]> 
Date: Sat Aug 8 18:54:25 2015 +0900 
    the first commit. 
$ git reset --soft HEAD~1 
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree. 
$ git reset --soft HEAD^ 
fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree. 
$ git reset --soft 2d70c0de8824967378da348afa7be6eca9839dcc 
$ git log 
commit 2d70c0de8824967378da348afa7be6eca9839dcc 
Author: gtchoi <[email protected]> 
Date: Sat Aug 8 18:54:25 2015 +0900 

    the first commit. 

參數HEAD~1HEAD^導致致命錯誤並鍵入git reset <SHA-1 of commit>和第一承諾不會被刪除時,我有沒有結果。這有什麼問題?這個錯誤?

+0

我尊重你的職業生涯,作爲一個Git外科醫生。這是我的git倉庫:https://github.com/gtchoi/guestbook_2015。你可以試試這個 – inherithandle

+0

如果只有一個提交,你想重置它。爲什麼不只是創建一個新的回購內容?只要放下'。git'目錄並再次執行'git init' – Vishwanath

+0

根據我的理解,你所要求的是不可能的,把git repo當作時間線來對待,你試着回到不存在的時間。只需創建新的時間表。 – Vishwanath

回答

0

在Git中,HEAD是對最近提交(指向最近結算出的提交對象的指針)的引用。所以在你的情況下,HEAD指的是你的唯一提交。

通過Git的語法,HEAD ^(或HEAD_1)引用提交對象,它是當前分支中完成的第二次提交。在你的情況下,這並不存在。因此預計錯誤,而不是一個錯誤。

現在,來到你的問題,讓我們看看我們如何能夠挽救局面:

git的復位--soft

這隻會重置HEAD指針。這不會刪除提交,也不會中斷分支和提交對象之間的連接。

而不是刪除,你可以恢復運行的承諾:

混帳恢復

正如預期的那樣,這隻會增加一個提交恢復的變化。很可能這不是你想要的。

做你想要什麼的簡單(乾淨)的方式是:

請在您的項目目錄,你可以在已經錯過了第一次提交的任何更改。然後將所有這些更改添加到暫存區域。

混帳添加--all

並運行:

git的承諾--amend -m 「第一承諾」

不是你更換了承諾歷史上的對象。見運行:

git的日誌--oneline

相關問題