2014-03-12 45 views
0

我有一個我經常碰到的git問題。在Git中繼續使用舊的提交

可以說我有一個Git倉庫,我已經做了幾次提交:

[C1] --> [C2] --> [C3] 

現在,我開始一個新事物/功能 - 和我的工作就可以了,而 - 創造更多的承諾

[C1] --> [C2] --> [C3] --> [C4] --> [C5] 

過了一段時間,我開始意識到我在這個方向上所做的一切都是錯誤的(所有提交從[C4]開始)。

現在我想繼續我的項目從提交3 - 造成這樣的事情:

      +-------------------+ 
         /     \ 
[C1] --> [C2] --> [C3] +-> [C4] --> [C5]  +--> [C6] --> [C7] --> ... 

我不希望鬆散[C4]和進展[C5],畢竟其一個版本控制系統,也許我寫的東西稍後會派上用場。 (也只是刪除它會更像是浪費時間)

我不知道這是否可行,如果是,如果這將被視爲一種良好做法。 所以我也會打開提示如何做到更好或不同。

如果可能,我想阻止創建新分支 - 我是我的項目的唯一提交者,並且歷史大部分時間都是非常線性的,所以我認爲複雜的分支會有點矯枉過正(但是因爲我說 - 我只有一點關於混帳的知識)。

+1

只需使用一個分支 - 它非常簡單,它完全映射到您嘗試解決的問題。 –

+1

爲什麼不使用分支?只有當你確信你的變化時才合併分支 –

+0

但是,如果我理解正確,我會在做出C4和C5之前開始分支。但是如果我已經承諾這些,然後意識到我不想要這些? – Mikescher

回答

1

如果你沒有使用GUI應用程序的問題,從Atlassian的嘗試SourceTree
它提供了反轉代碼更改的選項。即使您改變它們,您的所有提交也將保持不變。

+1

目前我正在使用SmartGit - 這是一個專屬於SourceTree的功能,或者我可以在smartGit中做同樣的功能嗎? – Mikescher

+0

這可能有助於[SmartGit-Revert](http://www.syntevo.com/smartgithg/documentation/5/show?page=commands-branch#revert) –

+0

是的,我認爲這就是我所搜索的。謝謝 – Mikescher

1

只是做一個分支,當你意識到你需要回到以前的點

git branch saved-C5 

然後

git reset --hard C3 

(可能跟一個git乾淨-f -d刪除新文件和C4和C5添加的目錄)

你的主人現在在C3,你可以繼續在那裏工作。