こんな時に使える Gitコマンド集
個人的に役立ったGitコマンドをつらつらと。
リモートブランチとローカルブランチを作成する
前提として、githubでリポジトリを作成(リモートブランチ作成)&ローカルに資材作成しておく。
①ローカルの資材をgit管理するための初期化(ローカルブランチ作成)
git init
②リモートブランチとローカルブランチを関連付けるためのコマンド
git remote add origin https://github.com/<username>/<repository name>.git
③リポジトリに対してローカルブランチをpush
git push -u origin main
ローカルブランチを削除
ローカルブランチを削除するためのコマンド
git branch -D 削除したいブランチ名
必ず、削除したいブランチ以外のブランチに切り替えてから実行すること。
じゃないとエラーになる。
-D
は未マージのブランチも削除できる強制削除なので、マージされてるローカルブランチだけ消したい場合、-D
の代わりに--merged
や-d
を使う。
たくさんブランチがあって消すのが面倒な人向けに、不要なローカルブランチをまとめて消すコマンド
git branch | egrep -v "(^\*|残したいブランチ名1|残したいブランチ名2)" | xargs git branch -D
(^\*|残したいブランチ名1|残したいブランチ名2)
の箇所に、残したいブランチを|
で繋いでいけば、必要なブランチだけを残して、不要なローカルブランチを一気に削除可能。
※ windows端末では、Git Bash
で実行しないとコマンドが使えないかもしれないです。
リモートブランチをローカルブランチに取り込む
リモートブランチをローカルブランチに取り込むためのコマンド
他人と作業していて、変更を取り込む際に使用する
git fetch
git rebase origin/取り込みたいブランチ名
# 以下、例
git rebase origin/master
git rebase origin/20220505
Conflict 解消時の操作
リモートブランチの最新状態を取り込んだ際に、ローカルブランチの Commit との Conflict が発生した場合の対処方法
# ローカルブランチでの作業をCommitする
git status
git add .
git commit -m "作業内容"
# リモートブランチの最新状態を取り込む
git fetch
git rebase origin/hoge ←ここで Conflict発生
# Conflictを修正する(取り込むべき変更を取り込む)
# Conflict修正後、変更をStagingして、rebaseを継続する
git status
git add .
git rebase --continue
その後、リポジトリに対してローカルブランチをpushする
git push origin 作業ブランチ名
現在のブランチの作業履歴を確認したい
ブランチの派生やコミット履歴を確認したいときに。
各コミットをツリー形式で表示
git log --graph
* commit aaaaa (HEAD -> hoge, origin/hoge)
| Author: user1 <user1@example.com>
| Date: Mon Dec 16 02:47:34 2024 +0900
|
| 2024/12/15 最新コミット
|
* commit bbbbb
| Author: user1 <user1@example.com>
| Date: Fri Dec 13 10:15:48 2024 +0900
|
| 2024/12/13 1つ前のコミット
|
* commit ccccc
| Author: user2 <user2@example.com>
| Date: Fri Dec 13 02:44:40 2024 +0900
各コミットを一行で表示
git log --oneline
aaaaa (HEAD -> hoge, origin/hoge) 2024/12/15 最新コミット
bbbbb 2024/12/13 1つ前のコミット
ccccc 2024/12/12 2つ前のコミット
ddddd (origin/master, master) 2024/12/11 masterの最新コミット
各コミットを特定ファイル単位で差分表示
git log -p path/to/file.tsx
commit aaaaa
Author: user1 <user1@example.com>
Date: Fri Dec 13 02:44:40 2024 +0900
2024/12/12 このコミットでの変更
diff --git a/app/_layout.tsx b/app/_layout.tsx
index 693d6ad..e5b60d6 100644
--- a/app/_layout.tsx
+++ b/app/_layout.tsx
@@ -1,42 +1,6 @@
-import { useState, useEffect } from 'react';
-import { loadAsync } from 'expo-font';
import { Stack } from 'expo-router';
-import * as SplashScreen from 'expo-splash-screen';
パスは、実際に資材がある場所の絶対パス。
例)/Users/user1/Git/TestApp/app/index.tsx
ファイルに基づくすべての変更履歴が出るため、大量の変更があった場合にはどのコミットでの変更なのか見づらいことがある
各コミットを特定ファイル単位で差分表示2
git log --word-diff -p path/to/file.tsx
commit aaaaa
Author: user1 <user1@example.com>
Date: Fri Dec 13 02:44:40 2024 +0900
2024/12/12 コミット1での変更
diff --git a/app/_layout.tsx b/app/_layout.tsx
index 693d6ad..e5b60d6 100644
--- a/app/_layout.tsx
+++ b/app/_layout.tsx
@@ -1,42 +1,6 @@
[-import { useState, useEffect } from 'react';-]
2024/12/12 コミット1での変更
diff --git a/app/_layout.tsx b/app/_layout.tsx
index 693d6ad..e5b60d6 100644
--- a/app/_layout.tsx
+++ b/app/_layout.tsx
@@ -1,42 +1,6 @@
[-import { useState, useEffect } from 'react';-]
[-import { loadAsync } from 'expo-font';-]
import { Stack } from 'expo-router';
[-import * as SplashScreen from 'expo-splash-screen';-]
[-// Prevent the splash screen from auto-hiding before asset loading is complete.-]
[-SplashScreen.preventAutoHideAsync();-]
commit bbbbb
Author: user2 <user2@example.com>
Date: Tue Dec 10 01:27:57 2024 +0900
2024/12/9 コミット2での変更
diff --git a/app/_layout.tsx b/app/_layout.tsx
index fe25ceb..693d6ad 100644
--- a/app/_layout.tsx
+++ b/app/_layout.tsx
@@ -11,24 +11,31 @@ const customFonts = {
};
export default function Layout() {
{+//+} const [fontLoaded, setFontLoaded] = useState(false);
こちらもパスは、実際に資材がある場所の絶対パス。
各コミットの変更単位で差分が表示されるため、変更箇所が見やすい。