2

TFS にアクセスできないリモート ワーカーのために、git tfs を使用して TFS リポジトリのクローンを作成しました。彼のリポジトリに戻ったとき、彼が新しい機能ブランチに取り組んでいることがわかりました。

彼の変更を再チェックインする前に、彼のフィーチャー ブランチをマスター ブランチにマージしました。彼はマスターに何もコミットしなかったため、早送りが行われ、単一ストリームの git ログが作成されました。残念ながら、最初のクローン以降、別の (まったく関係のない) チェックインが TFS で発生しました。rcheckin を試みると、次のエラー メッセージが表示されます。

Fetching changes from TFS to minimize possibility of late conflict...
error: New TFS changesets were found.
You may be able to resolve this problem.
- Try to rebase HEAD onto latest TFS checkin and repeat rcheckin or alternatively checkin s

すべてのコミットを TFS のチェックインとして反映する必要がある場合、提案されたリベースがどのように役立つかわかりません。

この状況で、すべての git コミットを個々の TFS チェックインとして取得する方法はありますか?

4

2 に答える 2

2

@Cupcake さんの回答は良いのですが、いくつか追加したいことがあります...

チェックインしたばかりのときに tfs ワークフローに近づき、このステップでマージの競合を解決したい場合は、次を使用できます。

git tfs rcheckin --quick --autorebase

これは次と同等です:

git tfs pull --rebase
git tfs rcheckin

pull --rebase通常、 (変更とtfsからの変更が「マージ」されるrcheckin場所)と(変更をtfsにプッシュする場所)の間で、少なくともソリューションを構築して実行する必要があるため、必ずしも良いことではありませんあなたの単体テスト。

しかし、時にはそれがずっと簡単であり、私のチーム (すべての古い tfs ユーザー) がそれをしたいだけであることに気付きました!

また、変更がチームの変更と「マージ」されるステップであることにも注意する必要がありpull --rebaseます。そのため、マージはファイル レベルで行われ、チェックイン時の tfs のように、競合を解決する必要があります。

の場合、rcheckin --quick --autorebase競合がある場合、コマンドは終了します。それらを解決して、コマンドを再度起動する必要があります。

于 2014-04-08T08:52:56.597 に答える