2017-02-21 6 views
0

私の質問はgitとそれを適切に使用する方法です。私の知識はとても基本的です。コミットされたファイルの古いバージョンの一部を新しいコミット済みバージョンのファイルに含めます

私は誤って自分のファイルのコードチャンクを削除したが、唯一のコミットとgithubのに押した後、これを実現。 実現する前に、私はまた私がコミットし、押した追加の意図的な変更を行いました。 ここで、私のファイルの最新の(コミットされた)バージョンに非意図的に削除されたコードチャンクを含めたいと思います。

(どのように)ということは、達成することは可能でしょうか?すでに誰かがそれをチェックアウトした可能性があり、今それの上で作業しているので、それは、潜在的に危険である変え、あなたがコミットプッシュので

答えて

2

。チャンクを新しいコミットに追加する方がクリーンです。

コードのチャンクを取得し、あなたのファイルの最新バージョンに含めることは可能ですが、一つの方法または他の新しいコミットを作成する必要があります。

あなたはGUIのいずれかの種類を使用する場合には言及しなかったので、私は、コマンドラインでのgitを使うと仮定します。

オプション1:以前のコミットの上に新しいコミットとして追加するには、選択したツールを使用して履歴を表示します(これはコマンドラインでgitkになります)。削除されたチャンクを現在のコードに貼り付け、新しく追加したチャンクをコミットしてプッシュします。

オプション2:あなたのrepositorys履歴に戻って最初の場所での削除を変更するには、次の2回のコミットで戻ってあなたのリポジトリをリセットするために

git reset HEAD~2 

を使用することができます。あなたの2つのコミットによってもたらされた変更は、作業ディレクトリ内の変更をunstagedとして表示されます。あなたが残したいチャンクの削除を元に戻すには、(他の変更がない場合)

git checkout -- <filename> 

により、ファイル全体であなたの変更を元に戻したり

によってチャンクだけの削除を取り消すことができますいずれか
git checkout -p <filename> 

以降の画面の指示に従います。その後、コミットまたは2つの別々の変更をコミットすることができます。プッシュしたいときは、あなたの履歴がアップストリームのものと異なるため、強制的に--force引き数で上書きする必要があります。これは潜在的に壊滅的であることに注意してください。

関連する問題