momochi技術メモ

勉強したことなどを自分用にまとめます。

Git_06(stash)

作業を一時避難する

# 基本
git stash
# 未追跡ファイルも避難させる
git stash -u 
# 避難に名前をつける
git stash save "名前"

stash一覧を見る

git stash list

git stash list

stashを復元する

# 復元して、stashを残す
git stash apply
# 復元して、stashも削除する
git stash pop

復元対象の指定方法

# 最新のstash(0)
git stash pop 
# 番号で指定
git stash pop 1

オプション

--index:ステージ状態も維持して復元する

stashの中身をみる

git stash show <番号>

stashを削除する

# 指定して削除
git stash drop <番号>
# 全削除
git stash clear

Git_05(コミットの取り消し)

コミットの取り消し

打ち消したいコミットを削除して、最新に新しくコミットを積む

git revert <打ち消したいコミットID>

過去のコミットに巻き戻す

git reset <オプション> <巻き戻したい時点のコミット>

オプション

ワークツリー ステージング リポジトリ
--soft そのまま そのまま 削除
--mixed そのまま 削除 削除
--hard 削除 削除 削除

巻き戻しコミットの表現

  • HEAD^:直前のコミット
  • HEAD~{n}:n個前のコミット
  • HEAD~~~:3個前のコミット

HEAD~~~ = HEAD~{3} = HEAD^^^

revertとresetの使い分け

  • revert:pushした後、コミットは残るので比較的安全
  • reset:pushする前、コミットごと消すので注意深く!!

間違えてresetしてしまったとき reflog

git reflog

Git_04(ブランチ)

ブランチとは?

履歴の流れを分岐して記録していくためのもの。分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができる。また、分岐したブランチは他のブランチと合流(マージ)することで、一つのブランチにまとめ直すことが出来ます。

実態は、コミットを指したポインタ。

ブランチを表示する

# ローカルのブランチを表示
git branch
# リモートも含めてすべてのブランチを表示
git branch -a
# ブランチを作成
git branch <ブランチ名>

ブランチを切り替える

# 既存のブランチに切り替える
git checkout <既存ブランチ>
# 新規ブランチを作成して、そこに移動する
git checkout -b <新ブランチ>

git のバージョン2.23以降はgit switchコマンドも使用可能

# 既存のブランチに切り替える
git switch<既存ブランチ>
# 新規ブランチを作成して、そこに移動する
git switch -c <新ブランチ>

ブランチを統合する

作業ブランチに指定のブランチが統合される。

# <ブランチ名>を作業ブランチに統合する
git merge <ブランチ名>
# リモートブランチから統合する
git merge <リモート名/ブランチ名>

mergeの種類

  • Fast-Foward
  • non-Fast-Foward

ブランチを削除する

git branch -d(-D:強制) <ブランチ名>

Git_03(リモート関連 push, pull, fetch, mergeなど)

リモートリポジトリを登録する

git remote add <リモート名> <リモートリポURL>
# 例)
git remote add origin <URL>

接続しているリモートの情報を確認する

# originなどを表示
git remote
# URLも表示
git remote -v

リモートリポジトリにコミットを登録 push

git push <リモート名> <ブランチ名>

# 例)masterブランチをoriginに登録
git push origin master

# 現在のブランチを上流ブランチにpushする
git push 

上流ブランチ*1

リモートから情報を取得 + 統合 pull

git pull = git fetch + git merge origin/<branch>

# 現在の作業ブランチに指定のリモートブランチを統合する
git pull <リモート名> <ブランチ名>
# 省略したら、origin <作業ブランチ>
git pull

リモートから情報を取得する fetch

git fetch <リモート名>

ブランチを統合する merge

# 現在の作業ブランチに指定のブランチを統合する
git merge <統合したいブランチ>

*1: origin/master はローカルmaster ブランチの上流ブランチ (upstream branch)である

Git_02(log, rm, mv)

コミット履歴を表示する log

git log
# 1行で表示する
git log --oneline 
# ファイルの変更差分も表示
git log -p <ファイル名>
# 表示するコミット数を制限
git log -n <コミット数>

gitから削除する git rm

# ワークツリーからファイルを削除+git管理から削除
git rm <ファイル名>
# ディレクトリの場合
git rm -r <ディレクトリ名>
# git管理からのみ削除
git rm --cached <ファイル名>

ファイル移動する git mv

git mv <旧ファイル> <新ファイル>

git mvは下記操作を一発で行っている

mv <旧ファイル> <新ファイル>
git rm <旧ファイル>
git add <新ファイル>

Git_01(add, commit, status, diff)

基本構成図

ステージングに移す add

# ワークツリーにあるすべてのファイルをステージングに移す
git add .
# 指定したファイルのみ
git add <ファイル名>

addを取り消し

git restore

リポジトリに登録 commit

# コミットメッセージを入力するエディタが起動する
git commit 
# エディタを省略する
git commit -m "<コミットメッセージ>"
# 差分がエディタに書き出される
git commit -v

commitを取り消し

git restore --staged

直前のコミットに追加の変更を加える

コミットをする → この変更を忘れてた!! → 変更を加える → git commit --amend

git commit --amend

変更状況を確認 status

git status

差分を確認する diff

# ワークツリーとステージの差分
git diff <ファイル名>
# ステージとリポジトリの差分
git diff --staged <ファイル名>

テスト投稿

## 個人目標

### 半年後の姿
チーム内での存在感をだしつつ、プロジェクトではメンバーを引っ張って前に倒していける存在

### トピック

1. 技術力向上
- 基本設計・アーキテクチャ
- AWS 知識

2. リーダーシップ
- 部下からの信頼
- メンバー・チーム全体の作業意識向上

3. チーム内での存在感
- 昼会などの定例の場で存在感を出していく
- チーム内の取り組みなどに参加していく

### 行動目標

- 技術力向上
  - アーキテクチャ系の本を読む
  - PD 会のような場に参加していく
  - AWS ソリューションアーキテクト取得のために勉強時間を作る(週7時間以上)
- リーダーシップ
  - チームメンバーに、全体的なスケジュールやそれに対して今やるべきことや期限感を共有し、作業意識向上を促す
  - 話し合いをしてもなかなか進まないときは、率先して決断し、物事を前に進めるようにする
- チーム内での存在感
  - 昼会の場で発言を増やしていく
  - 技術を共有する会に参加する

### 達成基準
- 技術力向上
  - アーキテクチャ系の本を1冊以上読む
  - AWS ソリューションアーキテクト取得
- リーダーシップ
  - ★
- チーム内での存在感
  - 2週に1回以上発言する