Skip to content

Latest commit

 

History

History
462 lines (305 loc) · 11.7 KB

File metadata and controls

462 lines (305 loc) · 11.7 KB
marp true
paginate true
theme c0de
math katex

w:400 bg left:33%

Git 入門


プログラムの履歴の記録

w:500px

👍 できること

  • ファイル履歴をスマートに管理
    • 右のような例をなくすことが可能
  • 昔のバージョンに戻る
    • 例:「この実装だめだわ:sob: 戻ろ」
  • スマートな共同開発
    • ファイルを送りあったりしなくてよい

  • Linux カーネルの開発をするために Linus が開発
  • 個人でも企業でも使用される
    • Git を用いた開発経験とチーム開発経験は面接でよく聞かれる(もしくは当たり前と思われる)
  • 右のおっさんがLinus

w:400 bg left:33%

コマンド


  1. add, commit, status
  2. push
  3. stash, switch, branch
  4. clone, init
  5. reset
  6. rm, mv
  7. merge
  8. revert, diff
  9. checkout(上位互換が現れたためあまり使われない)

w:400

  1. ローカルリポジトリの初期化
  2. ステージング
    • コミットしたい作業ファイルの変更をインデックスに追加
  3. コミット
    • ローカルリポジトリにコミット
    • イメージは「セーブポイントの作成」
  4. プッシュ
    • コミットをリモートリポジトリにプッシュ

w:350

  1. mainからブランチを切る
  2. プッシュする
  3. mainに Pull Request を出す
  4. レビューされる
    • 「ここを直してくれ」
    • 「ここはどういう意味?」
  5. (承認されたら)マージする

mainブランチに直接コミット、プッシュはしない!


w:550

A. 誰かのリモートリポジトリ B. 自分のリモートリポジトリ C. 自分のローカルリポジトリ

重要ポイント 自分のリモートリポジトリから相手のリモートリポジトリに Pull Request を送る

Pull Request: 「こんな変更を加えたので Pull してください」というリクエスト


リポジトリの新規作成

  • .git/フォルダが作成される
  • 注意
    • .github/.git/は異なるもの
    • git cloneした場合はgit initは必要ない
      • クローンはGitHub から.git/をコピーするようなもの

w:400

ファイルのステージ(stage)

  • 使い方の例
    • git add .zshrc
    • git add *.c
      • main.cindex.cなど、拡張子がcのファイルをすべてステージング
    • git add images/
      • images/下のファイルをすべてステージング

w:400

ローカルリポジトリへファイルをコミット

    1. git commit -m "fix: fix typo"
    2. git commit --verbose(おすすめはしない)
  • git commit だけだと変な画面()に遷移
    • ターミナルから Vi や nano といったエディタが開く
    • 初心者だとこの画面を抜けるだけで大変

w:440

野上は git commit --verbose を使用

  • コミットするものに間違いがないか確認できるから
    • ただし diff はものすごい見にくい
    • diff だけは VSCode で見る
  • コミット時に Vim エディタを起動する方法
    • git config --global core.editor vim
    • 何も設定しないと Nano エディタが起動
  • エイリアスgcを追加
    • gc='git commit --verbose'(Linux)

状況の表示

  • 使い方
    • git status
  • エイリアスを登録すると便利
    • 野上は alias gst='git status'
  • 何かおかしくなったらgit statusを打って、メッセージを読もう
    • だいたい解決方法が書いてある

コミットメッセージを見て内容が想像できるように書く

  • docs: ○○ を追記
  • fix: ○○ のバグを直した
  • feat: ○○ を実装

他に


README.mdを作成してコミットしてみよう

内容

  1. 自分でリポジトリを作る(init)
  2. README.md に何か書く
  3. ステージングする
  4. コミットする

$ git init
(README.md になにか書く)
$ git add README.md
$ git commit -m "docs: README を更新"

内容

  1. 自分でリポジトリを作る(init)
  2. README.md に何か書く
  3. ステージング
  4. コミット

⚠️ $ の後ろに文字が実際に打つコマンド $ マークは慣習的にターミナルを表すもの


コミット履歴の閲覧

  • 使い方
    • git log
    • git log --graph
      • 履歴をグラフ化してくれる
      • 現在のブランチの履歴のみ
      • 野上は VSCode の Git Graph が好き
    • git log --graph --all
      • すべてのブランチのコミット履歴をグラフとして表示

w:500

方法

  • VSCode 拡張機能 Git Graph
  • Git の GUI
    • Sourcetree
    • GitKraken

野上は Git Graph 使ってます これで充分


git revert とは

  • 「取り消したいコミットを打ち消すようなコミットを新しく生成する」もの
    • 「歴史をなかったことにする」のではなく、「ここからやり直そう」
  • 「コミットしたけど変なファイル入ってた」はよくあること
    • これをrevertを使用して取り消す

(余談)

  • マージコミットを取り消したいときのrevertは特別
    • git revert -m [1|2] <commit>

# HEAD を移す
# 直前のコミットはステージング領域へ
$ git reset --soft HEAD^
# 上と同義
$ git reset --soft HEAD~1

git reset

  • git reset --soft <commit>
    • HEAD を指定したコミットにリセット
  • git reset --mixed <commit>
    • インデックスもリセット
  • git reset --hard <commmit>
    • インデックスとワークツリーをリセット

新しくコミットしてそれを打ち消す

  1. 新しく何かコミットする
  2. ログで確認
  3. それを打ち消す
  4. ログで確認

w:600

次のことをやってみよう

  1. リモートリポジトリにプッシュ
  2. ローカルにコミット
  3. 再度リモートリポジトリにプッシュ

ポイント

  1. git remote -v でローカルに紐付いているリモートリポジトリが見れる
  2. git remote add origin <githubのリポジトリのurl>

# ⚠:すでにローカルにコミットしている状態

# リモートリポジトリの紐付きの確認
$ git remote -v

# リモートリポジトリの追加の例
$ git remote add origin https://github.com/*.git

# 現在のブランチ名が main の場合
$ git push origin main

# 現在のブランチ名が master の場合
$ git push origin master

# 何か変更を加えてそれを add, commitし、push する
# GitHub に確認できたら完了

次のことをやってみよう

  1. リモートリポジトリにプッシュ
  2. ローカルにコミット
  3. 再度リモートリポジトリにプッシュ

コミットに付いたラベル(ポインタ)

w:500

  • ブランチの切り方
    • おすすめ:git switch -c hoge
      • -c は create という意味
      • ブランチを作成して移動するという意味
    • 古い書き方:git checkout -b
  • ブランチの移動の仕方
    • おすすめ:git switch hoge
    • 古い書き方:git checkout hoge

<<<<<<< HEAD
(今自分がチェックアウトしているブランチでの変更)
=======
(取りこもうとしたブランチでの変更)
>>>>>>>

マージしようとしたものがコンフリクトしているとこのように書き込まれる

解消の方法

  • この<や>を消しつつ内容を正しいものに 修正する
  • ステージングする
  • コミットする

つまり最終的にあるべきソースコードとなるように変更して、git add


w:300

新しくブランチを切り、コミットし、GitHub から PR を出す(1人で)

  1. mainから適当にブランチを切る
  2. プッシュする
  3. mainに Pull Request を出す
  4. 良いと思ったらマージする

管理したくないものをリストアップ

  • 例:*.local.env

注意

一度ステージングしてしまったものを後から.gitignoreに追加しても意味がない

  • git rm --cached hoge

git stash

  • 「しまった。develop ブランチで作業するつもりが main ブランチで作業してた」 という時に使用