はじめに
自分がGitでハマったことをメモしていく。
rootでgit pullしてしまい"破壊"される
git pull
して環境を最新にするぞ!と思ったときに、
何かをインストールした後だったり、なにかの作業後でカレントユーザが root
だったことありませんか?
[root #] git pull
通常ユーザで git pull
していたのに、 root
で pull
すると .git
フォルダや 修正されたファイルの所有者が root
になってしまい、次から通常ユーザで git pull
ができなくなってしまいます。
どうすればよいか
下記のコマンドで root
になってしまったファイルを探し、所有者:グループを通常ユーザに戻しましょう。
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.fileMode
が true
になっていると差分となります。
差分としても良いのであれば、 true
ですし、そうでないなら false
として設定しましょう。git pull
しようと思ったときに、 差分あるよと怒られるときは、 git status
を見て確認しましょう。
Gitの勉強になるサイト
おわりに
つい今日のことだが、 git
でリリースできるように環境を改善をした際に上記の様なことが起きたのでまとめた。
今後もなにかハマったら追加する予定。
もうひとつ環境を改善しないといけないので、.git
フォルダを置いて、git checkout -- .
するのが習慣になりそうだ。
一応リハーサルもして、ファイルやフォルダが消えていないかとか、実行して問題ないかは検証した後でやっているので問題なし!