Skip to content

Commit 4689d04

Browse files
authored
改行コードをCRLFでコミットしたい場合 (#216)
1 parent 06af691 commit 4689d04

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
@@ -775,9 +775,7 @@ developブランチに対し「require linear history」を選択することを
775775
- マージリクエストから「Delete source branch」オプションを有効にすることが該当
776776
- プロジェクトの設定で「Enable "Delete source branch" option by default」を選択しておくとデフォルトで有効になる
777777

778-
## 設定ファイル
779-
780-
### .gitattribute
778+
## .gitattribute
781779

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

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

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

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

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

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

808-
### 個人用のファイルをGit管理対象外とする
833+
## 個人用のファイルをGit管理対象外とする
809834

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

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

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

823-
### Pull Request / Merge Request テンプレート
848+
## Pull Request / Merge Request テンプレート
824849

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

0 commit comments

Comments
 (0)