はじめに
自分用です。。
参考
https://dotinstall.com/lessons/basic_git
http://lilylila.hatenablog.com/entry/2018/06/22/071932
branch関係
https://www.granfairs.com/blog/staff/gitbeginner01
fork先のリポジトリの情報を持ってくる関係
https://qiita.com/taoki11111/items/6582dafeb971f66d1f79
リポジトリの作成
管理したいディレクトリに移動して
$ git init
GitHubのページに行って、新しいRepositoryを作る。
ターミナルに戻って、README.mdを作る。
$ echo "# <プロジェクト名>" >> README.md
のっけたくないファイルやフォルダがあったら、.gitignoreファイルを作ってその名前をかく。
# style.cssがいらない
style.css
# tsファイルは全部いらない
*.ts
# /imagesフォルダはいらない
/images
インデックス(ステージングエリア)に追加(add)する。
$ git add . # 全部
$ git add <ファイル名>
リポジトリにcommitする。
$ git commit -m "コメント"
リモートリポジトリにpushする。
$ git remote add origin https://github.com/CanonMukai/<プロジェクト名>.git
$ git push -u origin master
便利
addとcommitを同時にできるコマンド
$ git commit -am "add and commit"
ちょっとだけコマンド集
# commitをログを見る
$ git log
# 見るのを終了するときはqを押す
# 差分を見る(ステージングに何かあるとき)
$ git diff
# ないとき
$ git diff --cached
# 直前のコミットに戻る
$ git reset --hard HEAD
# 直前の1こ前のコミットに戻る
$ git reset --hard HEAD^
# とあるコミットに戻る
$ git reset --hard <commit idの最初の7桁以上>
# 1こ前まで自分が採用していたコミットに戻る(今までのはあくまでコミットの時系列)
$ git reset --hard ORIG_HEAD
branch
hogeというbranchを作る。下の流れを見るとbranchのすごさがわかる。
$ git branch # branchを見る
*master
$ ls
index.html
$ git branch hoge # hogeというbranchを作る
$ git branch
*master
hoge
$ git checkout hoge
$ git branch
*hoge
master
## 新しいファイルstyle.cssを作る
$ ls
index.html style.css
$ git add .
$ git commit -m "Add style.css"
$ git checkout master
$ ls
index.html ## style.cssはhogeにしかない!!
branchちょい技紹介。
以下のコマンドでhogeという新しいbranchを作り、さらにcheckoutすることができる。便利。
$ git checkout -b hoge
merge(さっきの続き)
hogeで作ったstyle.cssをmasterにも反映させたいとき
$ git branch
*master
hoge
$ git merge hoge
# ログを見るとhogeのcommitが付け足されてる
$ ls
index.html style.css
# hogeを消そう
$ git branch -d hoge
$ git branch
*master
merge conflictの対応(頑張るぞ)
a.txtをを用意し、masterにすでにcommitしている状態。
original
ここで、hogeというbranchを作っておく。このときmasterでもhogeでもa.txtの内容は"original"。
$ git branch hoge
master branchでa.txtを以下に変更してadd, commitしておく。
Edit in master
hogeに移動する。
$ git checkout hoge
$ git branch
*hoge
master
a.txtを以下に変更してadd, commitしておく。
Edit in hoge
masterに移動。
$ git checkout master
$ git branch
hoge
*master
ここで、hogeの内容をmasterにmergeしようとすると、a.txtの"original"の状態からどちらのbranchでも変更しているのでmerge conflictが起こる。
$ gir merge hoge
Auto-merging a.txt
CONFLICT (content): Merge conflict in a.txt
Automatic merge failed; fix conflicts and then commit the result.
# git statusで状態を確認
$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: a.txt
no changes added to commit (use "git add" and/or "git commit -a")
このmerge conflictをエディタを使って解消する。
masterのa.txtをエディタで開くと以下のようになっている。
<<<<<<< HEAD
Edit in master
=======
Edit in hoge
>>>>>>> hoge
hogeを適用したいので以下のように変更する。手作業面倒だけども...
Edit in hoge
これをadd, commitするとmerge conflictを解消できる。
共同作業
# 他の人のリモートリポジトリの中身をクローンする
$ git clone https://~~~~
# リモートリポジトリをoriginに割り当てる(?)
$ git remote add origin https://github.com/~~~~~
# リモートリポジトリにローカルリポジトリの変更を反映させる
$ git push origin master
# 他の人が先にリモートリポジトリを変更していたらエラーがでるので、
# まずはリモートリポジトリの内容を引っ張ってくる
$ git pull origin master
# 運悪く他の人が自分と同じ箇所を変更していたらmerge conflictを解決する
とりあえずここまで。