1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

個人用Git操作まとめ

Last updated at Posted at 2022-11-02

はじめに

今まで自分が作成したプログラムやyamlなどをちゃんと管理しようと思い、Gitを勉強中。
よく使用しそうなコマンドなどを備忘として記載しておく。随時更新予定。

初期設定

gitインストール後の初期設定

git config --global user.name "<name>"
git config --global user.email "<mailaddress>"
git config --global core.editor vim #コミットコメント記載する際に使用するエディタ
git config --global core.ui auto #インデックスハイライトのようになる
git config --global init.defaultBranch "master" #未設定だと最初のコミット時にmasterブランチが作成され、git init時に余計な画面が表示されるのが気になるので設定する
git config --global -l #設定した内容確認
git config --global --unset user.mail "<mailaddress>" #誤って設定した内容を削除
git config --global alias.graphall "log --graph --all --pretty=format:'%C(yellow)%h%Creset -%C(red)%d%Creset %s %C(green)(%cr) %C(bold blue)<%an>%Creset'  --date=relative" #alias設定。git graphallで実行できる。参考:https://qiita.com/crarrry/items/c5964512e21e383b73da

--globalオプションは~/.gitconifigの設定

git管理したくないファイルを無視

.gitignoreに無視するファイルを記載し、配置したディレクトリ以下で有効となる。!で無視させたくないファイルを指定可能。.gitignoregit add .gitignore; git commitで管理する。以下記載例

.gitignore
a.out
*.out
*.log
!test.log

基本操作コマンド

branch

  • ブランチ一覧の確認
git branch -v
git branch -rv #リモート追跡ブランチのみ
git branch -v --all #全てのブランチを確認
  • ブランチの作成 ※ブランチの切り替えはされない
git branch <branch>
  • リモート追跡ブランチ(origin/master)の確認
git branch -rv
  • 上流ブランチの設定(git pullに引数が不要になる)
git branch -u <trackBranch>
  • 上流ブランチが設定されているか確認
git branch -vv

checkout

※Git 2.23(2019/8リリース)以降git switch/git restoreに機能が分割されているらしい

restore系

  • ステージのファイルを作業ツリーに戻す
git checkout -- <fileName>
  • コミットのファイルを作業ツリー, ステージに追加。同じファイル名が存在したら上書きされる。HEADの位置は変わらない。
git checkout <commit> -- <fileName>
  • HEAD, ステージ, 作業ツリーを指定したコミットにする。切り離されたHEAD状態となる。ブランチを作成しない場合、コミットしても内容はガベージコレクト(自動/手動)で削除される。切り離されたブランチから戻るにはgit switch <branch>を実行する
git checkout <commit>

switch系

  • ブランチの切り替え
git checkout <branch>
git switch <branch>
  • ブランチ作成してブランチを切り替える
git checkout -b <branch>
git switch -c <branch> #-Cとすると同じブランチ名を上書きで作成してしまうので注意

cherry-pick

別ブランチの更新の一部を取り込む

git cherry-pick <branch>
git cherry-pick <commit> #複数コミットを指定可能
git cherry-pick <commit1>..<commit2> #指定したコミット間の変更を反映

commit

  • コミット:1行目summary, 2行目空行, 3行目詳細のようにコミットメッセージを残せる
git commit -m "summary" -m "detail"
  • ステージし忘れたファイルや修正漏れした際にHEADのコミット内容を修正できる
git commit --amend

diff

  • 作業ツリーとの差分
git diff #ステージと作業ツリー
git diff HEAD #HEADと作業ツリー
git diff <commit> #指定コミットと作業ツリー
  • ステージとHEADの差分
git diff --staged
  • その他差分
git diff <commit1> <commit2> #コミット間の差分
git diff <branch1> <branch2> #ブランチ間の差分

init

  • リポジトリ作成
git init
git init --bare #作業ツリー、ステージを持たない。リモートリポジトリとして使用する際に実行

log

  • コミット履歴確認
git log
git log --oneline #コミットメッセージが1行目だけ表示されるので見やすい
git log --all --graph #all:全ブランチを表示、graph:ブランチが分かりやすく見える

ls-files

  • ステージのファイル確認
