2017-10-25 14 views
0

私はブランチAを持っていますが、その中にはコード行が削除されています。削除されたコードをマージの一部として再追加

ブランチAがデモにマージされました。上記のコード行をデモに追加する必要があります。

だから分岐Aに、私は後ろにコードを追加し、変更をコミットします。 しかし、ブランチAをデモに戻すと、コード行はデモに戻されません。

これは、ブランチAに変更された行のレコードがないため、削除されたコードが再導入されないという事実と関係していると思います。 ブランチAのマージの一環として、削除されたコードをデモに再追加するにはどうすればよいですか?

答えて

-1

手動で編集してコピーを保存し、コードが存在するブランチから別のブランチ使用ログにコピーコピーを再度コミットする必要があります。

1

あなたが記述した動作は発生しません。ブランチにファイルを追加して再マージするのは正しい手順です。

Gitは、あなたが「再導入」のコードだということを知っているか気にしません。 gitファイルを追加すると、それ自体が変更になります。だから、同じ名前と内容のファイルが以前に削除されたか、ブランチ上で別の方法で修正されていないか、それ以外のことは関係ありません。実際には存在しないコンセプトをたくさん紹介し、gitの動作を複雑にしています。あなたは

O --- x --- x --- x <--(master) 
\ 
    A --- B --- C --- D <--(branch) 

、多分Aを持っていた

foo/*を削除しました。あなたは

O --- x -- x --- x -- M <--(master) 
\     /
    A --- B --- C --- D <--(branch) 

を合併し、今 foo/*の削除は Mに実施しました。あなたは branch

O --- x -- x --- x -- M <--(master) 
\     /
    A --- B --- C --- D --- E <--(branch) 

Eにコミットを追加し、この問題を解決するには、foo/*でファイルを作成します。あなたはmasterにこれをマージした場合:

O --- x -- x --- x -- M --- M2 <--(master) 
\     / /
    A --- B --- C --- D --- E <--(branch) 

マージベースがDです。 D,EおよびMのみを調べてM2を生成する。 Efoo/*でファイルを作成しながらMは、foo/*で何もしないので、M2は、ファイルを取得します。 Dより前の履歴は関係ありません。

これは数え切れないほどのユーザーのために多数のテストで使用されている動作が文書化されているため、作業内容を再確認し、説明どおりに再追加してマージすることをお勧めします。

関連する問題