概要
この投稿では,バージョン管理ソフトウェアである Git を Cygwin 上から利用する方法について,説明する.
リモートリポジトリには Bitbucket を利用することを前提とする.また,操作は基本的にコマンドを利用する.
目標は,ローカルにある既存のプロジェクトファイルを,リモートリポジトリへ push することである.
なお,この記事は,Git 1 日目の素人によって綴られたことを明記しておく.
【語句】 | リポジトリ | : プロジェクトのこと (ソースコードのまとまり) |
Bitbucket | : Git が利用できるリモートリポジトリの一つ.GitHub と異なり,無料で非公開にすることができる | |
(ただし,一つのプロジェクトに対して,登録できる人数は 5 名までに限られる) |
ローカルリポジトリの作成
Cygwin のパッケージについて,個別に吟味してインストールするのは手間なので,すべてインストールした
■ Cygwin に Git がインストールされていることは,下記のコマンドによって確認できる
■
■ Git を初期化する
■ Git の状態を確認する
■ Git の管理下に置きたいファイルを追加する
■ Cygwin に Git がインストールされていることは,下記のコマンドによって確認できる
$ git --versionインストールされていれば,下記のように,Git のバージョンを得る
git version 2.8.3
$ cd
コマンドで移動する.(ここでは,ExampleProject という既存のプロジェクトのディレクトリへ移動したとする)
$ cd [対象のプロジェクトファイル内 (リポジトリの作成先)]
$ git init Initialized empty Git repository in /[カレントディレクトリ]/.git/ここで,
$ ls
コマンドを実行すると,下記の結果を得る.(カレントディレクトリに [.git] なるファイルが作成されている)
$ ls -a . .. .git main.cpp makefile read_me.txt
$ git status On branch master Initial commit Untracked files: (use "git addすると,上記のように,..." to include in what will be committed) main.cpp makefile read_me.txt nothing added to commit but untracked files present (use "git add" to track)
$ git add <file>...
コマンドでファイルが追加できると教えてくれる
ファイルを一つずつ追加する場合
■ ユーザー情報をローカルの Git に登録する
$ git add [Gitに追加するファイル](
$ git status
コマンドで認識されている,) 全てのファイルを追加する場合 (ファイル名の部分を.
にする)
$ git add .ここで,再び
$ git status
コマンドを実行すると,下記の結果を得る
$ git status On branch master Initial commit Changes to be committed: (use "git rm --cachedここでは,ご丁寧に,..." to unstage) new file: main.cpp new file: makefile new file: read_me.txt
$ git rm --cached <file>...
コマンドでファイルの登録を解除できると教えてくれている
同一 PC 上で利用する Git のデフォルト値として設定する場合
■ ローカルのリポジトリに commit する
$ git config --global user.email "email@example.com" $ git config --global user.name "yourname"同一 PC 上であっても,リポジトリごとに,設定を使い分ける場合
$ git config --local user.email "email@example.com" $ git config --local user.name "yourname"
$ git commit -m "コメント (例:first commit)"なお,commit するには,コメントが必須である. 次は,リモートリポジトリに push する必要があるが,これについては,Bitbucket にリモートリポジトリを作成し,接続を確立した後に述べる
commit 時のコメントを変更する
□ まずは,現在の状況を確認する.
□ 下記コマンドを実行すると,Vi エディタが開くので,コメントの内容を編集する.
□ もう一度,はじめのコマンドを実行し,期待通りにコメントが編集できていることを確認する.
$ git log commit XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Author: yournameDate: Thu Month DD HH:MM:SS YYYY +DiffarenceFromUTC コメント (例:first commit)
$ git commit --amend [master 456f3c6] コメント (例:first commit) Date: Thu Month DD HH:MM:SS YYYY +DiffarenceFromUTC 3 files changed, 121 insertions(+) create mode 100755 main.cpp create mode 100755 makefile create mode 100755 read_me.txt
$ git log commit XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Author: yournameDate: Thu Month DD HH:MM:SS YYYY +DiffarenceFromUTC 修正したコメント (例:first commit)
リモートリポジトリの作成
Bitbucket に登録し,任意の名前のリポジトリを作成する.(登録および作成に関しては,非常に簡単なため,省略する)
ここでは,ブラウザ上から Bitbucket 上に ExampleProject という名前のリポジトリを作成したとして,話を進める.
※ もし,コマンドでリモートサーバーに新規リポジトリを作成する方法をご存じの方がいらっしゃれば,教えてください.
ここでは,ブラウザ上から Bitbucket 上に ExampleProject という名前のリポジトリを作成したとして,話を進める.
※ もし,コマンドでリモートサーバーに新規リポジトリを作成する方法をご存じの方がいらっしゃれば,教えてください.
リモートリポジトリとの SSH 接続
SSH 接続の設定
SSH 接続するために,まずは,秘密鍵と公開鍵のペアを作成する
■ 秘密鍵と公開鍵のペアを作成 (※アメリカ国立標準技術研究所は,3072 bits 以上堅牢な鍵を推奨している[9])
■ 秘密鍵 (id_rsa) のパーミッションを 600 に変更する.(セキュリティの問題)
現在のパーミッションを確認するには,
値は,r(読み取り): 4,w(書き込み): 2,x(実行): 1 である)
■ 作成した秘密鍵と公開鍵を移動しておく
■ 秘密鍵と公開鍵のペアを作成 (※アメリカ国立標準技術研究所は,3072 bits 以上堅牢な鍵を推奨している[9])
$ cd ~/.ssh $ ssh-keygen -t rsa -b 4096 -C email@example.comこのとき,次の 2 つのファイルが作成されている
$ ls id_rsa id_rsa.pub
id_rsa | : 秘密鍵 (人に教えてはいけない) |
id_rsa.pub | : 公開鍵 (人に教えても問題にならない) (pub は,public の pub) |
$ chmod 600 id_rsa(なお,ssh フォルダのパーミッションは,通常 700 である.変更するには,
$ chmod 700 ~/.ssh
とすれば良い.現在のパーミッションを確認するには,
$ cd ~/
,$ ls -all
とすれば良い.値は,r(読み取り): 4,w(書き込み): 2,x(実行): 1 である)
(
■ Cygwin に対して,秘密鍵 (id_rsa) の登録を行う.(恐らく,Cygwin 以外の Unix 系でも同様)
~/.ssh/bitbucket/
へ id_rsa
, id_rsa.pub
を移動し,~/.ssh/bitbucket/id_rsa
, ~/.ssh/bitbucket/id_rsa.pub
とする)
$ mkdir bitbucket $ mv id_rsa ./bitbucket $ mv id_rsa.pub ./bitbucket
□ 空のファイルを作成 (
□ エディタで開く (当然 Vim や Emacs 以外でも,編集できれば良い)
■ Bitbucket に公開鍵をアップロードする
~/.ssh/
へ ~/.ssh/config
を作成)
$ touch config
・Vim さんチーム
□ エディタで開いたら,下記のように記入する
$ vim config・Emacs さんチーム
$ emacs config
Bitbucket と Github の両方を利用する場合は,下記のように両方記入すれば良い.
そうでない場合は,必要な方のみ記入すれば良い.(つまり,今回の場合は,上から 7 行だけで良い)
Host bitbucket.org HostName bitbucket.org IdentityFile ~/.ssh/bitbucket/id_rsa User [LogginUserNameOfBitbucket] Port 22 TCPKeepAlive yes IdentitiesOnly yes Host github HostName github.com IdentityFile ~/.ssh/github/id_rsa User [LogginUserNameOfGithub] Port 22 TCPKeepAlive yes IdentitiesOnly yes
非常に簡単なため,省略する.(ここでは,ブラウザから公開鍵をアップロードしたとする)
SSH 接続
■ Bitbucket に SSH 接続する
(新規接続のため ~/known_hosts ファイルに設定されていない未知のホストであり,) 接続先の信頼性が確立されていないので,
本当に接続したいかと聞いてくるので,yes と入力して Enter キーを押す
このとき,リモートホストによって,一度接続が切断されたと言っているので,もう一度接続を試みる
ここまでで,Bitbucket への SSH 接続が確立した
■ 次回以降の接続
$ ssh -T bitbucket.org The authenticity of host 'bitbucket.org (104.192.143.3)' can't be established. RSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. Are you sure you want to continue connecting (yes/no)? yes <- (yes と入力して Enter) Warning: Permanently added 'bitbucket.org,104.192.143.3' (RSA) to the list of known hosts. Connection to bitbucket.org closed by remote host.すると,known hosts リストに追加したとの結果を得る.
このとき,リモートホストによって,一度接続が切断されたと言っているので,もう一度接続を試みる
$ ssh -T bitbucket.org Warning: Permanently added the RSA host key for IP address '104.192.143.1' to the list of known hosts. logged in as [LogginUserNameOfGit]. You can use git or hg to connect to Bitbucket. Shell access is disabled.今度は,Bitbucket に接続するために,git か hg のプロトコルを使用できる,と言っている.(shell access が無効になっているというのは,2 重に SSH 接続できないという意味???だと思われる)
ここまでで,Bitbucket への SSH 接続が確立した
次回以降接続する場合は,下記のように入力すると,
~/.ssh/config
の設定が候補として一覧表示される.
$ ssh -T [tab キー][tab キー] bitbucket.orgしたがって,
ssh -T b[tab キー]と入力すれば補完機能が働き自動入力される.
リモートリポジトリへの push
リモートリポジトリへ push する方法は,Bitbucket の誘導が頼りになる.(新しいリポジトリを作成したあとに毎回表示される.ただし再表示できないので注意)
■ リモートリポジトリへ push するためには,下記のコマンドで,ローカルリポジトリの
■ リモートリポジトリへ push する.(このとき,当然
■ タグを全て push する (今回はタグをつけていないので,不要)
ひとまず,以上の操作で,Bitbucket に push できているはずである■ リモートリポジトリへ push するためには,下記のコマンドで,ローカルリポジトリの
.git/config
に設定を追加する必要がある
$ git remote add origin git@bitbucket.org:[LogginUserNameOfGit]/ExampleProject.git
□ もし,リポジトリ名を間違えて登録した場合に,再度,上記コマンドを実行すると,下記のエラーを得る
□ こうした場合,一度下記のコマンドを実行して,ローカルの設定を削除したあと,再設定する
$ git remote add origin ssh://bitbucket.org/ExampleProject.git fatal: remote origin already exists.
$ git remote rm origin
$ ssh -T bitbucket.org
を実行して,接続を確立しておく必要がある)
$ git push -u origin --all Warning: Permanently added the RSA host key for IP address '104.192.143.2' to the list of known hosts. Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 7.30 KiB | 0 bytes/s, done. Total 4 (delta 0), reused 0 (delta 0) To git@bitbucket.org:[LogginUserNameOfRemoteGit]/ExampleProject.git * [new branch] master -> master Branch master set up to track remote branch master from origin.
$ git push -u origin --tags Everything up-to-date
2 回目以降の push
記事が長いので,2 回目の手順だけ簡潔にまとめる
■ Git の管理下に置きたいファイルを追加する
■ Bitbucket に SSH 接続する
■ リモートリポジトリへ push する
■ タグを全て push する (今回はタグをつけていないので,不要)
■ Git の管理下に置きたいファイルを追加する
ファイルを一つずつ追加する場合
■ ローカルのリポジトリに commit する
$ git add [Gitに追加するファイル](
$ git status
コマンドで認識されている,) 全てのファイルを追加する場合 (ファイル名の部分を.
にする)
$ git add .
$ git commit -m "コメント (例:first commit)"
$ ssh -T bitbucket.org
$ git push -u origin --all
$ git push -u origin --tags
参考資料
[1] git -Wikipedia
[2] これからGit を始めてみようという人のための使い方と入門フロー
[3] 特定のgitリポジトリでuserとemailを変える
[4] SSH認証キーをBitbucket/GitHubに設定しよう! [Mac簡単手順]
[5] [Bitbucket]gitコマンドでBitbucketを操作する 〜基本編〜
[6] git commit --amendでコミットメッセージを修正 - piruty_joyが2015/08/17にKobitoから投稿
[7] Gitで fatal: remote origin already exists. というメッセージが出る場合 2014-10-29 Wed - ponkiti's blog
[8] gitのtagをリモートにpushする - milligramme.github.io
[9] GitHubでEd25519鍵をつかう - ひと目で尋常じゃないもふもふだと(ry
気になる記事
[2] これからGit を始めてみようという人のための使い方と入門フロー
[3] 特定のgitリポジトリでuserとemailを変える
[4] SSH認証キーをBitbucket/GitHubに設定しよう! [Mac簡単手順]
[5] [Bitbucket]gitコマンドでBitbucketを操作する 〜基本編〜
[6] git commit --amendでコミットメッセージを修正 - piruty_joyが2015/08/17にKobitoから投稿
[7] Gitで fatal: remote origin already exists. というメッセージが出る場合 2014-10-29 Wed - ponkiti's blog
[8] gitのtagをリモートにpushする - milligramme.github.io
[9] GitHubでEd25519鍵をつかう - ひと目で尋常じゃないもふもふだと(ry
0 件のコメント:
コメントを投稿