Looking for git Answers? Try Ask4KnowledgeBase
Looking for git Keywords? Try Ask4Keywords

GitGitを使い始める


備考

Gitは無料の分散バージョン管理システムであり、プログラマは現在の状態で「スナップショット」(コミット)を介してコードの変更を追跡することができます。コミットを利用することで、プログラマは新しい機能を共同でテスト、デバッグ、作成することができます。すべてのコミットは、コンピュータ、プライベートサーバ、オープンソースのウェブサイト(Githubなど)でホストできる "Gitリポジトリ"として知られています。

Gitでは、コードの新しい「ブランチ(branch)」を作成することもできます。これにより、異なるバージョンのコードが互いに並んで生きることができます。これにより、1つのブランチに最新の安定バージョンが含まれ、別のブランチに開発中の新機能が含まれ、さらに別のブランチに異なる機能セットが含まれるシナリオが可能になります。 Gitはこれらのブランチを作成し、その後それらをまとめて、ほとんど無痛にするプロセスを作ります。

Gitはあなたのコードに3つの異なる "領域"を持っています:

  • ワーキングディレクトリ :すべての作業(ファイルの作成、編集、削除、および整理)を行う領域です。
  • ステージング領域 :作業ディレクトリに加えた変更を一覧表示する領域
  • リポジトリ :Gitはプロジェクトの異なるバージョンとして行った変更を永続的に保存します

GitはもともとはLinuxカーネルソースを管理するために作られました。それらをより簡単にすることで、小さなコミット、プロジェクトのフォーク、フォーク間のマージ、短命のブランチをたくさん持たせることができます。

CVSやSubversionに慣れている人にとっての最大の変化は、すべてのチェックアウトにソースツリーだけでなく、プロジェクトの全履歴が含まれていることです。リビジョンの比較、古いリビジョンのチェック、ローカル履歴へのコミット、ブランチの作成、別のブランチのチェック、ブランチやパッチファイルのマージなどの一般的な操作は、すべて中央サーバーと通信することなくローカルで実行できます。したがって、待ち時間と信頼性の最大の原因は取り除かれます。最新の変更を取得し、ローカルの変更を他の開発者に公開するには、「上流」リポジトリとの通信が必要です。これは以前は技術的な制約(リポジトリを所有している者は誰でも)を組織の選択肢に変えました(あなたの「上流」はあなたが誰と同期するかを決めるものです)。

バージョン

バージョン発売日
2.13 2017-05-10
2.12 2017-02-24
2.11.1 2017-02-02
2.11 2016-11-29
2.10.2 2016-10-28
2.10 2016-09-02
2.9 2016年6月13日
2.8 2016-03-28
2.7 2015-10-04
2.6 2015-09-28
2.5 2015-07-27
2.4 2015-04-30
2.3 2015-02-05
2.2 2014-11-26
2.1 2014-08-16
2.0 2014-05-28
1.9 2014-02-14
1.8.3 2013-05-24
1.8 2012-10-21
1.7.10 2012-04-06
1.7 2010-02-13
1.6.5 2009-10-10
1.6.3 2009-05-07
1.6 2008-08-17
1.5.3 2007-09-02
1.5 2007-02-14
1.4 2006年06月10日
1.3 2006-04-18
1.2 2006-02-12
1.1 2006-01-08
1.0 2005年12月21日
0.99 2005-07-11

最初のリポジトリを作成し、ファイルを追加してコミットする

コマンドラインでまずGitがインストールされていることを確認します:

すべてのオペレーティングシステムで:

git --version
 

UNIXのようなオペレーティングシステムの場合:

which git
 

何も返されないか、コマンドが認識されない場合は、インストーラをダウンロードして実行することによってシステムにGitをインストールする必要があります。非常に明確で簡単なインストール手順については、 Gitのホームページを参照してください。

Gitをインストールしたら、ユーザ名と電子メールアドレスを設定します 。コミットする前にこれ行います。

Gitがインストールされたら、バージョン管理下に置くディレクトリに移動し、空のGitリポジトリを作成します:

git init
 

これは、Gitが動作するために必要な配管を含む隠しフォルダ.git 作成します。

次に、Gitがあなたの新しいリポジトリに追加するファイルを確認します。このステップは特別な配慮が必要です。

