web-dev-qa-db-ja.com

TFSからGitへ

私は.NET開発者であり、ソース管理ソフトウェアとしてTFS(Team Foundation Server)を何度も使用しています。 TFSの優れた機能は次のとおりです。

  1. Visual Studioとの適切な統合(つまり、ほとんどすべてを視覚的に実行します。コンソールコマンドはありません)
  2. 簡単なチェックアウト、チェックインプロセス
  3. 簡単なマージと競合解決
  4. 簡単な自動ビルド
  5. 分岐

今、私はオープンソースプロジェクトのバックボーン、リポジトリ、およびソース管理としてGitを使用したいと思います。私のプロジェクトはC#、JavaScript、またはPHP MySQLの言語、またはストレージメカニズムとしてのSQL Serverデータベース)です。

この目的でgithub.comのヘルプを使用し、そこでプロファイルを作成して、GitのGUIをダウンロードしました。この部分まではとても簡単でした。

しかし、私はそれ以上進むのにほとんど行き詰まっています。次のような単純な(本当に単純な)操作を実行したいだけです。

  1. Gitでプロジェクトを作成し、私のラップトップ上のフォルダーにマッピングする
  2. ファイルとフォルダーのチェックアウト/チェックイン
  3. 競合を解決する

私が今する必要があるのはそれだけです。しかし、GUIはユーザーフレンドリーではないようです。 GUIにConnect To...またはそのようなものがあることを期待し、次にプロジェクトのリストが表示されることを期待し、それを選択すると、そのプロジェクトのファイルとフォルダーのリストが表示されることを期待します。 Visual StudioでTFSプロジェクトを探索するようなものです。次に、ファイルを右クリックしてcheck-in...またはcheck-outなどを選択できるようにします。

私は多くを期待しますか? TFSのようにGitを簡単に使用するにはどうすればよいですか?ここで何が欠けていますか?

14
Saeed Neamati

Gitの利点は、VCSが何をすべきかについての多くの古い仮定を放棄することから来ています。 gitの欠点は、以前の経験を活用できず、慣れ親しんだ方法を実行できないことです。

他のものからgitに切り替える場合は、tabula-rasaを起動してみてください(実際には実際には実行できません)。 howではなく、それが何をどのようにうまく行っているかに基づいてそれを評価します。それはあなたがあまり期待しているということではありません、それはあなたの期待がgitが提供するものに直交しているということです。 GUI操作と結婚していると、がっかりするでしょう。 GitにはGUIツールが用意されていますが、あまり追加されていません。 GUIが追加できるものはそれほど多くないので、それはそれらを提供するための失敗ではありません。 GitKは、日常の運用ではなく、ブランチ構造の視覚化と履歴の調査または検索に役立ちます。

ここに私が「直交」によって意味するものの間抜けなアナロジーがあります。新聞でできることの1つは、魚を包むか、鳥かごを並べるために使用することです。しかし、それらは新聞の機能に不可欠ではなく、それらは付随するformの付随的な機能です。gitが「ファイルをチェックインする」、または「プロジェクトを選択できる」、または「に接続する」は、新聞のwebsiteで魚を包んだり、鳥かごを並べたりできると期待するようなものです。

19
kylben

水銀を検討しましたか? gitと同様に、これはDCVSであり、DCVSで実行できるすべてのきちんとしたことを実行できます。 gitのように、かなり良いクラウドベースのサービスプロバイダー(bitbucket)があります。しかし、gitとは異なり、windowsのストーリーはかなりまともで、2等級の市民ではありません。優れたツールオプション(TortiseHG)とかなりまともなVisual Studio統合(VisualHG)があります。

しかし、ビジュアルスタジオのTFSのようなものは何もありません。世界はそのように配線されていないだけです。

7
Wyatt Barnett

1年前にSVNからgitに切り替えましたが、とても満足しています。ただし、私はGUIに依存していません。コマンドラインを厳密に拒否した場合、問題になる可能性があります。

gitが以前と同じように機能することを期待しているようですが、実際には機能しません。難しいことではありませんが、続行する前にその原則を確認する必要があります。

Gitでプロジェクトを作成し、私のラップトップ上のフォルダーにマッピングする

Gitは配布されます。つまり、常にローカルリポジトリで作業します。これは、ゼロを含む任意の数のリモートにマップできます。他のプロジェクトで遊ぶときは、2つのリモートを使用しています。それらのgitまたはSVNリポジトリと自分のサーバーです。

私は常に空のディレクトリを作成し、次にgit initまたはgit clone SOME-REMOTE-REPOSITORYを作成することから始めます。 このリンク が役立ちます。

ファイルとフォルダーのチェックアウト/チェックイン

使用しているGUIの記述に失敗しました。 TortoiseGitgit-guiの両方で確実に実行できます。

競合を解決する

このため、私はgit-guiまたは私のお気に入りのテキストエディタを使用しています。

GUIにConnect To ...などがあると思います

