はじめに
結構忘れてしまうことがあるのでこちらも備忘録としてメモしていきたいと思います!!
Git
バージョンの管理システムの役割をし、コードの修正履歴を記録します。
いつどこをなぜ修正したのかの確認、複数メンバーで共同開発をする際に使用します。
シェルコマンドで操作します。
3つの場所
gitを使用する際はこの場所を考えながら操作をしていきます。
ワーキングディレクトリ
自分が作業を行なっている場所
ステージングエリア
変更内容を仮登録する場所。indexともいう
リポジトリ
実際に変更内容が記録される所
もっと詳細が書いてあるのを貼っておきます。
使用したバージョン管理の機能
-
add, commit
コードの変更を記録 -
log, diff
状態や変更箇所を記録 -
reset, revert
前の状態を復活 -
branch, checkout
作業に合わせて分岐 -
push, merge
作業結果を統合
リポジトリを作る
確認をしていくために実際にディレクトリを作っていきます。
1. mkdir mysample (作業のするディレクトリを作る)
2. cd mysample (移動)
3. git init (initでリポジトリを作るとmysampleが記録対象になる)
4. ls -a (確認)↓
% ls -a
. .. .git (隠しディレクトリができております)
状態を確認するコマンドたち
-
git status
現在のステージングやリポジトリの状態を確認できる -
git status -s もっとシンプルに見る
-
git log
コミットの履歴を確認する -
git log --oneline
-
git log -1 直近のログだけを確認できる
-
git branch
どこのブランチにいるのか確認ができる -
ls -al
使っていく
「kiroku.txt」というファイルを作ったのでまず仮登録していきます。
git add kiroku.txt
# 「git status」 で確認するとような感じ
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: kiroku.txt
リポジトリに追加します。
git commit
そうすると「vim」
というシェルで利用できるテキストエディタが開かれます。
Gitでコミットしようとすると、コミットメッセージの入力のために、自動的に起動します。
コミットメッセージを入力します。
どんな変更をしたか、なぜ変更したのかを書いていきます。
1st commit # ← (ここにコミットメッセージ)
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
# new file: kiroku.txt
#
~
~
# (下はまだ続いてます。)
「vim」 はコマンドモードと編集モードを切り替えて使用します。
編集モードに切り替える。
- A 現在の行の末尾に入力する
- a 現在のカーソル位置の右から入力する
コマンドモード
- u 元に戻す-
- :wq 保存して終了-
- :q! 保存しないで終了
うーむ・・ここら辺はまた今度深掘りしましょう・・・。
無事にコミットできると
# 「git status」 で確認
On branch master
nothing to commit, working tree clean
コミットできました!!
このようなリポジトリにコミットしたひとまとまりの状態を 「スナップショット」
と言います。
複数ファイル
「.」をつけるとワーキングディレクトリの全てのファイルを指定してくれます。
git add .
# (「git status」 で見る)
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: kiroku.txt
new file: kiroku2.txt
仮登録とコミットを一度にやってくれるコマンドもあります。
git commit -a -m "2nd commit"
# ↑コミットメッセージ
-
「-a」
ステージングエリアに登録済みのファイルの変更について仮登録とコミットを同時にやってくれる -
「-m」
コミットメッセージを1行だけ指定できる
「差分」を見る
どのような変更が行われたのかを確認します。
このような比較情報を「差分」と言います。
git diff
最新コミットとステージングエリアを比較します。
git diff --cached
最新コミットとワーキングディレクトリを比較します。
git diff HEAD
こんな感じで出てきます。
mysample % git diff HEAD
diff --git a/kiroku2.txt b/kiroku2.txt
index 360cddf..db701bb 100644
--- a/kiroku2.txt
+++ b/kiroku2.txt # (比較しているファイル)
@@ -1 +1,2 @@ # ファイルがどのように変更されているか @@変更前 変更後@@
-おはようございます。
\ No newline at end of file # どのような違いなのか
+おはようございます。 # 空白であれば変更なし
+お元気ですか # 「-」 は削除
\ No newline at end of file # 「+」 は追加
作業の履歴を取り消す
ステージング上の特定ファイルを一つ前の状態に戻したい時に使用します。
git reset kiroku.txt
ワーキングディレクトリのファイルを前の状態に戻します。
git checkout kiroku.txt
最新のコミットを打ち消すコマンドです。
git revert HEAD
ブランチを切る
作業内容に合わせてリポジトリを分岐する機能です。ブランチを使うと昨日の追加やバグの修正といった作業内容をリポジトリにまとめることが簡単にできます。
デフォルトでは「master」というブランチが用意されています。
ブランチを作ります。
git branch add_html
# 「git branch」で確認してみます。
add_html
* master # できた。
切り替えます。
git checkout add_html
* add_html
master # できた。
戻します。
git checkout master
add_html
* master # 戻った。
コミットの仕方ははじめにやったものと基本同じなのでブランチを切って移動した後もやり方は同じです。 ・・・とのこと!!!!
わかりました!!!!!
ブランチをマージする
ブランチのデータをmasterブランチに統合します。
git checkout master
git merge add_html
Updating 019bd0d..2a3e430
Fast-forward
kiroku.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
不要になりましたら
ブランチを削除します。
git branch -d add_html
Deleted branch add_html (was 2a3e430).
ちなみに
ブランチを作って、移動をもっと簡単に入力するには
git checkout -b add_html2
Switched to a new branch 'add_html2'
# 「git log」 で確認してみます。
add_css
* add_html2
master # 便利
コンフリクトを解決する
同じファイルに別々の人が同じファイルを変更して統合するとコンフリクトという衝突が起きます。
ファイルを確認して、<<<<< や ===== で囲まれているところが
衝突部分なので残したいコードのみ残して消去するか、全てを変更するかします。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>hello git</title>
</head>
<body>
<h1>見出し</h1>
<<<<<<< HEAD
<p>ここはmasterです。</p>
=======
<p>ここはadd_htmlです。</p>
>>>>>>> add_html
</body>
</html>
このような感じで。残したいもの以外は消します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>hello git</title>
</head>
<body>
<h1>見出し</h1> (これを消す)
<!-- <<<<<<< HEAD -->
<p>ここはmasterです。</p>
<!-- =======
<p>ここはadd_htmlです。</p>
>>>>>>> add_html -->
</body>
</html>
最後に通常通り仮登録とコミットをします。
git add index.html
git commit
プロジェクトを複製する(クローンする)
他のメンバーと共同開発しているプロジェクトに参加する方法です。
1. mkdir sample (格納するディレクトリを作成する)
2. cd sample (移動)
3. git clone [共有リポジトリのファイルパス].git (複製する)
共有した共同のリポジトリの情報を表示します。
git remote -v
修正して、仮登録とコミットしたのち、
コミットを共同リポジトリに反映させます。
git push origin master
また、プロジェクトの変更を取り込みたい場合はこのようにします。
git pull [共有リポジトリのファイルパス].git
まとめ
なんだか後半急いでダッシュな感じになってしまったので、もう少し詳しく調べてみたいと思います。
後は情報を見る時のオプションも次回は詳しくみていきたいです。
今日は終わりです!
参考
最近調べものをすると頻繁に出会うことに気付いたサイト。
見た目も素敵ですので貼っておきませう。
Gitについての色々な資料が載っている興味深いものも発見です。
こちらはコマンドがたくさん載っています。