mochikoAsTechのdig日記

当方好きなコマンドはdigです!お友達から!!よろしくお願いします!!!

WindowsのSourceTreeでGitHubからソースを取ってくるときは改行の自動処理に注意!

これは誰に向けたどんな内容のエントリ?

  • WindowsのSourceTreeを使ってGitのソースを管理する人のためのエントリ
    • 具体的に言うと技術書典に向けてRe:VIEWで本を書くぞー!原稿はGitHubで管理するぞー!という人に見て欲しい
    • 落とし穴があるのでSourcetreeのインストール前に伝えておきたい

前提

  • OSがWindowsであること
  • GitのクライアントソフトはSourcetreeを使うつもりであること

伝えたいこと

  • Sourcetreeをインストールする際、改行の自動処理を設定する にはチェックを入れないこと f:id:mochikoAsTech:20190804183558p:plain

チェックを入れてしまうとどうなるか?

  • autocrlftrue になって、GitHubからソースをclone(=まるごと取ってきた)してきた際にソースの改行コードが全部 LF から CRLF になります
    • Windows内でDockerを動かしてあれこれするとき、DockerイメージがLinuxだと、ソースの改行コードが CRLF になっていることでつまづくのです

既にインストール済みのSourceTreeでautocrlfがtrueになっていないか確認するには?

  • Sourcetreeのターミナルを開いて git config --global --get core.autocrlf を叩いて確認してみよう
    • true なら autocrlf が有効になっているのでアウト、falseinputならセーフです。

どうすればautoctlfの設定を変更できる?

  • Sourcetreeのターミナルを開き、次のようにgit config をたたいて false もしくは input にすればOKです。
    • false にするとgit cloneする時も、git pushする時も何もしません(改行コードを勝手に変換しない)
    • input にするとgit cloneする時は何もせず、git pushする時だけ crlflf にしてくれます
      • ローカルで新たに作ったファイルも、git pushする時には改行コードを lf に統一しておこうと思ったら input の方がよいでしょう
git config --global core.autocrlf false
または
git config --global core.autocrlf input
  • あるいは直接 C:\Users\%USERPROFILE%\.gitconfig というGitの設定ファイルを書き換えてもOKです。
    • エクスプローラーで C:\Users\%USERPROFILE%\ を開くと、たとえばユーザ名が mochikoAsTech なら C:\Users\mochikoAsTech\ が表示されます
[core]
        autocrlf = input