2017-10-31 7 views
1

これは珍しいgitの流れだと言ってこれを前に説明しましょう。私は道に沿ってコード例を示す長いreadmeのチュートリアルを書いています。Git:戻ると履歴を変更するための最適なフロー

ユーザーはなど、次はコミットチェックアウト、早期より多くのチュートリアルに従う、私はその時点で構築していたプロジェクトの状態をコミットしてご覧くださいチェックアウトでき

私は本当にのgitでこれをやりたいですチュートリアル(タイプミスまたはメソッド)の初めに何かを変更したい場合、私は戻ってそれを後にコミットする多くの履歴を変更する必要があるので、私は問題があります。

私がやろうとしていることを達成する簡単な方法はありますか?

+0

以前のコミットを1つ以上書き直すと、以前にそのブランチをチェックアウトしたユーザーが自分のローカルブランチのコピーをもう一度チェックアウトしてください。これは受け入れやすいワークフローですか? –

+1

@TimBiegeleisen私はこの投稿が「ワークフローのこの部分をどうやって作るのか」ではなく、「私の一回限りのチュートリアルのために特定のgitヒストリを構築するにはどうすればよいのですか? –

+0

@AndrewShepherdいいえ、私は同意しません。 OPは、他のユーザーが現在ブランチのバージョンで作業している間に、誤植などを修正するために履歴を変更して変更したいと強く意味します。 –

答えて

1

一般的な回避策は、ユーザーが従いたいステップごとにブランチを作成することです。

デフォルトでは、ブランチは既存のコミットを指します(master)。

x--x--x--x--x--x--x (master) 
    |  | 
    (step1) (step2) 

しかし、あなたの代わりに再書き込みのため、これらのコミットのいずれかを修正する必要があるのは、(他のすべてのそれ以降のコミットの歴史/ SHA1を変更する)コミットと、あなたは新しいがコミットさせる、そのブランチをチェックアウトするでしょう。

x--x--x--x--x--x--x (master) 
    |  | 
    X  (step2) 
(step1) 

その枝を使用してすべてのユーザーは、ちょうどそのステップの更新バージョンを取得するにはgitのプルを行う必要があります。

git cherry-pickこれは、新しいコミットmaster(およびこの後の他のブランチ)にコミットすることができます。
マージが必要ないと思います(履歴グラフを不必要に複雑にしないため)

+0

これは良いアイデアのようですが、ステップ2のブランチを作成した後にステップ1(コミットを修正または更新する)でコミットした場合はどうなりますか?ステップ1からのビルドから、ステップ2への変更をどのように推進するのですか? – deltaskelta

+1

@deltaskeltaあなたは新しいコミットだけでなく他のブランチにチェリーピックすることができます。 – VonC

+0

ああ私はチェリーピッキングについて知りませんでした。これはちょうど私が探していたもののように見えます – deltaskelta

関連する問題