4

これがどこかで徹底的に、明白に、そしておそらくすでにそうであるように何度も答えられていたら、私はお詫びします。しかし、少なくとも 1 週間検索しても、私が抱えているこの特定の問題に関する情報を見つけることができませんでした。

簡単にするために、3 人でプロジェクトに取り組んでおり、各人が独自のブランチを持ち、定期的にマスター トランクにマージします。問題は、競合が発生する (チェリー ピックを試みる) か、マスターのすべてのファイルと最後のブランチとマージされた最初の 2 つのブランチが単に上書きされているように見えることです。

私の問題は(うまくいけば)単純です:

マスタートランク

string test1;
string test2;
string test3;

test1 ブランチ

 string test1 = "Dan Branch merged";
 string test2;
 string test3;

test2 ブランチ

string test1;
string test2 = "Dave Branch merged";
string test3;

test3 ブランチ

string test1;
string test2;
string test3 = "Will Branch merged";

3 つのブランチすべてがマージされた場合の望ましい出力:

string test1 = "Dan Branch merged";
string test2 = "Dave Branch merged";
string test3 = "Will Branch merged";

テスト1と2をマージしようとすると、実際に得られるのは次のとおりです。

自動マージに失敗しました。競合を修正してから、結果をコミットします。

  <<<<<<< HEAD
 +        String test1 = "Dan Branch merged";
 +        String test2;
 +        String test3;
  =======
+         String test1;
+         String test2 = "Dave Branch merged.";
+         String test3;
  >>>>>>> test2

私は現在、Windowsでgit-guiを使用しています(最終的にgitに頭を悩ませたときにbash / shell / cliに変更する計画があります)。 git-gui ですが、もちろん物乞いは選択者になることはできません。

物事をシンプルに保つために、リポジトリはサーバーではなくローカル ネットワーク フォルダーにあります。これが実装に影響するかどうかはわかりません (使用法を正しく推測していれば、プッシュとプルは使用されないと思います)

現在、Git は、すべてのマージが手動で行われているため、古いバージョンを保存および参照するための手段に追いやられています。

4

1 に答える 1

1

コードを処理する方法は、分散開発を処理する通常の方法ではない場合があります。これを機能させるには、次の手順をお勧めします (開発中にマスター トランクにアクセスできる場合)。

git stash     (to put your changes away for the moment)
git pull      (to get the latest commits)
git stash pop (to get back, what was stashed away in the first step)

次に、競合を解決します。これは、ブランチ全体をマージする場合ほどではありません。それで:

git commit
git push

重要:ブランチを変更せず、マスターで作業してください。ブランチは、マスターするために毎日コミットされていないものを並行して開発するためによく使用されます。たとえば、古いコードまたは API の多くを変更する新しいメジャー バージョンのソフトウェアを開始する場合、コミットによってパッケージ全体が不安定になるため、単純にそれらをマスターにプッシュすることはできません。

編集:

David のコメントに敬意を表して: git でブランチを使用しても害はありませんが、経験の浅い g​​it ユーザーが理解して解決するのに苦労した、不適切に処理されたブランチが混乱を招く 1 つまたは 2 つのケースがありました。ただし、これらの取り扱いミスは通常ではありません。

編集:

結局のところ、ローカル リポジトリは 1 つしかありません。最初は、全員がプッシュする LAN リポジトリを持っているように思えました。したがって、インフラストラクチャを変更しない場合 (私はお勧めしません。別の方法としては、http://bitbucket.orgを使用し、全員が自分のコンピューターに自分のリポジトリ クローンを作成します)、それ以外に方法はありません (私はそう思います)。 3 つのブランチを持つことで。インフラストラクチャを変更するには、http: //www.vogella.com/articles/Git/article.html のような git チュートリアルを読むことを強くお勧めします。頑張ってください。

于 2012-06-19T12:57:54.000 に答える