|
[ xjtuhitさんのブログより引用]
このチュートリアルは、グラフィックツールの初心者から経験豊富なユーザーまでを対象としています。誰でもすぐに使い始められるように支援することを目的としています。 Git は現在非常に人気があり、大規模なオープンソース プロジェクト、チーム開発、さらには独立した開発者や学生にも広く使用されています。 初心者は、様々なコマンドやパラメータに圧倒されがちです。しかし、実際には、最初からすべてのコマンドの目的を理解する必要はありません。まずはシンプルで強力なコマンドをいくつかマスターし、徐々に使いこなせるようになっていけば良いのです。(この記事ではその点について解説します。)さあ、始めましょう! 基本的な理解 `git`コマンドは、ファイルの変更を追跡・記録するためのコマンドラインツールの集合体です。例えば、ファイルの保存、比較、分析、マージなどが可能です。このプロセスはバージョン管理と呼ばれます。SVN、Mercurial、Perforce、CVS、Bitkeepeなど、既に利用可能なバージョン管理システムは数多くあります。 Gitは分散型です。つまり、中央サーバーに依存しません。どのマシンでもローカルバージョン管理システム(リポジトリ)を持つことができます。複数人での共同作業には、情報を同期するためのオンラインリポジトリが必要です。GitHubとBitBucketはまさにこれを実現しています。 1. Gitをインストールする git のインストールは非常に簡単です:
グラフィカルツールをご利用になりたい場合は、GitHub Desktop または Sourcetree をお勧めします。ただし、コマンドラインの使用もお勧めします。以下の内容はすべてコマンドラインから実行したものです。 2. Gitを設定する Gitをインストールしたら、まずはユーザー名とメールアドレスなどの情報を設定します。ターミナルを開き、以下のコマンドを実行してください。
これら 2 つの設定を構成すると、ユーザーは誰が何を行ったかを把握でき、すべてがより整理されるようになります。 3. 新しいリポジトリを作成する - git init Gitはプロジェクト内のすべてのファイルと履歴を保存します。新しいリポジトリを作成するには、まずプロジェクトディレクトリに移動し、`git init`を実行します。すると、Gitは`.git`という名前の隠しフォルダを作成し、そこにすべての情報が保存されます。 デスクトップに git_exercise という名前のフォルダーを作成し、ターミナルを開きます。
さて、プロジェクトはまだ空です。新しいhello.txtファイルを作成してみましょう。 4. ステータスを確認する - git status `git status` も非常に重要なコマンドです。リポジトリの現在の状態(最新かどうか、どのような更新が行われたかなど)を表示します。`git status` を実行します。
Gitはhello.txtが新しいファイルであるため追跡されていないと報告しています。Gitは、このファイルの変更を追跡すべきか、それとも単に無視すべきか判断できません。新しいファイルを追跡するには、ステージングする必要があります。 5. ステージング - git add Gitにはステージングエリアと呼ばれる概念があり、これはコミットする可能性のあるすべての変更を保持する空白のキャンバスと考えることができます。最初は空ですが、`git add` コマンドでコンテンツを追加し、`git commit` コマンドでコミットできます。 この例には 1 つのファイルのみが含まれています。
ディレクトリのすべてのコンテンツを送信する必要がある場合は、次のように実行できます。
`git status` を再度使用して確認します。
ファイルがコミットされました。ステータス情報にはステージングエリア内のファイルにどのような変更が加えられたかが表示されますが、ここでは完全に新しいファイルをコミットしました。 6. コミット - git commit コミットとは、リポジトリがデリバリーステータスに到達したことを意味します。これは通常、小さな機能の完了を意味します。これはスナップショットのようなもので、タイムマシンのように過去へ戻ることができます。 コミットを作成するには、ステージング領域にデータを送信し (git add)、次の操作を行う必要があります。
これによりコミットが作成されます。-m "Initial commit." オプションは、このコミットの説明を提供します。わかりやすい説明情報を使用することをお勧めします。 遠隔倉庫 これまでの操作はローカルで行われ、.git ファイルに保存されていました。共同開発を行うには、コードをリモートリポジトリにデプロイする必要があります。 1. リモートリポジトリに接続する - git remote add リモートリポジトリにアップロードするには、まずリンクを確立する必要があります。このチュートリアルでは、リモートリポジトリのアドレスは https://github.com/tutorialzine/awesome-project ですが、GitHub または BitBucket で独自のリポジトリを設定し、ステップバイステップで試すことをお勧めします。 テスト用のリモート リポジトリを追加します。
プロジェクトは複数のリモートリポジトリを同時に持つことができ、通常は区別するために異なる名前が付けられます。メインのリモートリポジトリは通常、「origin」と呼ばれます。 2. サーバーにアップロードする - git push コードをサーバーにコミットするたびに、`git push` を使用します。 `git push` コマンドは、リモート リポジトリの名前とブランチの名前の 2 つの引数を取ります。
ご利用のサーバーによっては、プッシュ処理中に本人確認が必要になる場合があります。すべてがスムーズに進んだら、ブラウザでリモートブランチを確認してください。hello.txt がそこに保存されているはずです。 3. リポジトリのクローン - git clone GitHub でホストされているオープンソースプロジェクトでは、他のユーザーがあなたのコードを閲覧できます。`git clone` を使ってローカルマシンにダウンロードできます。
ローカルにも新しいリポジトリが作成され、GitHub 上のブランチが自動的にリモート ブランチとして設定されます。 4. サーバーからコードをプルする - git pull リポジトリのコードを更新すると、他のユーザーは `git pull` コマンドを使用して変更をプルできます。
まだ誰も提出していないので、変更はありません。 支店 新しい機能を開発する際は、ブランチと呼ばれる別の領域で開発するのが最適です。ブランチは互いに独立しており、独自の履歴を持ちます。その理由は次のとおりです。 安定したバージョンのコードは壊れません。 異なる開発者が同時に異なる機能を開発できます。 開発者は、自分の環境が他の開発者によって混乱させられることを心配することなく、自分のブランチに集中できます。 不確実性が生じる前に、同じ機能に複数のバージョンを用意して簡単に比較できるようにすることができます。 1. 新しいブランチを作成する - git branch 各リポジトリのデフォルトのブランチはmasterと呼ばれます。新しいブランチを作成するには、以下の手順を実行します。
現在のブランチと同じポイントから始まる、amazing_new_feature という名前の新しいブランチが作成されました。 2. ブランチを切り替える - git checkout `git branch` だけを使用してブランチのステータスを表示できます。
アスタリスク(*)は、現在アクティブなブランチがmasterであることを示します。ブランチを切り替えるには、`git checkout`を使用してください。
3. ブランチをマージする - git merge amazing_new_feature ブランチでのタスクは、feature.txt ファイルを追加することです。ファイルを作成し、ステージングエリアに追加してコミットしましょう。
新しいブランチのタスクが完了しました。マスターブランチに戻ってください。
ファイルを確認すると、先ほど作成した feature.txt ファイルがマスターブランチに存在しなかったため、見つからないことがわかります。`git merge` コマンドを使って、amazing_new_feature ブランチをマスターブランチにマージしてください。
はい!次にamazing_new_featureブランチを削除します。
高度な この記事の最後のセクションでは、さらに高度で実用的なテクニックについて説明します。 1. 2 つの異なる提出物の違いを比較します。 各コミットには一意のIDが付与されます。すべてのコミットとそのIDを表示するには、`git log` を使用します。
ID は長いですが、文字列全体をコピーする必要はなく、最初の部分だけで十分です。 特定のコミットで何が更新されたかを確認するには、`git show` を使用します。
2つのコミットの違いを確認するには、`git diff [commit-from]..[commit-to]` を使用します。構文:
最初のコミットと最後のコミットを比較することで、すべての変更を確認できます。もちろん、`git difftool` コマンドを使用する方が便利です。 2. ファイルを以前のバージョンにロールバックします。 Git を使用すると、特定のファイルを特定のコミットにロールバックできます。これも `git checkout` を使用して実行できます。 以下の例では、hello.txt を初期状態にロールバックします。ロールバックするコミットとファイルのフルパスを指定する必要があります。
3. ロールバックコミット 最新のコミットにファイルを追加してしまった場合は、`git commit --amend` を使って修正できます。これにより、最新のコミットがステージングエリアにプッシュされ、再度コミットが試行されます。 最新のコミットではない場合など、より複雑な状況では、`git revert` を使用できます。 最新のコミットも HEAD としてエイリアスされます。
その他の提出物では次の ID を使用できます:
混合コミットでは競合が頻繁に発生します。後続のコミットでファイルが変更されると、Git は変更を適切にロールバックできません。 4. マージの競合を解決する ブランチをマージしたり、他の人からコードをプルしたりすると、競合が発生することがよくあります。Git が競合を自動的に処理してくれる場合もありますが、ほとんどの場合、手動で処理する必要があります。 たとえば、ジョンとティムはそれぞれ自分のブランチに 2 つのコード部分を作成しました。 ジョンの好きなところ:
Tim は forEach が好きです:
ここで、ジョンがティムのコードを取得しようとしているとします。
この時点では、Git は John と Tim のどちらがより良い書き方をしたのかわからないため、競合を解決する方法がわかりません。 つまり、コードにマーカーが挿入されます。
==== 記号の上のコードは最新のコミットで、その下のコードは競合しているコードです。この競合を解決する必要があります。組織委員会メンバー間で議論した結果、どちらのコミットもゴミであることが全員一致で決定されました。どちらも使用すべきではありません。コードを以下のように変更する必要があります。
さて、もう一度送信してみましょう。
大規模プロジェクトでは、このプロセスで問題が発生する可能性が高くなります。GUIツールが役立ちます。`git mergetool` を使用してください。 5. .gitignore を設定する ほとんどのプロジェクトでは、コミットしたくないファイルやフォルダが存在します。誤ってコミットしてしまうのを防ぐには、.gitignore ファイルが必要です。
通常無視されるファイルは次のとおりです:
例えば:
|