Skip to content

Commit c138021

Browse files
committed
改行コードをCRLFでコミットしたい場合
1 parent 1147c1b commit c138021

File tree

1 file changed

+31
-6
lines changed

1 file changed

+31
-6
lines changed

documents/forGitBranch/git_branch_standards.md

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -770,9 +770,7 @@ developブランチに対し「require linear history」を選択することを
770770
- マージリクエストから「Delete source branch」オプションを有効にすることが該当
771771
- プロジェクトの設定で「Enable "Delete source branch" option by default」を選択しておくとデフォルトで有効になる
772772

773-
## 設定ファイル
774-
775-
### .gitattribute
773+
## .gitattribute
776774

777775
チーム開発において開発環境がWindows/Macなど複数存在することは少なくなく、また、Gitリポジトリ上の改行コードは統一した方が余計な差分が生じず扱いやすくなる。このときよく用いるのが、 `core.autocrlf` という設定である。
778776

@@ -794,13 +792,40 @@ developブランチに対し「require linear history」を選択することを
794792

795793
通常、改行コードやインデントの設定は[EditorConfig](https://editorconfig.org/)で行うことが多く、 `.gitattributes` の設定とは重複する。しかし、環境構築ミスなど何らかのトラブルで動作しなかった場合に改行コードミスで特にジュニアクラスのメンバーが困る状況もゼロとは言えないため、本規約では `.gitattributes` も作成しておくことを推奨する。
796794

797-
### .gitignore
795+
::: warning 特定のファイルのみCRLFでコミットしたい
796+
テスト目的であるファイルだけCRLFで読み込ませたいとする。さきほどの `.gitattributes` の設定ではチェックアウト時に強制的にLFに変換されてしまうため、CRLFのファイルのみ個別で改行コードを指定する必要がある。例えば、`testdata/eol`配下のCSVをCRLFで扱いたい場合は、以下となる。
797+
798+
```sh .gitattributes
799+
* text=auto eol=lf
800+
801+
# 個別で指定
802+
testdata/eol/*.csv text eol=crlf
803+
```
804+
805+
前の行に書いた設定は、後ろの行に書いた設定によって上書きされるため、記載順は「全体に適用する原則」→「個別設定」となるように注意する。
806+
807+
この指定がちゃんと効いているか確認する場合は、 `git check-attr` コマンドを用いると良い。以下のように eolがcrlfで設定されたことが分かる。
808+
809+
```sh
810+
$ git check-attr -a testdata/eol/input1.csv
811+
testdata/eol/input1.cs: text: set
812+
testdata/eol/input1.cs: eol: crlf
813+
```
814+
815+
参考:
816+
817+
- [行終端を処理するようGitを設定する - GitHub Docs](https://docs.github.com/ja/get-started/getting-started-with-git/configuring-git-to-handle-line-endings)
818+
- [.gitattributesのeol=crlfは改行コードをCRLFに変換してチェックインするものではない - エンジニア的考察ブログ](https://chryfopp.hatenablog.com/entry/2013/04/13/113754)
819+
820+
:::
821+
822+
## .gitignore
798823

799824
Gitで管理したくないファイル名のルールを定義する`.gitignore`ファイルも入れる。ウェブフロントエンドであれば新規プロジェクトを作成すると大抵作成されるのでそれを登録すれば良いが、もしない場合、あるいは複数の言語を使っている場合などは[GitHubが提供するテンプレート](https://github.com/github/gitignore)を元に作成すると良い。GlobalフォルダにはWindows/macOSのOS固有設定や、エディタ設定などもある。
800825

801826
環境設定を`.env`で行うのが一般的になってきているが、`.env.local``.env.dev.local`といった`.local`がついたファイルはクレデンシャルなどの機微な情報を扱うファイルとして定着しているため、 `*.local`も追加すると良い。
802827

803-
### 個人用のファイルをGit管理対象外とする
828+
## 個人用のファイルをGit管理対象外とする
804829

805830
`.gitignore` を用いると、チームでGit対象外とするファイルを一律で設定できる。
806831

@@ -815,7 +840,7 @@ Gitで管理したくないファイル名のルールを定義する`.gitignore
815840

816841
- [個人的Gitおすすめtips 7選 #GitHub - Qiita](https://qiita.com/hichika/items/f3c980dd069df0f3a56e)
817842

818-
### Pull Request / Merge Request テンプレート
843+
## Pull Request / Merge Request テンプレート
819844

820845
GitHubやGitLabでは、プルリクエスト作成時のテンプレートを作ることができる。チームでプルリクエストで書いてほしいことを明示的にすることで、レビュー効率の向上や障害調査に役立てることができる。
821846

0 commit comments

Comments
 (0)