web-dev-qa-db-ja.com

Visual StudioでGitとTFSのソース管理を切り替える

TFSとGitの両方を同時に実行する必要がある状況です。 2つを切り替える必要があります。 Gitがインストールされ、ローカルで実行するように構成されています。 TFSは会社のサーバーで実行されます。 Visual Studio 2013で2つの環境を切り替えるにはどうすればよいですか?

Git統合が改善された場合、私はVS 2015に切り替えることができます。

VSは最初にGitを検出してから、「チームエクスプローラー」でそのソース管理に切り替えました。 TFSに切り替える方法(思い出せない)に出会いましたが、Gitに戻す方法がわかりません。

気になったら、TFSでブランチを作成することは許可されておらず、メイントランクでコミットをいじったり、N番号を管理したりする方法がないため、GitをTFSと並べて実行する必要があります。シェルフセットの。機能ブランチを使用します

16
P.Brian.Mackey

TFSワークスペースを使用し、GITも使用する場合は、チームエクスプローラーを使用してワークスペースを切り替えることができます。画面の上部にある「プラグ」のようなアイテムをクリックすると、それらを切り替えることができます。スクリーンショットはVS 2015からのものですが、UIは2013年からそれほど変わっていません。

Team Explorer

ローカルマシンでのみgitを使用し、サーバーでTFSにプッシュする場合は、「 git-TF 」を参照してください。

「Trunk」をTFSからローカルgitリポジトリに複製し、gitで排他的に機能し、機能ブランチなどを使用できます。コードがTrunkに送り返す準備ができたら、リベースしてプッシュすることができます。

git-tf clone http://myserver:8080/tfs/mycollection $/TeamProjectA/Trunk

Gitリポジトリのファイルに変更を加える

git commit -a -m "commit one"(ローカルで変更をコミット)

さらに変更を加える

git commit -a -m "commit two"

git-tf pull --rebase

git-tf checkin

10
James Reed

最もエレガントなソリューションではありませんが、簡単で、サードパーティのツールは必要ありません(既にgit Shellがある場合)...スタジオを起動する前に、.gitフォルダーの名前を別の名前に変更するだけで、TFSが使用されます。ソリューションが開いたらすぐに、gitフォルダーの名前を「.git」に戻し、bashシェルを介してgit関連の操作を行うことができます。

mv .git git
(open the solution in VS)
mv git .git

この時点で、IDEを介してTFSを使用してチェックイン/チェックアウトし、シェルを介してgitを使用してプッシュ/プルすることができます。

注:新しいファイルがgit側から(つまり、git pullを介して)追加される場合、注意が必要なことの1つは、Studioが「Excluded Changes> Detected:### adds」の下にそれらをリストするためです。それらを「促進する」必要があります。

6
Tom

GITからTFSにスワップしようとすると、大きな問題が発生しました。

プロジェクトを開こうとしても失敗するだけです...ソリューションもプロジェクトもロードされません。

結局、機能した唯一のことは、手動で(非表示の).gitフォルダーを別の場所に移動することでした。そうして初めて、TFS経由でプロジェクトを開いて、わかりやすいTFSコンテキストメニュー項目(「コミット」ではなく「チェックイン」など)を表示できます

2
Mike Gledhill

私はTFSを使用しているため、この問題を抱えていました。ファイルのローカル追跡にはgitを使用することを好みます。 (うまくいけば、会社は私からのいくつかのプッシュですぐにgitに移行しています...)

私が見つけたのは、これらのエイリアスを作成することです。エイリアスdegit = "mv .git git"エイリアスregit = "mv git .git"

TFSをソース管理として設定してVS2015を起動する前に、リポジトリをそのまま「デジット」し、すべてがロードされたら、リポジトリを「再登録」します。私とうまく機能するようです。繰り返しますが、私は現在、リモートへのプッシュにgitを使用していません。まだTFSを使用してそれを行っています。

2
Arthur Bowers