0

私は、約 40 または 50 のプロジェクトを含む Visual Studio ソリューションに取り組んできました。

.sln ファイルに約 10 個のプロジェクトを追加しましたが、その間に他の誰かが .sln ファイルにプロジェクトを追加しました。

事実上、V1 というファイルが存在し、2 人が別々に 2 つの V2 を作成する作業を行いました。

変更をマージするのは悪夢だと思います。私が使用しているマシンには BeyondCompare がインストールされており、3 列のマージが表示されます。私はそれを理解できなかったので、gitがリモートバージョンであると考えているものでローカルファイルを上書きすることにしました。しかし、その後、新しいプロジェクトを再度追加するという問題が発生しました。

そう。90回目のプル+リベース/コミットを行う前に、これを解決する簡単な方法はありますか? 同様に、すべての現在のローカル コピーをリモート側にあるもので上書きします。次に、新しく追加したプロジェクトを再度追加します。次にコミットします。ビルド + テスト。次に押します。多分?

*編集: FWIW、マシンには亀の git もインストールされており、現在すべてが緑色のチェックマークで表示されています...それでかなり良いですよね?

4

3 に答える 3

1

リモートの sln ファイルにプロジェクトが追加されていることを Git やその他のツールに知らせたい場合は、それらを追加してから、私が追加したプロジェクトを追加してください。それはあなたのアプローチではありません。

リモートに追加されたすべてのプロジェクトと追加したプロジェクトがそこにあるように、マージの競合を修正するだけです。

于 2011-08-22T16:20:37.017 に答える
1

まず、既知の状態に戻します。git reflogこのすべてのプルとリベースを実行しようとする前の時点にあるコミットを見つけてください。そのコミットを指すgit checkout -b my-feature <commit-id>という名前のブランチを作成するために aを実行します。my-featureサーバーからの最近のすべての変更なしで、期待どおりに機能することを確認します。

次に、 をmaster実行して、ブランチをサーバー上のものと一致させますgit branch -f master origin/master

ここからが難しい部分です。変更したものとサーバー上で変更したものとの間のマージの競合を解決する必要があります。これはグループでの作業の通常の部分であり、それについてひっくり返すのではなく、方法を系統的に学ぶ必要があります。 これは良いリソースです。Beyond Compare は、3 方向のマージを解決するのに役立つ非常に優れたツールであり、その使い方を学ぶ必要があります。

手動で作成するのではなく、ツールによって生成されたファイルがある場合は、ローカルの変更を消去して後で追加するだけで、ツールを使用して変更を加える方が簡単な場合があります。sln ファイルの構文をよく理解していない場合は、これが該当する可能性があります。

サーバー上にあるものと一致するように sln ファイルだけを変更するには、次のようにします。

git checkout master -- filename.sln
git commit -am "Reset solution file to match origin"

次に、プロジェクトを追加し、通常どおりファイルを再度コミットします。ここで、これらの変更を master ブランチに取得します。行う:

git rebase master
# resolve any merge conflicts, then git rebase --continue after each one
git checkout master
git merge my-feature
# test to make sure everything works
git push
于 2011-08-23T16:47:33.497 に答える
0

私は「同じだけど違う」状況にいます。問題を 2 つの部分に分けました。1 つは、私ができる履歴をキャプチャし、それをスナップショット/コミットの名目上のシーケンスに入れることです。いくつかの異なるサブプロジェクトとフェーズを特定できたので、それぞれがキャプチャ フェーズ中に独自のレポを取得しました。graftそれらをまとめて、git filter-branchすべてを 1 つの大きな歴史にまとめることができます。

現在の作業では、適切な「今」の時点から新しい git リポジトリを開始し、2 つのプロセスを完全に融合できるようになるまで、git リポジトリにダンプして、確立されたマージ手法を続けています。一部の人々は、新しい慣行が機能することが示されるまで、現在の慣行をあえてやめないことを意味する説得力のある & (自己) 管理を必要とします.

git の哲学を「理解」し、古くて定着しているが間違った方法を放棄するには、しばらく時間がかかります。

于 2011-08-22T19:42:50.833 に答える