git ls-files
git ls-files -s #ファイルのハッシュを確認
  • Untrackedのファイル一覧を表示
git ls-files -o

merge

  • マージ:現在のブランチに指定したブランチの内容を反映
git merge <branch>
  • 早送りマージ ※fetchした後に追跡ブランチを指定することでリモートリポジトリの更新をローカルに反映できる。pullは同じ手順相当を実施してくれる。
git merge --ff-only <branch>
  • 早送りマージさせたくない場合(3方向マージ指定) ※早送りマージするとマージした履歴が残らないため
git merge --no-ff <branch>
  • マージの中止 ※コンフリクト発生時
git merge --abort

mv

  • ファイル名変更。ステージングまでされる。
git mv <before> <after>

rebase

挙動としてはcherry-pickを連続して行われる操作らしい。

  • ブランチの根元を移す ※更新履歴を単純化する
git rebase <branch>
  • 複数コミットを1コミットにまとめる ※ひとまとめにする1つ前のコミットを指定する事
git rebase -i <commit>

まとめるコミットを指定する画面が開くので、まとめたいコミットのpicksquashに変更する。
コミットメッセージが複数ある場合、コミットメッセージを修正する画面も表示される。

reset

※オプションにコミットを指定すると最新のHEADが削除されてしまうことがあるので要注意

  • ステージをHEADの状態に合わせる
git reset #ステージをHEADに合わせる
git reset -- <fileName> #特定ファイルのみHEADに合わせる
  • 履歴を削除する
    履歴はなるべく削除せず、なるべくrevertを使用する
git reset <commit> --hard #HEAD, ステージ, 作業ツリーを指定したコミットの内容にする
git reset <commit> #HEAD, ステージを指定したコミットの内容にする
git reset <commit> --soft #HEADのみ指定したコミットの内容にする

revert

指定したコミットを削除(削除したことがコミットとして残る)

git revert <commit>

rm

  • git管理から削除 ※ステージングまでされる
git rm <fileName>
git rm -r <directoryName>
  • 作業ツリーにファイルは残すが、git管理(ステージ, HEAD)から削除する
git rm --cached <fileName>

show

  • 指定コミットのファイルの中身を表示する
git show <commit>:<fileName>
  • コミット内容の確認
git show #HEADのコミット内容
git show <commit>
  • ls-files -sで確認したハッシュ値からファイルの中身を確認する
git show <fileHash>

status

  • 現在の作業ツリー、ステージ、コミット内容全体を確認
git status
  • Untrackedのファイル一覧を表示
git status -u

tag

  • 軽量タグの付与
git tag <tag> #HEADに付与
git tag <tag> <commit>
  • 注釈タグの付与
git tag -a <tag> <commit>
  • タグの削除
git tag -d <tag>

リモートリポジトリ関係

clone

リモートリポジトリをローカルにコピー

git clone <url>
git clone <url> <directory> #ディレクトリを作成してクローン実施

fetch

追跡ブランチの更新(なければ作成)。事前に更新するブランチにcheckoutしておくこと。

git fetch <remote> <branch>

pull

リモートブランチの状態をローカルブランチに反映する。fetch+merge --ff-onlyと同じ動作
上流ブランチ設定(git branch -u <trackBranch>)をしている場合引数は不要

git pull <remote> <branch>

push

リモートリポジトリのブランチ履歴を更新する

  • 指定ブランチのみ
git push <remote> <branch> #コマンド実行後GitHubのユーザ名/パスワード(もしくはアクセストークン)の入力が求められる
  • 全ブランチをリモートリポジトリに反映する
git push <remote> --all
  • すべてのタグをpushする
git push <remote> --tags
  • resetした後に強制的にpushする場合
git push <remote> <branch> -f
  • push時に上流ブランチを設定(git pullに引数が不要になる)
git push -u <remote> <branch>

remote

リモートリポジトリを使用する初期設定

  • リモートの追加 ※リモート名はoriginとする慣習あり
git remote add <remote> <repogitoryURL>
  • リモートの設定変更
git remote set-url <remote> <repogitoryURL>
  • リモートの設定確認
git remote -v
  • リモートの詳細情報を見る(追跡ブランチがすでにあるか、リモートに新しいブランチが出来ているかなど確認できる
git remote show <remote>
1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?