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じゃなくてもよい |
## 前提知識Gitは、分散レポジトリだから「どのレポジトリ」の「どのブランチ」かを指定しないとわからないよ!## origin と master- origin: レポジトリの場所(URL)の別名- maste... すぐ分かる! git の origin と master ってなんだ? - Qiita - Qiita |
リモートリポジトリの変更
1 |
git remote set-url origin [new repository url] |
githubのプライベートレポジトリを移行した時に行ったクライアントの設定。もしかしたらまた同じ機会があるかもしれないので備忘録として。## 前提- githubでのプライベートレポジトリ移行は完了済みレポジトリの移行その... gitのremote urlを変更する(レポジトリ移行時) - Qiita - Qiita |
リモートリポジトリの削除
1 |
git remote rm origin |
登録されているリモートリポジトリの確認```git remote -v```リモートリポジトリURLの編集```git remote set-url [repository url... リモートリポジトリの確認・編集・削除 - Qiita - Qiita |
リモートブランチにpush
push元のローカルブランチ名とpush先のリモートブランチ名が同じときのみ、コロンを省略した書き方ができる。
1 2 |
git push origin master # いつもの使い方 git push [repository name] [local branch name]:[remote branch name] # 本来の使い方 |
id:koogawaさんのgitの記事を読みました。 これを読んでそういえばみんな知ってるのかなと思った点があるので書いておきます。 取り上げるのはgitのpush周りのお話です。 (これ以降の記事中のリモートは全てoriginとします。) このコロンは何?? リモートブランチの削除で以下のようなコマンドを実行すると思います。 git push origin :hoge コロンが付いていますがこのコロン正体、正しく説明できますか? 実用Git作者: Jon Loeliger,吉藤英明(監訳),本間雅洋,渡邉健太郎,浜本階生出版社/メーカー: オライリージャパン発売日: 2010... 今さら聞けないgit pushコマンド - Shoichi Matsuda's diary - Shoichi Matsuda's diary |
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> |
git reset、理屈はわかるんだけど、じゃあどういうときにどのオプションを使うんだっけ、というのは結構な頻度で調べたりする。めんどくさいので軽くまとめる。適宜増やしたい。(git resetオプションの基本的なことは、以下... git resetでどのオプション(hard, mixed, soft)を指定すべきか、シチュエーション... - Qiita |
直前のコミットのコミットメッセージを修正する
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 |
通常ブランチを作ってからブランチを切り替えて実装を始めますが、たまにはうっかりブランチを作るのを忘れてしまうことありますよね。そんなときの対処法のメモです。要は新しく作った別のブランチにコミットを移動する方法です。間違えて3つm... Gitでブランチを作るのを忘れてmasterにコミットしてしまったときの対処法 - Qiita - Qiita |
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のメモだけ。
タグ名を変更する うっかり間違った名前のタグをつけた場合などに、後から変更する方法です。手順としては新しいタグを追加し、古いタグを削除する流れです。 ローカルを変更 [Git] タグ名を変更する - とあるエンジニアの闇歴史帳 |