よく使う Git コマンド

GitLabのサポートチームは、あなたを助けるためにこれらのコマンドを集めました。頻繁に使うコマンドではないかもしれません。

リモート

リモートに別のURLを追加し、プッシュするたびに両方のリモートが更新されるようにします。

git remote set-url --add <remote_name> <remote_url>

ステージングと変更の取り消し

最後のコミットを削除し、変更をアンステージに残します。

git reset --soft HEAD^

HEAD から一定数のコミットをアンステージ

例えば3つのコミットをアンステージするには、次のように実行します:

git reset HEAD^3

を実行します。

git reset <filename>

ファイルを HEAD 状態に戻して、変更を削除します。

ファイルの変更を元に戻すには、以下のどちらかを使用します:

  • git checkout <filename>
  • git reset --hard <filename>

以前のコミットを取り消し、新しい置換コミットを作成します。

git revert <commit-sha>

最後のコミットに対する新しいメッセージの作成

git commit --amend

古いコミットに対する新しいメッセージの作成

caution
他の人がクローンしたりフォークしたりアクティビティブランチを持っている場合、コミット履歴を変更すると他の人の作業を中断させる可能性があります。プッシュしたコミットを変更するのは、安全だと確信できる場合だけにしましょう。詳細はGit のリベースと強制プッシュを参照ください。
git rebase -i HEAD~n

n を、遡りたいコミット数に置き換えます。

これでテキストエディタが開き、コミット一覧が表示されます。エディターの中で、メッセージを変更したいコミットごとにpickreword に置き換えてください:

reword 1fc6c95 original commit message
pick 6b2481b another commit message
pick 5c1291b another commit message

ファイルを保存して閉じると、新しいエディターウィンドウで各メッセージを更新できます。

コミットを更新したら、リポジトリにプッシュしなければなりません。これは履歴を書き換えるので、強制プッシュが必要です。意図しない上書きを防ぐには、--force-with-lease

git push --force-with-lease

最後のコミットにファイルを追加

git add <filename>
git commit --amend

コミットメッセージを編集したくない場合はcommit コマンドに--no-edit を追加してください。

隠し場所

隠し場所の変更

git stash save

stash のデフォルトの動作は保存です:

git stash

変更を保存しない

git stash apply

隠した変更を破棄します。

git stash drop

隠した変更を適用して削除

git stash pop

参照とログ

HEADへの参照変更のログを表示するには、reflogを使用してください。

git reflog

ファイルの Git 履歴をチェック

ファイルの Git 履歴を調べるための基本コマンドです:

git log <file>

このエラーメッセージが表示されたら

fatal: ambiguous argument <file_name>: unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:

ファイルの Git 履歴を確認するにはこれを使います:

git log -- <file>

ファイルへの各変更内容のチェック

gitk <file>

ファイルへの各変更の内容をチェックし、過去のファイル名を追跡します。

gitk --follow <file>

デバッグ

GitコマンドにカスタムSSHキーを使う

GIT_SSH_COMMAND="ssh -i ~/.ssh/gitlabadmin" git <command>

クローンのデバッグ

SSHで:

GIT_SSH_COMMAND="ssh -vvv" git clone <git@url>

HTTPSの場合

GIT_TRACE_PACKET=1 GIT_TRACE=2 GIT_CURL_VERBOSE=1 git clone <url>

Git 組み込みトレースによるデバッグ

Gitには、Gitコマンドをデバッグするためのトレース一式が含まれています:

  • GIT_TRACE_PERFORMANCE=1: パフォーマンスデータのトレースが可能で、git の各呼び出しにかかる時間を表示します。
  • GIT_TRACE_SETUP=1:git がリポジトリや環境について何を発見しているかをトレースできます。
  • GIT_TRACE_PACKET=1ネットワークオペレーションをパケットレベルでトレースできます。

リベース

ブランチをデフォルトの

-i フラグは ‘interactive’ を表します。<default-branch>デフォルトブランチの名前に置き換えてください:

git rebase -i <default-branch>

中断している場合はリベースを続行します

git rebase --continue

使用方法git rerere

同じ問題を繰り返し解くときに、記録された解決策を_再利用_するため:

git rerere

rerere

git config --global rerere.enabled true