はじめに

自分がGitでハマったことをメモしていく。

rootでgit pullしてしまい"破壊"される

git pull して環境を最新にするぞ!と思ったときに、 何かをインストールした後だったり、なにかの作業後でカレントユーザが root だったことありませんか?

1
[root #] git pull

通常ユーザで git pull していたのに、 rootpull すると .git フォルダや 修正されたファイルの所有者が root になってしまい、次から通常ユーザで git pull ができなくなってしまいます。

どうすればよいか

下記のコマンドで rootになってしまったファイルを探し、所有者:グループを通常ユーザに戻しましょう。

1
2
3
4
5
6
cd [対象のディレクトリ]
# rootユーザのファイルを検索
find . -user root -ls

# rootの所有者のファイルの所有者:グループを変更する。
find . -user root | xargs chown [ユーザ]:

Windows や Mac, Linuxでの開発で改行コードの取り扱いに困る

Windowsでは CR+LF, 他はLFが基本となっております。
そうなると、各ファイルは開発環境ごとに差異が出てしまいますが、autocrlf という config があります。
これは、下記のような動作になります。

設定値動作
trueチェックアウト:CR+LFの改行コードへ変換
コミット: LFの改行コードへ変換
inputチェックアウト:変換なし
コミット: LFの改行コードへ変換
falseチェックアウト:変換なし
コミット: 変換なし

こちらに関しては、どれが最善かはケースバイケースなのかなと思います。
私は、開発PCがWindowsで true になっていますが、正直 input で LFに統一するのが良いのではとも考えています。
最近では、WSL2でLinuxライクな開発を行えるので。

パーミッションの違いで差分が出る

これは、ファイルのパーミッション(権限)が異なると、差分と検出されます。
Gitの設定で、core.fileModetrue になっていると差分となります。
差分としても良いのであれば、 true ですし、そうでないなら false として設定しましょう。
git pull しようと思ったときに、 差分あるよと怒られるときは、 git status を見て確認しましょう。

Gitの勉強になるサイト

おわりに

つい今日のことだが、 git でリリースできるように環境を改善をした際に上記の様なことが起きたのでまとめた。
今後もなにかハマったら追加する予定。
もうひとつ環境を改善しないといけないので、.git フォルダを置いて、git checkout -- . するのが習慣になりそうだ。
一応リハーサルもして、ファイルやフォルダが消えていないかとか、実行して問題ないかは検証した後でやっているので問題なし!