2017-01-14 10 views
1

私は自分のリポジトリをテストするために多くのコミットをしました。今私はデータ損失なしで私の履歴を修正したい。私の歴史は次のようになります。データを失うことなくgit commit historyを修正するには?

A -> B -> C -> TEST D -> TEST E 

しかし、それはこのようになります。

A -> B -> C (C + TEST D + TEST E) 

私はそれをどのように行うことができますか? rebaseまたはstashは私を助けますか?

UPD [OK]を、これは私の歴史をコミットしている:

commit 9f2c2e66d344aa27a5e681eb64c84738f2cd1d49 
Author: babobka <[email protected]> 
Date: Sat Jan 14 23:35:36 2017 +0300 

    Fixed files 

commit 9ab55a4e4352daa9e5c27e9243d79a8c14dd6551 
Merge: b52872c 856ee3f 
Author: bbk <[email protected]> 
Date: Sat Jan 14 23:29:16 2017 +0300 

    Merged in develop (pull request #1) 

    New tests. New project structure. FindBugs plugin. 

commit 856ee3fb4725564c1c5c976eacadb6e21aa2b937 
Author: babobka <[email protected]> 
Date: Sat Jan 14 23:24:02 2017 +0300 

    New tests. New project structure. FindBugs plugin. 

commit b52872c300bde67154cec3b732755a47f9ff76cd 
Author: babobka <[email protected]> 
Date: Mon Jan 9 23:36:02 2017 +0300 

    Very big refactor.Can not remember what was done. 

commit 0b330267150db40fb814bfc21387762d80a99e44 
Author: babobka <[email protected]> 
Date: Tue Jan 3 01:13:05 2017 +0300 

    First commit 

私はgit rebase -i 9ab55a4e4352daa9e5c27e9243d79a8c14dd6551 -m 'Rebasing'を作ったが、私はすべての変更を見ることができません。それと同じ歴史。

+3

私の最後のXがGitを使用してコミットする可能性があります(http://stackoverflow.com/questions/5189560/squash-my-last-x-commits-together-using-git) – acm

+0

私が理解していることはあなたは最後のいくつかのコミットを1つに「スカッシュ」したいですか?これが役立つかどうかを確認してください。http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html – sinanspd

+0

リベースインタラクティブモードの設定を編集していますか?あなたはいくつかの言葉をスカッシュに変えていますか? – oklas

答えて

1

あなたはrebaseコマンドの対話モードHEAD〜2

git rebase -i HEAD~2 

使用することができます - 2あなたが運転にenvolveする必要がコミットのnuberです。 対話モードでは、簡単なヘルプが表示されます。 togatherに参加する必要があるとコミットしたマークsquash(これは、pick wordと置き換えられます)。

ヒント:初めてブランチを作成し、別のブラシで行うほうがいいです。分離されたブランチでは、結果が確認でき、リベースがどのように働いているかを理解できます。何らかのトラブルや予期しない動作があった場合、チェックアウト元のブランチでロールバックするのは簡単です。

関連する問題