ProgramingLake

ナレッジ置き場

Git

ブランチ名指定でclone

git clone -b develop https://github.com/xxxxxxxxxxxxxxxxxxxxxxxxxx.git

GitHubパスワード認証廃止 GitHubは過去1年間使用されていない個人アクセストークンを自動的に削除 使用例

$ git clone https://github.com/username/repository.git
Cloning into 'repository'...
Username for 'https://github.com': username
Password for 'https://username@github.com': ここで取得した個人アクセストークンを入力する

※個人アクセストークンは HTTPS Git 操作だけにしか使用できない。

直前のコミットメッセージを変更したい時 "amend"=「修正する、改める」という意味。直前のコミットを修正する。 但し、pushする前のコミットを修正したい時だけ。

間違えたコミット

git commit -m "誤字を含むコミット"

訂正

git commit --amend -m "修正されたコミット"

過去のコミット直前時点に巻き戻す 「まだ作業をしようと思っていたのに間違えてコミットしてしまった」 「2つのファイルをまとめてコミットするべきだったのに、間違えて1つしかコミットしていなかった」 (コミットする直前のステージング状態に戻れる)

git reset --soft HEAD^
HEAD^

(=1つ前のコミット。2つ前は^^。) コミットIDを指定して戻ることもできる

取り消し
git merge

「マージしたらコンフリクトした。やっぱりやめよう。」 マージしたらコンフリクトした、コンフリクトするとは思わなかった、いったんやめよう、などといういう時。 (コンフリクトの編集をしていないときに限る)

git merge --abort

「マージしたらコンフリクトした。コンフリクトを解消しようといろいろ編集した。でもやっぱりやめよう。」 コンフリクト解消のためにコードをいろいろ編集したけどやっぱりマージやめよう、という時。 (編集した内容もマージもすべて取り消される)

git reset --hard HEAD
pull

https://dev.classmethod.jp/articles/how-to-checkout-remote-branch/
例えば、git pull origin master と打った 変な風になった... (本当ならgit pullだけで良かった...)

git reflog
git reset --hard HEAD@{1}

git revertは指定したコミットの内容を打ち消して、新しいコミットを作成する。(ポインタを前に進める) git resetは指定したコミットを削除する。(ポインタを過去に戻す)  

その他

ファイルのリネーム

git mv
例:git mv search.html Search.html

これをやらないと、git で差分として認識されない。

コミットID確認

git log |grep '^commit' |head -1|awk '{print $2}'

現在のブランチを確認

git branch --contains

ローカルブランチ一覧

git branch

ローカルでマージ
マージしたいブランチに移動

git checkout stg
git pull origin stg

マージさせたいブランチに移動

git checkout master
git pull origin master
git merge --no-ff stg ←3ウェイマージ(意図的にfast-forwardを行わないコミットをすることが出来る)
git push origin master

PRに含まれているファイル名取得(devツールのconsoleで取得)

[...document.querySelectorAll('.file-info a')].map(x => x.title)