| marp | true |
|---|---|
| paginate | true |
| theme | c0de |
| math | katex |
- ファイル履歴をスマートに管理
- 右のような例をなくすことが可能
- 昔のバージョンに戻る
- 例:「この実装だめだわ:sob: 戻ろ」
- スマートな共同開発
- ファイルを送りあったりしなくてよい
- Linux カーネルの開発をするために Linus が開発
- 個人でも企業でも使用される
- Git を用いた開発経験とチーム開発経験は面接でよく聞かれる(もしくは当たり前と思われる)
- 右のおっさんがLinus
- "NVIDIA は最低の会社。NVIDIA F**K YOU!"はあまりにも有名
- add, commit, status
- push
- stash, switch, branch
- clone, init
- reset
- rm, mv
- merge
- revert, diff
- checkout(上位互換が現れたためあまり使われない)
- ローカルリポジトリの初期化
- ステージング
- コミットしたい作業ファイルの変更をインデックスに追加
- コミット
- ローカルリポジトリにコミット
- イメージは「セーブポイントの作成」
- プッシュ
- コミットをリモートリポジトリにプッシュ
mainからブランチを切る- プッシュする
mainに Pull Request を出す- レビューされる
- 「ここを直してくれ」
- 「ここはどういう意味?」
- (承認されたら)マージする
mainブランチに直接コミット、プッシュはしない!
A. 誰かのリモートリポジトリ B. 自分のリモートリポジトリ C. 自分のローカルリポジトリ
重要ポイント 自分のリモートリポジトリから相手のリモートリポジトリに Pull Request を送る
Pull Request: 「こんな変更を加えたので Pull してください」というリクエスト
.git/フォルダが作成される- 注意
.github/と.git/は異なるものgit cloneした場合はgit initは必要ない- クローンはGitHub から
.git/をコピーするようなもの
- クローンはGitHub から
- 使い方の例
git add .zshrcgit add *.cmain.cやindex.cなど、拡張子がcのファイルをすべてステージング
git add images/images/下のファイルをすべてステージング
- 例
git commit -m "fix: fix typo"git commit --verbose(おすすめはしない)
git commitだけだと変な画面()に遷移- ターミナルから Vi や nano といったエディタが開く
- 初心者だとこの画面を抜けるだけで大変
- コミットするものに間違いがないか確認できるから
- ただし 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: ○○ を実装
他に
- Git のコミットメッセージの書き方 (今すぐ読む必要はない。いつか思い出そう)
- 企業のものを見てみよう
内容
- 自分でリポジトリを作る(init)
- README.md に何か書く
- ステージングする
- コミットする
$ git init
(README.md になにか書く)
$ git add README.md
$ git commit -m "docs: README を更新"内容
- 自分でリポジトリを作る(init)
- README.md に何か書く
- ステージング
- コミット
- 使い方
git loggit log --graph- 履歴をグラフ化してくれる
- 現在のブランチの履歴のみ
- 野上は VSCode の
Git Graphが好き
git log --graph --all- すべてのブランチのコミット履歴をグラフとして表示
方法
- VSCode 拡張機能 Git Graph
- Git の GUI
- Sourcetree
- GitKraken
野上は Git Graph 使ってます これで充分
- 「取り消したいコミットを打ち消すようなコミットを新しく生成する」もの
- 「歴史をなかったことにする」のではなく、「ここからやり直そう」
- 「コミットしたけど変なファイル入ってた」はよくあること
- これを
revertを使用して取り消す
- これを
(余談)
- マージコミットを取り消したいときの
revertは特別git revert -m [1|2] <commit>
# HEAD を移す
# 直前のコミットはステージング領域へ
$ git reset --soft HEAD^
# 上と同義
$ git reset --soft HEAD~1git reset --soft <commit>- HEAD を指定したコミットにリセット
git reset --mixed <commit>- インデックスもリセット
git reset --hard <commmit>- インデックスとワークツリーをリセット
- 新しく何かコミットする
- ログで確認
- それを打ち消す
- ログで確認
- リモートリポジトリにプッシュ
- ローカルにコミット
- 再度リモートリポジトリにプッシュ
ポイント
git remote -vでローカルに紐付いているリモートリポジトリが見れる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 に確認できたら完了
- リモートリポジトリにプッシュ
- ローカルにコミット
- 再度リモートリポジトリにプッシュ
- ブランチの切り方
- おすすめ:
git switch -c hoge-cは create という意味- ブランチを作成して移動するという意味
- 古い書き方:
git checkout -b
- おすすめ:
- ブランチの移動の仕方
- おすすめ:
git switch hoge - 古い書き方:
git checkout hoge
- おすすめ:
<<<<<<< HEAD
(今自分がチェックアウトしているブランチでの変更)
=======
(取りこもうとしたブランチでの変更)
>>>>>>>
マージしようとしたものがコンフリクトしているとこのように書き込まれる
解消の方法
- この<や>を消しつつ内容を正しいものに 修正する
- ステージングする
- コミットする
つまり最終的にあるべきソースコードとなるように変更して、git add
mainから適当にブランチを切る- プッシュする
mainに Pull Request を出す- 良いと思ったらマージする
- 例:*.local.env
一度ステージングしてしまったものを後から.gitignoreに追加しても意味がない
git rm --cached hoge
- 「しまった。develop ブランチで作業するつもりが main ブランチで作業してた」 という時に使用