0からN個のリモートがある場合、何に接続しますか? Gitはリモートサーバーへの接続を維持せず、リモートリポジトリを操作するいくつかのコマンドに対してのみ一時的に接続を作成します。ほとんどの作業はローカルで行われます。

次に、プロジェクトのリストが表示されることを期待しています

projectsrepositoriesを意味すると想定しています。

そのようなことはないと思います。リモートサーバー上のGitは、1つのリポジトリのみで厳密に機能します。すべてのリポジトリをリストすることは、サブディレクトリ.gitを含むすべてのディレクトリをリストすることと同じです。 GitHubにはこのようなものがあると思います。

いずれかを選択します。探査のように、そのプロジェクトのファイルとフォルダーのリストが表示されることを期待しています

繰り返しますが、gitはローカルで動作するため、そのようなことはありません。繰り返しになりますが、あまり役に立ちません。リポジトリのクローンを作成し、コンピューター上で探索するだけです。巨大なリポジトリのクローン作成にはしばらく時間がかかりますが、その後のすべての操作ははるかに速くなり、コミットまたはブランチを確認できます。

次に、ファイルを右クリックして[チェックイン...]または[チェックアウト]を選択できるようにします。

繰り返しますが、gitはローカルで動作します。したがって、リモートリポジトリへのチェックインまたはチェックアウトは意味がありません。この方法で作業すると、高速LANでも時間の無駄になります。リポジトリをコンピュータに取得し、それを操作して、リモートへの変更をgit Pushします。変更の公開やバックアップの作成と同じように考えてください。 ローカルで非常に頻繁にコミット する必要があります。

作業を始める前に、誰かがリモートで作業している可能性がある場合に備えて、リモートからの変更をgit fetchまたはgit pullしてください。

私は多くを期待しますか?

はい、いいえ。あなたはそれが提供するものとは異なる何かを期待します。あなたはより良い何かを得ることができます、gitは強力で柔軟性があり、安全で、地獄のように速く、そして必要なすべてを行うことができますが、集中型VCSの動作を正確に模倣することはできません。

6
maaartinus

私は、ビジュアルソースからtfs、svn、gitの安全なジャーニーを作成しました。

Vssからtfsへの移行は楽しい経験でした。 tfsからsvnへの移行は楽しい経験でした。 svnからgitへの移行は、内部の戦いのようなものです。

多くの場合、私は自分がかなり保守的であることに気づき、何がうまくいくかを考えようとします。コマンドラインよりも素敵なGUIの方が私にとって望ましいです。私は、一緒に働いているクールな子供たちと遊ぶことができるGUIを探していました。彼らはすべて、コマンドラインでgitを排他的に使用しました。

銀の弾道guiの検索をあきらめて、git bashを試してみると、私にとってエウレカの瞬間が訪れました(まだ学習中です)。

私はいくつかのGUIをインストールしていて、コマンドラインからgitを補完します。 Git拡張、ビジュアルスタジオおよび亀gitのGitソース管理プロバイダー。しかし、私はgit bashに慣れると言います。コマンドは少しわかりにくいかもしれませんが、一度習得すると、GUIよりもはるかに高速になります。

Gitを使用した分岐は、他の分岐と比較して非常に優れています。ブランチを作成し、ブランチ間を瞬時に切り替えます。 svnは基本的に作業コピーをコピーするため(少なくとも私が行った方法で)、svnを使用して気にしないことを実行できます。

Gitはsvnよりも学習曲線が急であることがわかります。しかし、いったんgitで「取得」すると、元に戻りたくありません。

ずっとGitしてください。

5
tomasat

あなたはファイルを保存し、それらの全能の所有者であるserverを使用することに慣れています。ファイルを編集するには、サーバーに許可を求める必要があります。

Gitはそうではありません。 gitをこのように考えてください。ローカルリポジトリがあります。 Gitを使用すると、変更のコミット、リバースコミット、簡単で迅速な分岐などを行うことができます。ソース管理履歴をバックアップする場合は、Push変更をanotherリポジトリに保存します。 GitHub.comのようなサーバーです。

ワークフロー:

  1. クローン(ダウンロード)/リポジトリの作成
  2. 変更を加えます。他人を気にせずに開発を続ける。
  3. 別のリポジトリにプッシュします(GitHubのようなサーバーである可能性があります)。
  4. リポジトリにプッシュすると、他のリポジトリの所有者は保留中のプッシュについて通知され、それらのコミットを受け入れるか、拒否するか、またはそれらのサブセットのみを取得するかを決定する必要があります。
  5. サイクルは続きます。

以上です。

5
Yam Marcovic

「the」git guiはどういう意味ですか?私が正しく覚えていれば、ビジュアルスタジオ統合用のプラグインを含め、その数は膨大です。 1つのGUIが機能しない場合は、機能するGUIが見つかるまでさらに試してください。私は個人的に、さまざまなタスクにさまざまなGUI(およびその他のCLI)を使用しています。

ただし、gitは固定システムではなくバージョン管理フレームワークです。あなたはまだそれを最大限に活用するためにいくつかの基本を学ぶ必要があるでしょう。

1
Karl Bielefeldt