Gitを使う上での備忘録
ローカルリポジトリの作成からプッシュまで
https://qiita.com/sayama0402/items/9afbb519d97327b9f05c
https://www.hivelocity.co.jp/blog/34777/
対象のフォルダに移動して、
git init
ステージングしたいファイルを指定。(1つずつ指定した方が良い)
git add 'file'
コメントをつけてローカルリポジトリにコミット
git commit -m "comment"
プッシュするリモートリポジトリを指定。
git remote add origin 'url'
マスターブランチにプッシュ
git push origin master
default branchの変更
ブランチにマージ/プッシュしたコミットを取り消す
取り消し方には2通りある。
- revert
- reset + force push
前者は、コミットを取り消すためのコミットをすることで、結果的に足り消された"ことになる"操作。
履歴には誤ったコミット、取り消すためのコミットが残る。
後者は、文字通りコミットの取り消しができる。指定したコミットまでさかのぼることが可能で履歴からもコミットが消える。
(ただし、複数人で作業を行う場合などには履歴がまるっと消滅するため注意が必要。)
- reset + force push の実施手順(クローンから)
// 該当のリポジトリをローカルにクローン
git clone 'url'
// 該当のリポジトリに入る。
cd 'path'
クローンする際に、ブランチを指定する場合は以下
git clone -b 'ブランチ名' 'url'
クローンした後、自分のブランチ名を確認する。
ローカルのブランチが一覧表示される。
*が付いたブランチが現在編集中のブランチ。
git branch
履歴を確認し、HEADがどのコミットを指しているか確認する。
終了するには'q'を押下
git log
遡りたいコミットのハッシュをコピーして控える。
(ここで指定したコミットが最終的にHEADになる。)
resetコマンドを叩き、コミットを取り消す。
完全な取り消しのため--hardを指定。--soft、--mixed では試していない。
(この時点ではローカルブランチのHEADにのみ影響を与える。リモートには影響はない。)
git reset --hard 'ハッシュ'
履歴を確認し、HEADが移動していることを確認する。
git log
force pushコマンドを叩き、リモートに変更を反映する。
(試していないがforceを指定しない場合はconflictしてエラーになるはず)
また安全のため、ローカル/リモート共にブランチを明示的に指定する。
git push -f origin 'ローカルブランチ名':'リモートブランチ名'
参考:
https://reasonable-code.com/git-push-cancel/
https://yu8mada.com/2018/08/10/how-to-push-a-local-branch-to-a-remote-branch-with-a-different-name-in-git/
https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe
https://qiita.com/chihiro/items/2fa827d0eac98109e7ee
雑記
クローン
クローンしたいディレクトリに移動
git clone 'url'
.gitファイルが不可視ファイルだった(ctrl+shift+.)
https://pc-karuma.net/mac-shotcut-key-show-hidden-files/
ファイル容量が大きく、アップロードできない場合の対処
https://qiita.com/kanaya/items/ad52f25da32cb5aa19e6
いつまで経ってもファイルでかいって怒られるなーと思ってたら、一度コミットしたものが残り続けているみたい
https://teratail.com/questions/55549
Git resetコマンド集
https://qiita.com/ChaaaBooo/items/459d5417ff4cf815abce
git push時のerror: src refspec master does not match anyについて
https://deepblue-ts.co.jp/git/git-push-error/
わけわからんので、一度 .gitファイルを削除
次からは、ファイルを1つずつ指定しよう。
.gitignore
.gitattributes
は、リモートのファイルがローカルのコミット時に対象になる模様。
したがって、上記のファイルはリモート側であらかじめ作成するか、先にプッシュしておく必要がある。
とりあえず全部ステージングする場合は以下を参照。
https://qiita.com/FiNGAHOLiC/items/d68d19ff9fecc59084e2
git add --all