0
0

Git コマンド操作に関する個人メモ

Last updated at Posted at 2024-08-13

<リモートブランチを取得してローカルの状態を更新する方法>

例:リモートブランチ「feature/123456」

◯pull を使う場合

gitコマンド
git fetch origin
git reset --hard origin/feature/123456

・[git pull]は、内部的に[git fetch]と[git merge]を実行する。
・ローカルに変更がある場合、その変更とリモートの変更が自動的にマージされる。
・コンフリクトが発生した場合、手動で解消し、マージを続行する必要がある。

◯reset を使う方法

gitコマンド
git fetch origin
git reset --hard origin/feature/123456

<リモートブランチ「master」の内容をブランチ「feature/123456」へ反映する場合>

◯rebase を使う場合

gitコマンド
# master ブランチに切り替えて、最新の変更を取得
git checkout master
git pull origin master

# feature/123456 ブランチに切り替える
git checkout feature/123456

# リモートの最新情報を取得
git fetch origin

# master ブランチの変更をリベースして feature/123456 に反映する
git rebase origin/master

◯merge を使う場合

gitコマンド
git checkout feature/123456
git fetch origin
git merge origin/master

◯メモ

※順次追記予定

git merge:

・2つのブランチの履歴を統合する。
・マージ先ブランチ(例:feature/123456)の履歴のみ書き換えられ、マージ元ブランチ(例:master)の履歴は書き換えられない?

git rebase:

・リベース元ブランチ(例:master)の最新のコミットを、リベース先ブランチ(例:feature/123456)の最新の変更の上に再適用する。
・リベース先ブランチ(例:feature/123456)の履歴のみ書き換えられ、リベース元ブランチ(例:master)の履歴は書き換えられない。

◯イメージ図

<マージ>

○マージ前
  A---B---C   master
       \
        D---E---F   feature/123456

○マージ後
  A---B-------C   master
       \       \
        D---E---F---M   feature/123456

※ M:マージコミット

<リベース>

○リベース前
  A---B---C   master
       \
        D---E---F   feature/123456

○リベース後
  A---B---C   master
           \
            D'---E'---F'   feature/123456

<マージの取り消し>

◯コミット前の場合

変更内容ごと取り消す
gitコマンド
git merge --abort

◯コミット済みの場合

コミット履歴だけを取り消し、変更はステージングに保持する
gitコマンド
git reset --soft HEAD^
コミット履歴と変更内容ごと取り消す
gitコマンド
git reset --hard HEAD^
履歴を残したままマージの変更を取り消す
gitコマンド
git revert -m 1 <マージコミットのハッシュ>

※-m 1 は、最初の親(通常はベースブランチ)を指す。

<ファイルの変更の取り消し>

ステージされたファイルを取り消す

gitコマンド
git reset HEAD <ファイル名>
c:\workspace\projectA>git status
On branch develop
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   .settings/org.eclipse.wst.common.component;

c:\workspace\projectA>git reset HEAD .settings/org.eclipse.wst.common.component
Unstaged changes after reset:
M       .settings/org.eclipse.wst.common.component

c:\workspace\projectA>git status
On branch develop
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   .settings/org.eclipse.wst.common.component

no changes added to commit (use "git add" and/or "git commit -a")

c:\workspace\projectA>

未ステージのファイルの変更を取り消す

gitコマンド
git checkout -- <ファイル名>
c:\workspace\projectA>git status
On branch develop
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   .settings/org.eclipse.wst.common.component

no changes added to commit (use "git add" and/or "git commit -a")

c:\workspace\projectA>git checkout -- .settings/org.eclipse.wst.common.component

c:\workspace\projectA>git status
On branch develop
nothing to commit, working tree clean

c:\workspace\projectA>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0