git diff 古いほうのコミットID 新しいほうのコミットID
(「古いほうのコミットID」「新しいほうのコミットID」は 順番逆でも差分は表示されますが、patch を作成する時に、順番が逆だとリバースパッチを作成してしまうので注意。)
例
git diff f2244fdacdc8cc8ef6e8fde146842e35570e059d f007eb9f355424252687e7958f718927d70224ca
まずは確認します
git diff 古いコミットID 新しいコミットID
これで更新ファイルと更新内容確認します。
問題なければバッチファイルを作成します。ファイル名を後に指定するだけです
パッチファイル(myfile.patch)を作成する
git diff 古いコミットID 新しいコミットID > myfile.patch
これでバッチファイルが作成できました。
Windows用に改行コードを CR+LF にする場合は nkf をかませます
git diff 古いコミットID 新しいコミットID | nkf -Lw > myfile.patch
patch.exe -p1 --dry-run < myfile.patch
オプション
-p1 1階層階層の違いを無視します。
--dry-run ドライラン(テスト実行します)
これでエラーが表示されなければ --dry-run をはずして実行します
patch.exe -p1 < myfile.patch
参考
https://qiita.com/sea_mountain/items/7d9c812e68a26bd1a292
http://2hz.org/akebia/item/699
こちらに、ユーザーアカウント制御(UAC)対応版を作ってくださってる方がいるのでこちらからダウンロードしましょう。
秘密鍵「id_rsa_my_gitlab」を登録します。
ssh-add ~/.ssh/id_rsa_my_gitlab
次のコマンドで接続のテストが行えます。
ssh -T git@gitlab.com
これでうまくいけばOKです。
vi ~/.ssh/cofig
# Gitlab
Host gitlab
User git
Port 22
HostName gitlab.com
IdentityFile ~/.ssh/id_rsa_my_gitlab
TCPKeepAlive yes
IdentitiesOnly yes
もちろんパーミッションは 0600 で!
これで
ssh -T gitlab
でテストして接続できればokです
git log -p ファイルのパス で特定のファイル更新を調べることができます
git log -p app/myscript.js
既に master に複数のコミットを行ったあとで、masterからはそのコミットを削除したい場合。
手順としては、
「1. 現在の master 状態から新しいブランチを作成」
「2. master ブランチの不要なコミットを消す」
だけです。簡単ですね。
git branch
git checkout -b moved__20201110a
(ブランチ名はなんでもokです。)
git checkout master
git log とコミットIDを表示させる
git log --pretty=oneline
git revert 【コミットID】
実行するとエディタが立ち上がるので、コメントを記述して [esc] → : → wq します。
指定したコミットを打ち消す、コミットが実行されます。
リモートにも反映させることができます。
git reset --hard HEAD~4
最新から 4つ のコミットを取り消します。 (コミット自体をなかったことにします。)
以上です。 Souce Treeや VS Code などでブランチのツリーを確認します。
あまりにコミットが多いと、他人が見た時に更新ファイルが見つけにくいという問題がおきるというのが .git あるあるの一つです。
そこで複数のコミットを1つにまとめてみましょう。
git rebase -i HEAD~~~
git log
( ↑ ↓ キーで移動して q で終了します。)
git log --name-status
git log --name-only
git log --pretty=oneline
git log --oneline
git log --graph
よくある光景です。
現在作業中のブランチにいるとします。 リモートの情報を取得してから origin /master を取り込みます。
git fetch
git merge origin/master
現在作業中のブランチにいるとします。 リモートの情報を取得してから ローカルの master を再度ベースに変更します(リベース)。
git fetch
git rebase master
ローカル
git tag -a v1.2.3
リモートへ push
git push origin v1.2.3
タグ「v.1.2.3」を取り消します
ローカル
git tag -d v1.2.3
リモート
git push origin :refs/tags/v1.2.3
このコマンドで文字化けが治ります
.git リポジトリ単位に設定する場合
git config --local core.quotepath false
マシン全体に設定する場合
git config --global core.quotepath false
.bash_profile
export GIT_PAGER="LESSCHARSET=utf-8 less"
ブランチを作成するのを忘れて作業をしてしまった!!
そんな時に後からブランチを作成する方法です。
普通に新しいブランチを作成するとそのブランチに変更したファイルも引き継がれます
例: 新しいブランチ my_new_branch を作成する。( + 作成後にブランチに移動)
git checkout -b my_new_branch
以上です。
これだけでokです。
git stash
git stash list
git checkout -b my_new_branch
git stash pop
git diff --name-only HEAD HEAD~1
git diff --name-only HEAD HEAD~1 --diff-filter=d
git diff --name-only HEAD HEAD~1 --diff-filter=D
git archive --format=zip --prefix=root/ HEAD `git diff --diff-filter=d --name-only HEAD^ HEAD` -o ~/2020_06_18__11_46_09__sabun.zip