6
5

More than 3 years have passed since last update.

独習Gitを読んだまとめ(絵)

Posted at

1. プッシュするまでの流れ

image.png

ステージングにあげる

$ git add [file]
$ git add .

ワークスペースに戻したい

$ git reset [file]

コミットする

$ git commit -m [comment]

プッシュする

$ git push [destination] [branch]

ただし、リモートリポジトリの同一名称のブランチにpushする分には引数は省略可能。

2. ブランチ

image.png
HEADとは現在のコミットの位置を表すポインタ。checkoutコマンドはこのポインタの指す場所を変更するコマンド。
なので、ブランチ名だけでなくコミットのSHA1_IDを指定することも可能。

$ git checkout [branch]
$ git checkout -b [branch] #作成して移動
$ git checkout [SHA1_ID]
$ git branch [branch] #作成
$ git branch -d [branch] #削除

3. スタッシュ

image.png
Stushとは一時退避場所。
ステージングに変更がある状態ではブランチを移動できない。その旨のエラーが出る。そこで使用するのがStash。
移動前に格納して、移動後に取り出す。上記はmaster→branchDevへ移動する例。

$ git stash       # stashに格納
$ git stach list  # 一覧表示
$ git stash pop   # 取り出し

4. マージ

image.png
複数のブランチを一つにするときにはコンフリクトが生じることがある。
それを解決するのがmergeである。
ファイルを編集し、再度コミットすることでマージできる。
取り込む側のブランチ上でこのコマンドを実行する。

$ git merge [branch]

5. クローン

image.png
ブランチ全てを持っては行かない。追跡用のそのブランチへのパスだけ持っている。
必要であればcheckout [branch]とすると$git checkout -b branch remotes/origin/[branch]と等価な実行結果が得られる。

$ git clone [already_exist_branch] [new_branch]  #作成

6. ベアリポジトリ

作業場のないリポジトリ。github上に置いているリモートリポジトリはこれに当たる。
編集方法はpushのみ。
image.png

$ git clone --bare [already_exist_branch] [new_bare_branch]  #作成

7. remoteコマンド

image.png
リモートリポジトリの情報を取得。

$ git remote -v show originとすることで、リモートのoriginと自身を比べて最新か更新があるかがわかる。

remote origin
Fetch URL: /Users/username/bare_test
Push URL: /Users/username/bare_test HEAD branch: master Remote branches:
  branchB tracked
  branchC tracked
  branchD tracked
Local branch configured for 'git pull': 
  master merges with remote master
Local ref configured for 'git push': 
  master pushes to master (up to date)

image.png

8. プル

fetchしてmergeしている。

(1) コンフリクトしない易しい時

image.png

(2) コンフリクトしためんどくさい時

image.png

9. リモートへの新規ブランチ作成

image.png
ローカルで作った後に反映させる。

$ git push --set-upstream origin [new_branch]

10. rebaseを使う

base(ブランチが枝分かれした部分)を変更できる。

ユースケース1

image.png

ユースケース2

同じく、例としては何度も追加した対して中身のないコミットログを全てgitにあげるのは無駄なので、いらないものをスカッシュする。
image.png

11. 設定

image.png

エイリアス$ git lolは以下のようにして設定する。

$ git config --global alias.lol "log --graph --decorate --pretty=oneline --all --abbrev-commit"
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5