RandomThoughts

RandomThoughts

git

Contents:
  1. 外部リンク
  2. レポジトリにあるファイルをローカルで変更するがgit statusとかには出さない
  3. cherry-pickで改行コードに違いがある場合
  4. CI用などに空コミット
  5. HEADのファイルのハッシュ値を取得
  6. コミットログを表示
  7. ブランチマネージメント
  8. gitkのソース
  9. gitのクライアントいろいろ
    1. git-guiメモ
    2. tigメモ
    3. gitのターミナルUI系いろいろ
  10. 入門

みんな大好きgit。

外部リンク

レポジトリにあるファイルをローカルで変更するがgit statusとかには出さない

update-indexでassume-unchangedを指定する。

$ git update-index --assume-unchanged .vscode/c_cpp_properties.json

cherry-pickで改行コードに違いがある場合

git cherry-pick -x --strategy-option=renormalize XXXX

-xはコミットIDを含める、という奴。

XXXXはハッシュID。

CI用などに空コミット

$ git commit --allow-empty -m "CIトラブルのため空コミット"

HEADのファイルのハッシュ値を取得

git rev-parseというコマンドを使う。

$ git rev-parse HEAD:some_dir/some_file.txt

コミットログを表示

ハッシュ値がXXXの時、

$ git log --format=%B -n 1 XXX

ブランチマネージメント

とりあえずリンクを貼っておく場所。

gitkのソース

gitの一部に入っている模様。tcl/tk(wish)。

ちょっといじりたいと思ったが、なかなか気力がわかないな。 誰かWebUIで同じの作って。

gitのクライアントいろいろ

git-guiメモ

git本家のソースツリーに含まれている、tcl/tkで書かれたgit-gui。ステージングは割と良い。足りない機能を以下にメモしていく。

  • 全ファイルをステージング
  • ファイルのrevert(Hunkのrevertはある)
  • リモートのチェックアウト

tigメモ

TigがWindowsにやってきたのでチュートリアルをまとめる #Git - Qiita

gitのターミナルUI系いろいろ

tigがなかなか良いのだが、コミット周りとかも似たようなのが欲しいなぁ、と思いいろいろ他を物色してみる。

  • lazygit 少し触ったがどうもなじまなかった>その後訓練して馴染んできた
  • gitui なんか良さそう?

gitui、なんかリモートのブランチをチェックアウトしようとするとディレクトリが使用中とかいって中途半端にチェックアウトされてしまう(ファイルだけ更新されてHEADが更新されてない感じ?)。

コンソールとか小さめのgitクライアントをいろいろ触ってみている - なーんだ、ただの水たまりじゃないか

lazygitで差分の方をスクロールするのはShift+j, Shift+kでも出来る(何故かヘルプにはpageup, pagedownしか載ってないが)

入門

公式で配ってるGit - Book Pro Gitという本がとても良く書けているが、 本格的に勉強する用の本なので、入門者に薦めるのはちょっと気がひける。

入門者にとりあえずこれ見て、というには何がいいだろう?と思い、ググってよさそうだったものを貼っておく。

Microsoft Learnはなかなか良い気がする。