産業第1事業部
鈴木真吾
バージョン管理システムの 1 つ
特徴として
Git では差分でなくスナップショットを管理
やっていることは追記型のファイルシステムに近い
<=> 中央集権型 (ex: subversion etc)
Git と他のバージョン管理システムとの違い
リポジトリのクローン
$ git clone https://github.com/30-seconds/30-seconds-of-code.git
Cloning into '30-seconds-of-code'...
remote: Enumerating objects: 36, done.
remote: Counting objects: 100% (36/36), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 29355 (delta 10), reused 27 (delta 6), pack-reused 29319
Receiving objects: 100% (29355/29355), 14.61 MiB | 2.76 MiB/s, done.
Resolving deltas: 100% (18497/18497), done.
$ cd 30-seconds-of-code/
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
$ git branch
* master
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/fix-module-generation
remotes/origin/glossary-String-clarification-of-instance
remotes/origin/is-negative-zero
remotes/origin/master
ブランチとは、開発の本流から分岐し、本流の開発を邪魔することなく作業を続ける機能のことです
(引用: https://git-scm.com/book/ja/v2/Git-のブランチ機能-ブランチとは)
$ git branch new-branch
$ git branch
* master
new-branch
$ git checkout new-branch
Switched to branch 'new-branch'
コミットする修正を選択する
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git add test.txt
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: test.txt
変更を取り入れてブランチを更新する
$ git commit -m "Add some files"
[master 07282e2] Add some files
1 file changed, 1 insertion(+)
create mode 100644 test.txt
過去のコミットは度々見返すことになる
分かりやすい・検索しやすいコミットにする
ローカルの変更をリモートに反映する
$ git push origin master
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 484 bytes | 484.00 KiB/s, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To github.com:shingo-s/myrepository.git
a1e20c0d..9e0ed125 mybranch -> mybranch
リモート追跡ブランチの変更をローカルに取り込む
$ git merge origin/master
Updating b12fe535..f6f7ec2c
Fast-forward
README | 17 +++++++++++++++--
1 files changed, 17 insertions(+), 2 deletions(-)
リモートの変更を「リモート追跡ブランチ」に取り込む
$ git fetch origin
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), done.
From github.com:shingo-s/myrepository
b12fe535..f6f7ec2c master -> origin/master
git pull = git fetch + git merge
fast foward できない
かつ
fast forward しない
fast foward できる
が
fast forward しない
fast foward できる
かつ
fast forward する
--no-ff と --ff の違い
[user]
name = Shingo Suzuki
email = hogehoge@hoge.com
[alias]
st = status
ci = commit
co = checkout
b = branch
stt = status -uno
difff = diff --word-diff
[merge]
ff = false
[pull]
rebase = true
[push]
default = current
[diff "wordx"]
textconv = docx2txt.sh
[http]
sslverify = false
proxy = http://my.proxy.co.jp:8888/
alias など設定しておくと良い
machine xxxx.co.jp
login shingo-s
password mypassword
なぜか ssh で繋げられない
どうしてもパスワード打ちたくない場合は .netrc に書く
平文なので当然非推奨
git ではブランチ作成が簡単になったので
ブランチの命名規則などを決めておくと良い
よく見るブランチ戦略
git flow で使うブランチ
まず安易に分割しない。分割する場合:
方法としては: