よく使う 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
古いコミットに対する新しいメッセージの作成
git rebase -i HEAD~n
n
を、遡りたいコミット数に置き換えます。
これでテキストエディタが開き、コミット一覧が表示されます。エディターの中で、メッセージを変更したいコミットごとにpick
をreword
に置き換えてください:
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