[Git]個人的な操作方法まとめ
gitをきちんと使い始めようと思って色々調べた。
いやーgithubわっかんねぇ
慣れるまでは時間がかかりそうだ
※随時更新
リモート関連
※originは適宜好きな名前に変更できる。origin以外の名前で登録した際は、それに合わせて各コマンドのoriginの部分を変更すること。
登録されているリモートリポジトリの確認
1 | git remote -v |
リモートリポジトリの登録
1 2 | git remote add origin [remote repository url] # いつもの使い方 git remote add [repository name] [remote repository url] # originじゃなくてもよい |
リモートリポジトリの変更
1 | git remote set-url origin [new repository url] |
リモートリポジトリの削除
1 | git remote rm origin |
リモートブランチにpush
push元のローカルブランチ名とpush先のリモートブランチ名が同じときのみ、コロンを省略した書き方ができる。
1 2 | git push origin master # いつもの使い方 git push [repository name] [local branch name]:[remote branch name] # 本来の使い方 |
pushと同時にリモートリポジトリにブランチを追加することもできる。
1 | git push -u [repository name] [local branch name]:[new remote branch name] |
commit関連
ローカルリポジトリでのコミット
1 2 3 | $ git status # どのファイルを修正/削除/追加したか確認 $ git add . # ステージングエリアに追加 $ git commit -m "comments" # コミットメッセージとともにコミット |
リポジトリを前回の(任意の)コミット時点まで戻す
addしたものも含めて全部なかったことにする。
1 | git reset --hard HEAD |
HEADの部分をコミットのハッシュ値にすれば、任意のコミット時点に戻れる。
1 | git reset --hard <<span class="result-highlight">hash</span> of the commit> |
とある時点のコミットの中身を確認する
git resetより安全っぽい。
1 | git checkout <<span class="result-highlight">hash</span> of the commit> |
直前のコミットのコミットメッセージを修正する
1 | $ git commit --amend |
するとvimか何かで編集できるようになるので、お好みのメッセージに編集する。
下のコマンドように簡略化することもできる。
1 | git commit --amend -m "amended comment" |
コミット時のメールアドレスやユーザー名を変更する
過去のコミットのメールアドレスとかユーザー名を変更したいときに使う。
自分のメールアドレスは登録したくないけど、github上のコミット歴にはプロフ画像を表示させたい、なんて時にメアドを変更する必要がある。
今後使うアドレスとかも変更するなら、まずはグローバルなユーザー設定を変更する。
1 2 | $ git config --local user.name user_name $ git config --local user.email user_name@users.noreply.github.com |
そんで、変更したいリポジトリでターミナルを開いて、以下を実行。
このコマンドだと過去のコミット歴全てに関して情報が変更される。
1 | $ git filter-branch -f --env-filter "GIT_AUTHOR_NAME='user_name'; GIT_AUTHOR_EMAIL='user_name@users.noreply.github.com'; GIT_COMMITTER_NAME='user_name'; GIT_COMMITTER_EMAIL='user_name@users.noreply.github.com';" HEAD |
以下のように、末尾でコミットのハッシュ値を指定してやれば、一つのコミットに対して情報を変更できる。
1 | $ git filter-branch -f --env-filter "GIT_AUTHOR_NAME='user_name'; GIT_AUTHOR_EMAIL='user_name@users.noreply.github.com'; GIT_COMMITTER_NAME='user_name'; GIT_COMMITTER_EMAIL='user_name@users.noreply.github.com';" <hash of the commit> |
間違ってmasterブランチにコミットしてしまったコミットを移動
こんなコミットログだったとする。
1 2 3 4 | $ git log --oneline 97b5216 間違ったコミット2 c853295 間違ったコミット1 e9b2db4 (origin/master, origin/HEAD) masterの本来の最新コミット |
コミットすべきだったブランチを作り、そっちにコミットをコピー。
1 2 3 | $ git checkout -b new-branch e9b2db4 $ git cherry-pick c853295 $ git cherry-pick 97b5216 |
masterブランチのコミットを削除。
1 2 | $ git checkout master $ git reset --hard HEAD~2 |
push関連
rebase
共同開発を行っているリポジトリにおいて、開発ブランチで開発を行い、いざpushしてみようとすると、masterブランチでファイルが更新されてたためにコンフリクトで怒られてpushできない、なんてこと、よく起きる。
そんなときに使えるのがrebaseコマンド。
1 2 3 4 5 6 7 8 9 10 | # まずはmasterブランチを最新状態にする git checkout master git pull origin master # 開発ブランチに入ってrebaseする git checkout hoge git rebase master # コンフリクトしているファイルを確認 git status |
「Unmerged paths:」にあるファイルでコンフリクトが発生しているので、当該箇所を修正する。
修正が終わったら、また以下のコマンドを叩く。
1 2 | git add . git rebase --continue # ここでコンフリクトが起きたらまた修正してaddから繰り返す |
rebase直前に戻したい時は、以下のコマンドを叩く。
1 | git rebase --abort |
git rebaseに関してはこのサイトが一番簡潔で分かりやすかった。
イメージ図もあってわかりやすい。
branch関連
branchの作成
1 | $ git branch -b [new branch name] |
branchの切り替え
1 | $ git checkout [branch name] |
branch名の変更
1 | $ git branch -m [old branch name] [new branch name] |
branchの削除
削除したいブランチ以外のブランチに移動してから、
1 | $ git branch -d [branch name] |
tag関連
タグ名の変更
とりあえずURLのメモだけ。
この記事へのコメントはこちら