gitの難しさ
gitが難しい理由はいろいろあるが、
普通のファイルをUnixコマンドで扱えないのは辛いと思う
昔のファイルにアクセスするのがとても難しい
1週間前にどんなファイルを使ってたか、とか簡単に見ることができない
find
を使ってファイルを探すこともできない
古いファイルにアクセスするには、データベース操作コマンドが必要である
コマンドラインから
SQLを叩いているようなものである
データベース操作コマンドが難しいし
貧民的でも各時刻ごとのファイルがあるように仮想ファイルシステムで見せかけることができるのでは

実際は差分のみ保存し、時刻付きファイル名でアクセスがあればその時点での内容を差分から計算する
このようにアクセスできる
cat ./history/202408181554/branch/path/to/example.txt
相対的日付指定でシンポジックリンクができる
cat ./history/before_1w/branch/path/to/example.txt
findは差分をソースにした検索機能があればよさそう
こういうのは気にならないのだろうか?
古いファイルにアクセスする機会がまだないので気になっていません

古いファイルをどうしてもみたいときはGitHubでリンクをポチポチ押してみてます
趣味でしかcode書いていないのもあるかも
昔のファイル構成とか知りたくなりませんか?

頻繁に使うと知りたくなるかもしれません

実際、よく作っているUserScriptとかは、少し前のversionがどう動いていたかを知りたくなる
しかし上書き更新しているので前のversionを簡単に使えないという……
GitHub(など)で見ればいいや、と思ってます


エディターがGitを駆使してこういう表示をする機能がある

つらすぎる

過去のコミットを検索して、checkoutしてファイル見るとか
儀式が多すぎ
本質的に難しいってのは常々感じる
プログラマのプログラマによるプログラマのためのガチツールなので、「初心者のためのわかりやすいメタファー」みたいなのは度外視で、とにかく「こういう概念があったら便利だよね」「こういう概念も必要だね」とプログラマブルに体系化されてつくられていると感じる
その分、gitの仕組みを学ぶことは技術者としては非常に面白い(面白そう(僕はまだ踏み込んだことない(よほど暇になれば手を出してみたい
非常に面白い

基本構造がよくできていると感じる
ちなみに
基本構造を知るのがgitの難しさを緩和するのに一番効くと思っています

うまく表現できない
一人利用する分には(慣れれば)さほど難しくない
upload, downloadくらいに帰着できる
エイリアスとかラッパーを書いてそんな感じの使い心地にすればいい
履歴操作や複数人連携(mergeやらrevertやら)については何度やっても忘れる
がっつり使っている間はさすがに慣れてくるが、ちょっと離れたらもう忘れる
コマンドのメモやノートがどんどん膨れ上がっていくぅ。。。
今は「とりあえずとにかく全員git使う!」になってる
風潮(?)があるので、もうちょっと簡単な手段用意してもらえるとありがたいなってのがある
VSCode(他エディタ)の拡張機能とかを使うと、(個人利用の範囲では)何となくでいける

なお理解は進まない
VSCodeさん、使いやすそうですね(gitはいちいちコンソールに切り替えてそっちでコマンド打って使ってた)
GUIで扱えばそこまで難しくないような気がする..?

(CUIで扱ったことはないし、今後学ぶつもりもない)
CUIのコマンドはかなり酷くて「undoコマンド必要だろ」と思ってたのだがVSCodeで普通にUndo Last Commitとかできるようになってて「これだよこれ!」という気持ちになった

Diffの表示とか部分的なstagingとかブランチの表示とか、本質的にGUIでやるべきことをCUIでやったせいで難しかったのだと思う
なのでもし「GUIでやるなんて甘えだ!CUIを学ぶべき」という人がいたらぶん殴っていきたい(誇張)
CUIを知っている人からすると、そのUndoはCUIでいうと
git reset HEAD^
ですか?という風に考えてしまう

なるほどw

反git的主張が腑に落ちた
環境をインストールして設定入れてとかしないといけない、という導入の難しさもある
windowsの場合
VSSが生きていれば、、と思ったけどそっか、、いまはMicrosoftがgithubやってるのか。。
最初は結構苦労した覚えがある
慣れるのに時間かかる
半 CLI 半 GUI 勢
グラフィカルに見たいものは VSCode の一部拡張機能入れているみたいな感じ
変更履歴見るよう
誰が最後に編集したのか、とか色々見やすくなる
git add
git commit
とか基本的な操作は CLI でやって、グラフィカルに表示したほうが良い(差分とか)モノは GUI でやっている
意識してやってるわけではないけどそうなっている