TFSからGitへ


14

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

  1. Visual Studioとの良好な統合(だから私はほとんどすべてを視覚的に行う;コンソールコマンドはなし)
  2. 簡単なチェックアウト、チェックインプロセス
  3. 簡単なマージと競合解決
  4. 簡単な自動ビルド
  5. 分岐

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

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

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

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

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

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


8
私は1年前にSVNからgitに切り替えましたが、とても満足しています。厳格なコマンドライン嫌い以外の人にはSVNをお勧めしません。一度gitを学べば、きっと気に入っていただけるでしょう。
-maaartinus

14
Windowsの人々がグラフィカルインターフェイスに夢中になっているのはなぜですか?
-tdammers

8
@tdammers Windowsのコマンドラインは地獄のように吸うので?PowerShellがありますが、それを使用していますか?
-maaartinus

3
@Saeed、最初は、gitでファイルをチェックインおよびチェックアウトすることを期待しています。何年もの間、使用可能なVCSはありませんでした。
ダニエルローズマン

1
推奨される読み取り:ericsink.com/entries/vcbe_print_edition_free.htmlは、それは(まだ中央サーバー、心を使用することができることを)バージョン管理の基本と集中と分散型の違いについて説明
インカ

回答:


19

gitの利点は、VCSが何をすべきかについての多くの古い仮定を捨てることにあります。gitの欠点は、以前の経験を活用できず、従来の方法で物事を実行できないことです。

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

「直交」とはどういう意味か、間抜けな例えです。新聞でできることの1つは、その中に魚を包むか、それを使って鳥かごを並べることです。しかし、それらは新聞の機能に不可欠ではなく、それが入ってくるフォームの付随的な機能です。 「魚を包んだり、鳥かごを新聞のウェブサイトに並べたりできると期待しているようなものです。


おっと、編集の説明を忘れました。もっとコーヒーを飲みながら、私の頭に類推が浮かんだ後、最後の段落を追加しました。
キルベン

3
最後に隠phorを愛した。+1
ヤムマルコビッチ

7

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

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


1
数年前にVSSからMercurialに移行しましたが、それは本当にひらめきでした。突然、実用的だとは思わなかったことができました。それから私はsvn多くのものに引っ越して逃しましたhg。今、私はgit複雑な感情に移行しています。私は見逃したそれらの施設の多くを取り戻すのが大好きですsvnが、私は未だにhg不要な複雑さに比べての単純さが恋しいですgitTortoiseGitをWindowsにインストールするだけでも、TortoiseHgでは必要のないフープをジャンプする必要があります。
マークブース

@Mark Booth:gitはあまりユーザーフレンドリーではありませんが、不必要な複雑さはありますか?インストールの問題はカウントされません。それらはTortoiseGit(別のプログラム)またはWindowsに起因する可能性があります。
-maaartinus

これはチャットではより良いでしょうが、インデックス/キャッシュ/ステージング領域には何も必要ありません、デフォルトでは要求された場合、部分コミットのオプションを使用してすべてをコミットする必要がありますすぐに欲しいのではなく、ユニットテストを再実行し、コミットしてからアンシェルブしてください)。また、必要なときに明示的に新しいブランチを作成する必要がないことも嫌いです。hgを使用すると、非ヘッドにコミットするたびに名前のないブランチがサイレントに作成されます。gitでは、分岐せずに頭から離れると、潜在的にそれを失い、ガベージコレクションが行われる可能性があります。
マークブース

6

私は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はリモートサーバーへの接続を維持せず、一時的にのみ、リモートリポジトリで動作するいくつかのコマンドに対してのみ接続を作成します。ほとんどの作業はローカルで行われます。

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

私はprojectsあなたが意味すると仮定していますrepositories

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

いずれかを選択すると、そのプロジェクトのファイルとフォルダーのリストが表示されます。

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

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

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

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

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

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


5

私は、視覚的なソースから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

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

Gitはそうではありません。この方法でgitを考えてください:ローカルリポジトリがあります。Gitはあなたがバックアップあなたのソース管理履歴をしたいときは、などの変更、逆コミット、簡単かつ迅速な分岐を、コミットすることができます、あなたは押しに変更を別の GitHub.comのように、サーバ「だけであることを起こる」リポジトリ。

ワークフロー:

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

以上です。


1

「the」git guiとはどういう意味ですか?私の記憶が正しければ、Visual Studio統合用のプラグインを含め、膨大な数のファイルがあります。1つのGUIが機能しない場合は、機能するGUIが見つかるまでさらに試してください。私は個人的に、さまざまなタスクにさまざまなGUIを使用しています(他のユーザーにはCLIを使用しています)。

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


-2

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

はい

TFSのようにGitを簡単に使用するにはどうすればよいですか?

なし。GitはCLI中心であり、優れたフロントエンドを備えていません(他のTortoise *と比較して、答えのない TortoiseGitについて知ってます)。SmartGitの使用を試みることができます(Javaに注意してください)


1
-1:ファイルのチェックイン/アウトおよび競合の解決は、ソース管理から「あまり期待していません」。
スティーブンエバーズ

2
+1リモートサーバーから直接それらをチェックすることは、まったく意味がありません。LANを介しても速度が低下するだけです。このようなことを行うことは、VCSではなくFTPの目的です。
-maaartinus

1
「チェックイン/チェックアウト」ファイルは、VCSの基本的な操作ではありません。これは、ほとんどのVCSに共通の実装機能であり、微妙ではあるが不幸な副作用があります。
キルベン

2
@kylben:チェックイン/チェックアウトは、バージョン管理を確認する1つの方法です。編集とマージは別の方法です。一部のVCSでは、前者のアプローチを使用して、排他的ロックと個々のファイルをチェックアウトする機能を提供しています。他の人は後者を使用し、それらを使用して、リポジトリ全体をダウンロードし、ローカルで変更を加えてから、リモートにプッシュします。VCSは競合する変更の管理を行い、疑わしい場合に入力を求めます。どちらのアプローチも優れていませんが、通常は、VCSを未作成のものに曲げることはできません。
-tdammers

1
「チェックイン/チェックアウト」では、編集用のソースファイルをダウンロードする方法ではなく、ロックベースのVCSが実装する方法について実際に話していました(これは、すべてのVCSが実行できる必要があります)。多くのVCSが単にファイルをダウンロードするプロセスを「チェックアウト」と呼ぶという事実は、少し間違ったIMOです。何もチェックされず、リポジトリはファイルを持っている人を覚えていません。
tdammers
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.