- Published on
逆引きGit
- Authors
- Name
- Kikusan
復元編
git reset --hard HEAD # 一つ前のコミット状態を復元
git reset --hard HEAD^ # 二つ前のコミット状態を復元(つまり直前のコミットの取消し)
git reset --hard <コミットID> # そのコミットを復元する
git reset --hard ORIG_HEAD # リセットする一つ前に戻る(リセットをやめる)
git reset --soft HEAD^ # ファイルは残したままコミットを取り消す
git reset HEAD . # 直前のaddを取り消す
git revert <コミットID> # 履歴付き復元
diff編
オプション
- --stat:どれくらい変更したか
- --name-only:ファイル名だけ表示
- -w:空白の変更を無視
git diff # 最新コミットとadd前を比較
git diff --staged # インデックスと最新コミットを比較
git diff HEAD^ # 一つ前と最新状態を比較 コミット直後ならgit diff HEAD^..HEAD と同義
# diff 旧 新
# 例:pull前に今居るブランチと比べる
git diff HEAD..origin/remote_branch
# ブランチを比較
git diff branchA..branchB # リモートならorigin/branch.....
リモートブランチをローカルにチェックアウト
git checkout -b local_branch_name origin/remote_branch_name
強制pull
git fetch origin master
git reset --hard origin/master
異なるhistoryのブランチのマージ
git merge --allow-unrelated-histories branch_name
キャッシュ削除
git rm -r --cached . # ファイル全体キャッシュを削除 .gitignoreが反映されないとき
未コミットの変更を退避
git stash save # 退避
git checkout new-branch
git stash pop # 最後のsaveを取り出し
やらかしたときの奥義
OSS活動
参考: DataScienceHub
- GitHub上のOSSリポジトリ(oss-remote)をfork(my-remote)
- my-remoteをclone(my-local)して自分のlocal情報を登録する。
cd mydir
git clone <my-remote-url>
git config user.name '<username>'
git config user.email '<email-address>'
GitHubのSettings>Emailsに書いてある以下をemailにしたほうがいいかもしれない。
【ID】+【ユーザー名】@users.noreply.github.com
※privateリポジトリがcloneで見つからないときは
git clone https://username:password@github.com/org/project.git
- oss-remoteをupstreamとして登録する
git remote add upstream <oss-remote-url>
git remote -v #確認
- oss-remoteの最新に合わせる:oss-remote⇒my-local
git checkout master
git fetch upstream
git merge upstream/master
- ブランチを分けて作業:my-local⇒my-remote
git checkout -b develop-branch
git add .
git commit -m 'commit message'
git push origin develop branch
- fork先でPullrequest作成(PullRequest先のリポジトリを選べる)
- 後はコミュニケーション。