2016-04-19 8 views
2

問題: Bitbucketは、違いは見られませんが、ファイル全体が変更されたことを示しています。これらのファイルにはマージの競合はありません。Bitbucket CRLFの問題?

詳細: 私は(「sprintbranch」という名前の)スプリントブランチを作成し、開発者は、スプリントの枝から(「featurebranchX」という名前の)機能ブランチを作成しました。フィーチャーが実装された時点で、フィーチャーブランチをスプリントブランチにマージし始めました。今、私は問題に直面する2つのシナリオがあります。

  1. 開発者は、競合をマージがある場合、開発者はfeaturebranch1にsprintbranchをマージしにfeaturebranch1をマージするプル要求を作成sprintbranch
  2. にfeaturebranch1マージするプルリクエストを作成し、スプリントブランチ。

両方とも、ファイル全体が変更されたことを示します。そして、マージの競合はありません。

このような状況が発生した場合、特定の行が開発者によって変更されたことはわかりませんので、コードレビューはできません。また、私はこの時点で歴史を失っています。私はスプリントブランチに何が実装されたのか、それともマージされたのか分かりません。

私の推測では、問題は行末であると考えられます。 CRLFと何か関係があります。しかし私が自分の仕事をコミットすると、適切な行末が自動的に使用されていることがわかります(gitまたはSmartGitのようなツールによって)

どうすれば解決できますか?

更新:

私はちょうど私がCR LFとの違いを無視し、プルリクエストのURLの末尾にクエリ文字列w=1を追加することができていることが分かりました。

しかし、これらのファイルはコミット中に残っていますが、後でマージすると、それらの違いが正しいでしょうか?

答えて

4

Bitbucketはdiffの空白を無視できますが(w=1クエリパラメータを使用)、それらの変更は引き続きマージに含まれます。

しかし、すべての行末をLFまたはCRLFに変換するようにgitを設定できます。

* text eol=lf 

This Github help pageより多くの情報を示していますので、は次のようにあなたのチームは、最初にそれがされるオプションを決定し、それに応じ.gitattributesファイルにtextプロパティを設定する必要があります。 (情報は一般的にはgitのではなく、特にGitHubのためのものです。)

また、グローバルコンフィギュレーションオプションgit config --global core.autocrlf input(マック& Linux)またはgit config --global core.autocrlf true(Windowsの場合)が必要です。

# Make sure you won't loose your work in progress 
$ git add . -u 
$ git commit -m "Saving files before refreshing line endings" 

# Remove every file from the git index 
$ git rm --cached -r . 

# Rewrite the git index 
$ git reset --hard 

# Prepare all changed files for commit 
$ git add . 
# It is perfectly safe to see a lot of messages here that read 
# "warning: CRLF will be replaced by LF in file." 

# And commit. 
$ git commit -m "Normalize all the line endings" 

More information is available in the Github article.

+0

私は '*テキストEOL = lf'と.gitattributesを追加しました(そしてそれをコミット)し、たくさんのファイルが自動的に修正されるだろうと行末が固定されることを期待。それは起こらなかった。行末の変更はいつ私のレポに反映されますか? – shravanp

+1

(グローバル)設定オプション 'core.autocrlf'を設定して、githubヘルプページに記載されている手順に従ってください。 – Arjan

+0

私が理解しているところでは、グローバルコンフィグレーションの問題は、すべての開発者がそれに固執していることを確認する必要があることです。開発者への依存関係を削除するには、.gitattributesがあります。しかし、彼らのガイドでは、 "core.autocrlfオプションを設定して.gitattributesファイルをコミットした後で、Gitがあなたが修正していないファイルをコミットしようとしていることがわかります"。 .gitattributesをonyに追加しようとしました。私は両方で試してみて、何が起こるか見てみましょう。 – shravanp

関連する問題