git status
 

結果のファイル一覧を確認します。 Gitにどのファイルをバージョン管理するかを伝えることができます(パスワードなどの機密情報を含むファイルやレポを混乱させるファイルの追加を避ける):

git add <file/directory name #1> <file/directory name #2> < ... >
 

リスト内のすべてのファイルをリポジトリにアクセスできるすべての人と共有する必要がある場合は、現在のディレクトリとそのサブディレクトリのすべてを1つのコマンドで追加します。

git add .
 

これは意志「のステージを」すべてのファイルがあなたの最初のコミットにコミットするためにそれらを準備し、バージョン管理に追加します。

バージョン管理の対象にならないファイルの場合は、 add コマンドを実行する前に.gitignore という名前のファイルを作成して作成します

コミットメッセージとともに、追加されたすべてのファイルをコミットします。

git commit -m "Initial commit"
 

これにより、指定されたメッセージで新しいコミットが作成されます。コミットは、プロジェクト全体の保存またはスナップショットのようなものです。これでリモートリポジトリにプッシュまたはアップロードすることができ、必要に応じて後でそれに戻ることができます。
-m パラメータを省略すると、デフォルトのエディタが開き、そこでコミットメッセージを編集して保存することができます。

リモートを追加する

新しいリモートを追加するには、ターミナル、リポジトリが格納されているディレクトリのgit remote add コマンドを使用します。

