カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

Git で「2つのブランチで同じファイルが修正されているか」を調べる方法

開発を進めていると、複数のブランチで同じファイルを修正してしまい、マージのときに競合が発生することがあります。
「ブランチAとブランチBで、修正ファイルが被っているかどうかを事前に知りたい」──そんなときに役立つ方法を紹介します。

変更ファイル一覧を出力する

まず、それぞれのブランチで どのファイルが変更されたか を一覧にします。

# branch-a の変更ファイル一覧を保存
git diff --name-only main..branch-a > /tmp/a.txt

# branch-b の変更ファイル一覧を保存
git diff --name-only main..branch-b > /tmp/b.txt
  • git diff --name-only main..branch-a
    「main と branch-a の差分に含まれるファイル名」だけを出力します。

共通ファイルを抽出する

次に、2つの一覧を突き合わせて「両方に出てくるファイル」だけを取り出します。

comm -12 <(sort /tmp/a.txt) <(sort /tmp/b.txt)

ここで登場する comm コマンドは「2つのソート済みファイルを比較する」ものです。
オプションを細かく見ていきましょう。

続きを読む…»

44 views

ファイルやディレクトリをGit管理対象から除外する

ファイルを指定してGit管理対象から除外したいとき

git rm --cached [ファイル名]

--chachedオプションを付けているのはファイルを残したいためです。
このオプションを付けないとファイルごと削除されてしまうので注意してください。

ディレクトリとそれ以下を一括で処理したいときは-rオプションを付ける

git rm --cached -r [ディレクトリ名]
288 views

Gitで削除したブランチを復活させる方法

Gitでソース管理しているプロジェクトを開発する中で、間違って必要なブランチを削除してしまったら、もう取り戻せないのでしょうか?
そんなことはありません!ご安心ください。
間違って削除してしまったブランチを復活させる方法がありましたのでご紹介します。

検証環境:git version 2.39.2.windows.1

まずは履歴から該当ブランチの最後のコミットを探します。
Gitの変更履歴を表示するには以下のようなコマンドを実行します。

git reflog

コマンドを実行すると次のように履歴が表示されます。

66ee5fa HEAD@{0}: checkout: moving from mybranch to master
4bba15a HEAD@{1}: commit: commit message
fc11042 HEAD@{2}: checkout: moving from master to mybranch
...

表示された履歴から該当ブランチの最後のコミットを見ると2行目のHEAD@{1}がそれにあたります。
{}の中の数字はログ番号です。

続きを読む…»

300 views

特定の日時を指定してコミットする

あまり使うことはないかもしれませんが、メモ代わりに投稿しておきます。

特定の日時を指定してコミットするには--dateオプションを使って日時を指定します。

git commit -m "コミットメッセージ" --date="Jan 1 00:00:00 2024 +0900"
890 views

Macへのgitインストール

一番簡単な方法です。
XcodeのCommand Line Toolsをインストールするとgitが使えるようになります。

xcode-select --install
831 views