4

メインのソース管理として TFS を使用しており、 git-tfs rcheckinコマンドと一緒に「フロントエンド」として git を使用したいのですが、リポジトリを git にインポートする際に問題があります。

TFS に 2 つのプロジェクトがあります

$/ProjectA
$/ProjectB

そして、それらを 1 つの git リポジトリで管理したいと考えています。

これら 2 つを 1 つの git リポジトリにクローンして、変更を両方のプロジェクトに 1 つの TFS 変更セットとしてコミットおよびプッシュできるようにするにはどうすればよいですか?

git tfs サブツリーを使用してみましたが、どういうわけかこれでワークフローを理解できません。私のアプローチは、以下に示すように git リポジトリを初期化することでしたが、回復できないエラーが発生しました。

> git init
Initialized empty Git repository in c:/somedir/.git/

> git tfs subtree add --prefix=ProjectA  http://tfs_server:8080/tfs/ $/ProjectA
executing subtree add
-> new owning remote default
-> new remote default_subtree/ProjectA
Fetching from TFS remote 'default_subtree/ProjectA'...
C3779 = 7e532464ef6120ac0b19aa3c7651ceae915dc366
C3780 = 16f4636fc53d729767f65213ed047c11d1a707ee
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
error running command: git subtree add --prefix=ProjectA "-m Add 'ProjectA/' from commit '16f4636fc53d729767f65213ed047c11d1a707ee'

git-tfs-id: [http://tfs_server:8080/tfs/];C3780" refs/remotes/tfs/default_subtree/ProjectA
Command exited with error code: 1
4

2 に答える 2

2

私は同じ問題を抱えていましたが、この回答の一部が正しい方向を示してくれました。

> git init
Initialized empty Git repository in c:/somedir/.git/

> git tfs subtree add --prefix=ProjectA  http://tfs_server:8080/tfs/ $/ProjectA
....
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
....

このエラーは、おそらくgit diff-index HEADコマンドから発生しています。試してみると、まったく同じメッセージが表示されます。

ここでの問題は、まだ HEAD がないことです。リポジトリがです。master ブランチにはコミットがないため、head はありません。ダミーのコミットを追加して実行git tfs subtree add ...してみてください。問題なく動作します。

git init
touch foo
git add foo
git commit -m "dummy commit to get a HEAD on master"
git tfs subtree add --prefix=AAA tfsurl $/path/to/AAA
git tfs subtree add --prefix=BBB tfsurl $/path/to/different/BBB

あなたの場合のように私のローカルリポジトリは空でした.この小さなトリックは、ambiguous argument 'HEAD'git-tfs 0.25.0.0(TFSクライアントライブラリ14.0)を使用してgit 2.7.1.windows.2でエラーを解決しました

編集:ああ、 Windows Command Prompt でgit tfsすべてのコマンドを呼び出すようにしてください。少なくとも私が使用している git/gittfs バージョンでは、git-bash コンソールから呼び出されたときに git-tfs-subtree が正しく機能せず、いくつかのパスと refspec が台無しになります。

于 2016-06-28T16:14:11.927 に答える
1

TFS で Git を使用している場合:

これを行う最も簡単な方法は、各プロジェクトをチェックアウトして、ファイルを 1 つの Git リポジトリに追加することです。

TFS で TFVC を使用している場合:

これを行う方法はありません。各レポを個別に複製して、個別に作業できます。1 つの Git リポジトリに 2 つの異なる分岐構造を持つことはできません。

ブランチなしで TFVC を使用している場合:

GitTF サブツリー機能を使用して、TFVC からの 2 つの独立した同期フォルダーを含む単一の Git リポジトリーを持つことができます。

永続的に Git に移行することをお勧めします。

于 2014-09-20T13:56:13.313 に答える