git remote add コマンドは2つの引数をとります:

  1. リモート名(例: origin
  2. リモートURL(例https://<your-git-service-address>/user/repo.git
    git remote add origin https://<your-git-service-address>/owner/repository.git
 

注:リモートを追加する前に、gitサービスで必要なリポジトリを作成する必要があります。リモートを追加した後に、コミットをプッシュ/プルできるようになります。

リポジトリのクローン作成

git clone コマンドは、既存のGitリポジトリをサーバからローカルマシンにコピーするために使用します。

たとえば、GitHubプロジェクトをクローンするには:

cd <path where you'd like the clone to create a directory>
git clone https://github.com/username/projectname.git
 

BitBucketプロジェクトを複製するには:

cd <path where you'd like the clone to create a directory>
git clone https://yourusername@bitbucket.org/username/projectname.git
 

これにより、ローカルマシン上にprojectname というディレクトリが作成され、リモートGitリポジトリ内のすべてのファイルが格納されます。これには、プロジェクトのソースファイルと、プロジェクトの履歴と構成全体を含む.git サブディレクトリが含まれます。

MyFolder など、別のディレクトリ名を指定するには:

git clone https://github.com/username/projectname.git MyFolder
 

または、現在のディレクトリで複製する:

git clone https://github.com/username/projectname.git .
 

注意:

  1. 指定されたディレクトリに複製する場合、ディレクトリは空でも存在しなくてもかまいません。

  2. 次のコマンドのssh バージョンを使用することもできssh

    git clone git@github.com:username/projectname.git
     

https バージョンとssh バージョンは同等です。しかし、GitHubなどのホスティングサービスの中には、 ssh ではなくhttps を使用することをお勧めします。

Gitのインストール

Gitを使ってみましょう。まず最初に、インストールする必要があります。あなたはそれをいくつかの方法で得ることができます。 2つの主なものは、ソースからインストールするか、ご使用のプラットフォーム用の既存のパッケージをインストールすることです。

ソースからのインストール

できれば、ソースからGitをインストールするのが一般的に便利です。なぜなら、最新のバージョンを手に入れるからです。 Gitの各バージョンには便利なUI拡張機能が組み込まれているので、ソースからソフトウェアをコンパイルするのが快適であると感じる場合は、最新バージョンを入手するのが最善の方法です。また、多くのLinuxディストリビューションには非常に古いパッケージが含まれている場合もあります。非常に最新のディストリビューションやバックポートを使用していない限り、ソースからのインストールが最善の策かもしれません。

Gitをインストールするには、curl、zlib、openssl、expat、およびlibiconvに依存する以下のライブラリが必要です。たとえば、yum(Fedoraなど)またはapt-get(Debianベースのシステムなど)を使用しているシステムを使用している場合は、次のコマンドのいずれかを使用してすべての依存関係をインストールできます。

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev
 

必要な依存関係がすべて整ったら、Git Webサイトから最新のスナップショットを取得することができます:

http://git-scm.com/download次に、コンパイルしてインストールします。

$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
 

これが行われた後、あなたはGit自身でアップデートのためにGitを入手することもできます:

$ git clone git://git.kernel.org/pub/scm/git/git.git
 

Linuxへのインストール

バイナリインストーラを使ってGitをLinuxにインストールしたいのであれば、配布物に付属している基本的なパッケージ管理ツールを使ってGitをインストールすることができます。 Fedoraを使っているなら、yumを使うことができます:

$ yum install git
 

あるいは、あなたがUbuntuのようなDebianベースのディストリビューションを使っているなら、apt-getを試してみてください:

$ apt-get install git
 

Macにインストールする

MacにGitをインストールするには簡単な3つの方法があります。最も簡単なのはグラフィカルなGitインストーラを使用することです。これはSourceForgeページからダウンロードできます。

http://sourceforge.net/projects/git-osx-installer/

図1-7。 Git OS Xインストーラ。他の主な方法は、GitをMacPorts( http://www.macports.org)でインストールすることです。 MacPortsがインストールされている場合、経由でGitをインストールしてください

$ sudo port install git +svn +doc +bash_completion +gitweb
 

すべてのエキストラを追加する必要はありませんが、SubversionリポジトリでGitを使う必要がある場合(8章を参照)には、+ svnを組み込むことをお勧めします。

Homebrew( http://brew.sh/)はGitをインストールするもう一つの方法です。あなたがHomebrewをインストールしている場合、経由でGitをインストールしてください

$ brew install git
 

Windowsへのインストール

WindowsにGitをインストールするのはとても簡単です。 msysGitプロジェクトには、インストール手順が簡単です。インストーラのexeファイルをGitHubページからダウンロードして実行してください:

http://msysgit.github.io
 

それがインストールされた後、コマンドラインのバージョン(後で便利になるSSHクライアントを含む)と標準のGUIの両方があります。

Windowsの使用上の注意:提供されているmsysGitシェル(Unixスタイル)を使ってGitを使用する必要があります。このマニュアルでは複雑なコマンドラインを使用できます。なんらかの理由で、ネイティブのWindowsシェル/コマンドラインコンソールを使用する必要がある場合は、一重引用符(スペースを含むパラメータの場合)の代わりに二重引用符を使用する必要があります。また、サーカンフレックスアクセントで終わるパラメータを引用する必要があります)がWindows上の継続記号であるため、最後に行がある場合

コマンドについて学ぶ

gitコマンドの詳細、つまりコマンドの動作、使用可能なオプション、その他のドキュメントの詳細については、-- --help オプションまたはhelp コマンドを使用してください。

たとえば、 git diff コマンドに関する利用可能な情報をすべて取得するには、次のようにします。

git diff --help
git help diff
 

同様に、 status コマンドに関する利用可能なすべての情報を取得するには、次のようにします。

git status --help
git help status
 

最も使用されているコマンドラインフラグの意味を簡単に表示するには、 -h 使用します。

git checkout -h
 

SSH for Gitをセットアップする

Windowsを使用している場合は、 Git Bashを開きますMacまたはLinuxを使用している場合は、端末を開きます。

SSH鍵を生成する前に、既存のSSH鍵があるかどうかを確認することができます。

~/.ssh ディレクトリの内容を一覧表示する:

$ ls -al ~/.ssh 
# Lists all the files in your ~/.ssh directory
 

公開されているSSHキーが既にあるかどうかを確認するには、ディレクトリ一覧を確認してください。デフォルトでは、公開鍵のファイル名は次のいずれかです。

id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub
 

Bitbucket、GitHub(または同様の)アカウントで使用したい既存の公開鍵と秘密鍵のペアが表示されている場合は、 id_*.pub ファイルの内容をコピーできます。

それ以外の場合は、次のコマンドで新しい公開鍵と秘密鍵のペアを作成できます。

$ ssh-keygen
 

EnterまたはReturnキーを押して、デフォルトの場所を受け入れます。プロンプトが表示されたらパスフレーズを入力して再入力するか、空のままにします。

SSH鍵がssh-agentに追加されていることを確認してください。バックグラウンドで起動していない場合は、ssh-agentをバックグラウンドで起動します。

$ eval "$(ssh-agent -s)"
 

SSH鍵をssh-agentに追加します。コマンドのid_rsa秘密鍵ファイルの名前で置き換える必要があることに注意してください。

$ ssh-add ~/.ssh/id_rsa
 

既存のリポジトリの上流をHTTPSからSSHに変更する場合は、次のコマンドを実行します。

$ git remote set-url origin ssh://git@bitbucket.server.com:7999/projects/your_project.git
 

SSHで新しいリポジトリをクローンするには、次のコマンドを実行します:

$ git clone ssh://git@bitbucket.server.com:7999/projects/your_project.git
 

アップストリームリモートを設定する

フォーク(例:Github上のオープンソースプロジェクト)をクローンしている場合は、アップストリームリポジトリへのプッシュアクセスがない可能性がありますので、両方のフォークが必要ですが、アップストリームリポジトリをフェッチできる必要があります。

最初にリモート名を確認してください:

$ git remote -v
origin    https://github.com/myusername/repo.git (fetch)
origin    https://github.com/myusername/repo.git (push)
upstream  # this line may or may not be here
 

upstream が既にある場合(それはいくつかのバージョンがあります)、URLを設定する必要があります(現在は空です):

$ git remote set-url upstream https://github.com/projectusername/repo.git
 

アップストリームが存在しない場合、または友人/同僚のフォークを追加したい場合(現在は存在しません):

$ git remote add upstream https://github.com/projectusername/repo.git
$ git remote add dave https://github.com/dave/repo.git
 

ユーザー名と電子メールの設定

You need to set who you are *before* creating any commit.  That will allow commits to have the right author name and email associated to them.
 

リモートリポジトリにプッシュする際に認証とは何の関係もありません (例えば、GitHub、BitBucket、GitLabアカウントを使用してリモートリポジトリにプッシュする場合)

すべてのリポジトリのアイデンティティを宣言するには、 git config --global 使います
これにより、ユーザーの.gitconfig ファイルに設定が保存されます(例: $HOME/.gitconfig 場合は%USERPROFILE%\.gitconfig

git config --global user.name "Your Name"
git config --global user.email mail@example.com
 

単一リポジトリのIDを宣言するには、リポジトリ内でgit config を使用します。
これは、個々のリポジトリ内の設定を$GIT_DIR/config ファイルに保存します。例: /path/to/your/repo/.git/config

cd /path/to/my/repo
git config user.name "Your Login At Work"
git config user.email mail_at_work@example.com
 

リポジトリの設定ファイルに格納されている設定は、そのリポジトリを使用するときにグローバル設定よりも優先されます。


ヒント:異なるアイデンティティ(オープンソースプロジェクト、職場、プライベートレポなど)を持っていて、自分が作業している別のリポジトリごとに正しいIDを設定するのを忘れたくはない:

  • グローバルIDを削除する

    git config --global --remove-section user.name
    git config --global --remove-section user.email
     
2.8
  • グローバル設定ではなく、リポジトリの設定内でのみあなたの身元を探すように強制するには:

      git config --global user.useConfigOnly true
     

そうすることで、与えられたリポジトリに対してuser.nameuser.email を設定してコミットしようとするのを忘れると、次のように表示されます:

no name was given and auto-detection is disabled
no email was given and auto-detection is disabled
 

コードの共有

あなたのコードを共有するには、ローカルリポジトリをコピーするリポジトリをリモートサーバ上に作成します。

リモートサーバー上のスペースの使用を最小限に抑えるため、裸のリポジトリを作成します.1つは.git オブジェクトのみを持ち、ファイルシステムに作業コピーを作成しません。ボーナスとして、 このリモートをアップストリームサーバーとして設定して、他のプログラマーと簡単にアップデートを共有します。

リモートサーバーで:

git init --bare /path/to/repo.git
 

ローカルマシン上:

git remote add origin ssh://username@server:/path/to/repo.git
 

ssh: はリモートリポジトリにアクセスする方法の1つに過ぎないことに注意してください)。

次に、ローカルリポジトリをリモートにコピーします。

git push --set-upstream origin master
 

--set-upstream (または-u )を追加すると、引数のないGitコマンドで使用される上流参照(トラッキング)参照が作成されます(例: git pull