2016-08-08 8 views
1

私は現在gitで実験中で、次の問題が発生しました。私は、f1という1つの関数を持つpythonファイルを作成し、main.pyの下に保存し、masterブランチにコミットしました。私はそれからb1というブランチを作成し、マスターに戻ってその関数の名前をf2に変更しました(それ以外の変更はありません)。ブランチb1に戻り、new_functionという2番目の関数を追加しました。その後、私はmasterにb1をrebaseしようとしました。gitがpythonでリベースするのはいかがですか?

私は紛争があったことに驚いていました。どうしてgitはマスターのf1の名前をf2に変更しただけであるのではないでしょうか?

何か間違っていますか?どんな提案も感謝しています。

答えて

2

あなたは間違ったことはしていません。 Gitはあなたの仕事の潜在的な損失を防ぐだけです。この時点で、機能f1masterブランチのf2に変更されているため、ブランチb2はまだそれをf1と参照しています。だから、あなたがそうするときgit rebase、Gitは単にあなたを聞いてきます「ので、何名が、あなたはそれがf1f2または何か他のものになりたいん

+0

しかし、その例では、私の枝にぶつからない、なぜ私に何かを尋ねないのですか?私は新しい小説に取り組んでいただけだ。私が新しいファイルでそれを作成したなら、それを行うでしょう。 – Nickpick

+0

'feature'ブランチを' rebase'すると、 'rebase'はあなたの' feature'ブランチ上にあるコミットをすべて取り出し、あなたのマスターやgitで指定したブランチの上で再生しますrebase '。あなたの支店がインデックスに保存されている情報に変更を加えていない場合は、それはあなたに由来します。 –

+0

"インデックスの元から" - それはファイル単位でですか? – Nickpick

2

Gitは - 。ほぼすべての他のVCSのように - 追跡コンテンツのsymanitcsを知りません、あなたが同じファイルを変更した2つの履歴をマージまたはリベースした場合、これは競合であり、解決する必要があります。これにはプロパティツールを使用してください(P4Mergeのように、 /私は知っている/マージツール)とそれは紛争を解決するためにあなたのケースではおそらく本当の紛争でもないことを参照してくださいパイと簡単です

+0

その場合、1つのファイルの関数ではなく、できるだけ多くの異なるファイルでコードを分割することが不可欠であることに同意しますか? – Nickpick

+0

いいえ、それは意味がありません。 VCSにコードの構造を指示させないでください。プロジェクト/言語に適したコードを構造化します。マージに競合がある場合は、適切なツールを使用してそれらを解決してください。あなたのケースでは、実際には矛盾がないことを確認した後、P4Mergeでsaveを押すことと同じくらい簡単になります。 – Vampire

+0

私は現在pycharmを使用していますが、差分を扱うためのツールが含まれています。しかし、別の機能を追加しているうちに、ある機能が名前を変更したとは思えないので、サーバーバージョンまたは私のバージョンのファイルのみを受け入れることができます。これは満足のいくものではないようです。 – Nickpick

関連する問題