私はVCSについて何も知らず、それが何であるか、さらには何も知らなかったので、なぜそれが必要なのかがありました。 そして、彼の業績に加えて、彼はバージョンアーカイブを持つパパと考えました。 バージョン管理システムの必要性に気付いた頃には、すでにそのようなツールの必要性を感じていました。 しかし、CVSのBorland版は私を感心させませんでした。 各ファイルには独自のバージョン番号があります。 特定のリリースのスライスを入手するにはどうすればよいのか、まだわかりません。 一方、SVNは意欲的に開発者の心を通過しました。 くそー、それは私がとても逃したものでした。 ドックを読んで仕事を始めた後、私はちょうど彼女に恋をした。 はい、困難と不便がありましたが、それらはほとんどありませんでした。
だから私はSVNで仕事をしますが、まだ何も残っていません。 Gitニュースの細いストリームは、すでにインターネット上で流れています。 私はすべての新しいテクノロジーを急いでいるわけではありません。すべての脳がこのGitで私を騒ぎ立てる前に、かなり長い時間が経ちました。 私は好奇心が強く、最初はよく見て、試着してから、Gitで新しいプロジェクトを始めました。 私は2週間、男たちに苦しめられ、文献を汲み上げ、チートシートを書きました...何も、彼らはそれに慣れませんでした...そして、私は浸水しました。
現在、私は定期的にGitとその内容について話すように求められています。 すでに疲れているので、この投稿はまだ疑っている人向けです。
すべてがローカルです
リポジトリ、履歴、ブランチ、コミット。
これから2つの重要な結果が得られます。すべてが非常に高速であり、2つ目はリポジトリを完全に制御できることです。
- 現在のディレクトリにリポジトリを作成します-「git init」。 それだけです
- 1つの.gitパパだけで、各ディレクトリに.svnのようなポルノはありません。
- インターネットは必要ありません。 単独で作業することは一般に豪華です。一瞬で展開するローカルリポジトリです。 分散チームでの作業-それぞれが独自のリポジトリのコピーを持っているため、中央サーバーの可用性に依存する人はいません。
- バックアップシステムの作成について考える必要はありません。 各参加者にはコピーがあり、そこからオリジナルを選択できます。
gitリポジトリのコピーから、失われたsvnリポジトリを作成した人に手を上げてください。 - リポジトリで、あなたは何でもしたいです。 ブランチ、誰もそれらを見ません。
くそー、実験版で作業するために別のブランチを作成することをSVNで禁止したことを覚えています。
制御
Gitでは、コミットと履歴を使用して何でもできます。
- コミットを削除します
- コミットコメントを変更
- コミットのスワップ
- 特に忘れられた何かを「コミット」する必要がある場合は、いくつかのコミットを1つにまとめる
- コミットをいくつかに分割します
支店:
- あるブランチから別のブランチにコミットを移動/コピーする
- ブランチをどこかに移動する
これはここで非常によく説明されています:
http :
//gq.net.ru/2009/12/16/ git-history-rewrite /
そのような機会から頭を痛め、
一部の人にとっては危険すぎるように思えるかもしれません。 はい、私は経験の浅い操作の
ためにコミットを数回失い、その後「バスケット」を駆使してそれらを復元しました。
しかし、それに慣れ、それがどのように、どのように機能するかを理解すると、翼が成長し、はるかに効率的に働き始め、これから多くの喜びを得ることができます。
枝
Gitはブランチです。 すべてがブランチで実行されるように、非常にシンプルで柔軟かつ便利です。 リリースから小さなタスクまで。
- ブランチを作成し、それに切り替え、ブランチをマージし、戻ってください-これらは日常的な操作です。
- マージは喜びです。 対立があるかないかにかかわらず、すべてが非常に簡単に進み、何も失われることはありません。
- リリースを除き、ほとんどのブランチは非常に短く、1〜3日間続きます。
コミットする
コミットを行うには、そこに置く必要がある変更を正確に指定する必要があります。 ファイルではなく変更。 変更されたファイルと新しいファイルの両方に対して、「Git add」を呼び出す必要があります。 このようにして、一時的な状態が準備されます。これを「一時的なコミット」と呼びます(元の「ステージング領域」または「インデックス」)。
利点は何ですか:
- コミットするものとコミットしないものを常に確認できます
- gitは「変更」を受け入れるため、1つのファイルの変更の一部のみをコミットにコミットし、同じファイルの他の部分をロールバックするか、別のコミットに入れることができます。
前回「git add -p」のみを使用した場合-Gitはチャンクごと(ファイル内の一連の変更)を表示し、コミットに追加するかどうかを尋ねます。 だから、私は自分が変わってコミットすることを知っています。 そのため、デバッグコード、コメント、追加の編集、スペースはコミットされません。 そして、コミットは明確でアトミックです。
Difとログ
- ブランチ全体またはコミットのグループの差分を確認して、特に文盲の場合にコミットをめくらないようにすることができます。
- 私は2つのブランチの違いを見ることができ、それらが異なるコミットを見ることができます。
- 誰かがフォーマットに夢中になり、差分を1つの大きな混乱に変える場合、スペースなしの差分を参照してください(git diff -b -w)
- configでエイリアスの束を構成して、さまざまな形式でコミットログを出力できます(たとえば、 change-logを形成します) 。
通常、ログは機会の深isです。
スタッシュ
私はタスクに取り組んでおり、プロジェクトを部品に分解しました。ここで、すべてをドロップし、バグを修正するかレビューを行うために別のブランチに切り替える必要があります。 編集内容を一時的な状態(スタッシュ)で保存し、切り替え、必要なすべての操作を行い、戻って編集内容を復元し、作業を続行します。
バイセクト
エラーが発生したコミットを検索するコマンド。 私は、このエラーがそうでないことを確信しているコミットを示します。 そして、このエラーが既に存在する場所でコミットします。 次に、バイナリ検索を使用して、Gitは検証のためにコミットを選択し、それに切り替えて、エラーがあるかどうかを回答します。 間違ったコミットが見つかるまで続きます。 可能であれば、エラーを自動的にチェックして適切なコードを返すスクリプトを作成できます。 このスクリプトを二等分し、編集を中断します。
git-svn-地下にいる人向け
Gitでローカルに作業し、SVNでコミットできます。 あなた自身があなたの幸せな人相を循環させないならば、誰も推測しません。 仲間のアンダーグラウンドワーカーと簡単にチームを組み、リポジトリからブランチや編集を共有できます。
サブモジュール
Gitを使用すると、プロジェクトに他のプロジェクトを含めることができます。 それらはサブモジュールとして接続されます:
$ git submodule add git://github.com/maxim-oleinik/sfDoctrine2Plugin.git plugins / sfDoctrine2Plugin
Gitは「plugins / sfDoctrine2Plugin」ディレクトリを作成し、そこに別のリポジトリをデプロイし、リビジョンハッシュを制御します。 このディレクトリに移動すると、別のプロジェクトに入ります。 そこで、通常どおりに作業してコミットできます。親プロジェクトGitでのみ、サブプロジェクトが更新されたことを示し、新しいコミットへのリンクの保存を提案します。
- メインプロジェクトで作業し、同時に異なるサブモジュールにコミットすると便利です。
- Gitでは、svn:externalsのように、指定されたディレクトリを別のプロジェクトから接続することはできません。 プロジェクト全体のみ。
これが、独立したモジュールを割り当て、それらを別々のリポジトリに配置するためのポイントです。 確かに、サブモジュールに独自のサブモジュールなどがある場合、動作するのは少し不快になります。
GUIとコンソール
正直なところ、GUI Gitの種類はわかりません。 私はそれを使ったことがないので、コンソールでGitを使って作業する喜びを奪わないことをお勧めします。 コンソールでコマンドを入力するだけでなく、インターフェイスで正しいボタンやチェックマークを探している猿にならないでください。
さて、犯罪はありません。 コンソールでの作業がより豊かで便利であると言いたかっただけです。
通常のコンソールを持っていない人...さて、GUI、IDE、または...このコンソールを持つOSを選択してください。
私が定期的に使用する唯一のウィンドウはgitk -all&です。 ブランチとタグを含むコミットツリーを示しています。 あなたが今どこにいるのか、どの枝がどこにあるのか、どのように絡み合っているのかを見るのはとても便利です。 簡単な検索とブラウズの差分があります。
チームワーク
- gitでは、特定のブランチまたはモジュールへのアクセスをブロックできません。 またはすべてまたは何も。 しかし、これは私にとって問題を引き起こしたことはありません。 誰かがミスをして間違った方法でコミットした場合(事前に合意したとおり)、これらの編集が存在しないかのように単に拒否し、説明的な会話を行います。
または、アクセスが制限された個別のリポジトリを選択し、すべての人が使用できるリポジトリを選択できます。 - すべてのタスクはブランチでアトミックに実行され、同じフォームでレビューとマージに転送されます。 つまり、必要に応じて、レビューなしで1つのコミットがメイントランクに分類されることはありません。
- 別のブランチで実行されるタスクのレビューを実施することは非常に便利です。 すべてのコミットの完全な差分を表示し、 何かを修正し 、コメントを付け、リビジョンに送り返し、個々のコミットをマージしてメインブランチにマージします。
Github
これは、リポジトリを無料で投稿および公開できるクールなプラットフォームです。 分岐、開発、議論する多くのプロジェクトが存在する場所。 これですべてのプロジェクトが完了しました。
オープンソースプロジェクトとアクセスをブロックするために月200ルーブル/月は無料です。
もちろん、これはGitでできることとはほど遠いものです。 まだ伝えていないことや、まだ知らないことはたくさんあります。 基本的なポイントを強調してみました。
もちろん、Gitにはいくつかの不利な点と困難がありますが、Gitがない場合はありません。 はい、それらは重要ではありません。 ほとんどの場合、これは
git-wayの質問です。
確かに、Gitには深刻なマイナスが1つあります。それは怠け者向けではありません。 そのような人にGitを提供する前に、事前に考えてください。
次は何ですか
次に-作業を開始します。 たくさんのレビューを読んで、好きなだけ議論することができますが、仕事を始めるまで何も変わりません。
ある日、私はドックを駆け回って仕事を始め、2週間慣れ、1か月で残りを教え、3分間で翼を広げました。
始め方
- ダウンロード、インストール、構成、誰も問題はないと思います。 設定やその他のチップに関するこのブログの記事をご覧ください。
- 以下のリストから本を読んでください。 本当だ、読んで。 斜めではありますが、一般的な内容はわかります。 これは数時間で簡単に行えます。
- そして、新しいプロジェクトで作業を開始するか、既存のプロジェクトを転送します(インポートは難しくありません)。
チームを初めて支援する
チートシートがあります。 「git help <コマンド>」があります。 怠け者にならず、各新しいチームのヘルプを定期的に読んだ後、読んで再読することをお勧めします。 だから、可能性、微妙さ、ニュアンスのほとんどを学びました。
はっきりしない場合は、書いてください。 私にとって明らかなことは、初心者にはわからないことを理解することは私にとって非常に困難です。 2番目の記事については、そうではありません。
参照: