2011-07-12 13 views
2

この状況ではgit rebaseの理解に助けが必要です。 10日前に作成されたブランチを調べました。私は 時代遅れに作成されたブランチのGit rebase

git checkout -b <some name> origin/branchname 

を使用してチェックアウトしたブランチにチェックアウト、私はこの中であることによってリベースない場合は、チェックアウト後

を(私はそれを識別するために別の名前を使用)、

git rebase origin/master 

これは、いくつかを示します のようなエラー1)末尾の空白 - これについては読んだけど、オンラインで見つかったこのコマンドを試しても、まだ警告が表示されます。

git config core.whitespace nowarn 

2)自動マージ CONFLICT(追加/追加):これらのファイルがマスターブランチにあるが、内容はチェックアウトの枝に少し変更されたに... 競合をマージします。だから私はこれをどのように修正すべきですか?私はそれを修正する方法であれば、マスターのものを直接変更する権限はありません。これらのファイルは、あなたのレポで.gitフォルダに私を明確that..pleaseに近い関連としてテストが正常に動作するように...このチェックアウトのブランチからのコンテンツを持っている

よろしく

+0

私の最初の問題は、私はこのhttp://stackoverflow.com/questions/2327917/git-svn-windows-linux-whitespace-problemsに出くわしましたが、提供された答えから理解できない。 – geej

答えて

2

男の子は空白に関する質問にほとんど答えましたが、質問のリベース部分には触れませんでした。まず、あなたは、いくつかのブランチにチェックアウトし、その後、あなたが言う

:ここでは、リベース時に何が起こっているかである

git rebase master 

これは、あなたがマスターに現在のHEAD(トピックブランチ)をリベースしたいことを意味します。 Gitはあなたのトピックブランチの履歴とmasterブランチの履歴に戻ってきて、両方のための最初の共通の祖先であるコミットを見つけます。このコミットは、トピックブランチの古いベースになります。その後、ブランチ内で起こったすべてのコミットを受け取り、現在のマスターの上に表示される順番にそれらを「再適用」します。場合によっては競合が発生することがあります。その後、リベースプロセスは停止し、解決を待ちます。変更を - だから、手動でファイルを編集して、これが行われると、あなたがgit rebase --continue

は今、あなたはそれを行うことにより、masterブランチ内のファイルを変更していないと言っているだろうgit add conflicted_file によって解決としてそれらをマークすることによって、それらを解決する必要がいますあなたのトピックブランチで起こっていて、競合解決がトピックブランチに記録されています。

希望するものがあります。

+0

はいこれが役に立ちます。トピックブランチで行っている変更は、マスターの権利と同じですか?トピックブランチの変更が必要ではないと確信している場合にのみ、これを行うことができるように見えます...他の賢明な理由は、 – geej

+0

いいえ、実際にはありません。トピックブランチに記録された変更は、マスターブランチにまったく影響しません。リベース操作中に、マスターはトピックブランチコミットの新しいベースになっていますが、マスターポインターは移動しません。リベースの結果をあなたのマスターブランチに昇格させたい場合は、ブランチをマスターし、 "git merge topic"を行うためにチェックアウトする必要があります。これにより早送りマージが行われ、マスターポインタはトピックブランチと同じコミットを指すように移動されます。 –

+0

テストリポジトリを作成し、いくつかの異なるものをコミットして2つのブランチで再生し、別のものにリベースすることができます。実行する前に "gitk --all&"を実行してください。履歴ブラウザのGUIを起動します。その後、各操作の後、F5キーを押してGUIを更新します。それはプロセスがどのように機能し、どのような結果が得られるかを示します –

0

cd必要があります。隠しファイルを表示できないファイルエクスプローラまたは正面に.または_のファイルを使用している場合は、このフォルダが表示されないことがあります。 .gitフォルダ内には、configという名前のファイルがあります。それをテキストエディタで開き、[core]という名前の部分を見ることができるはずです。そこにwhitespace = nowarnを追加します。 .gitconfigが見つかる他の場所は、Linuxマシンを使用している場合は、homeディレクトリの下にあります。 Windowsの場合は、gitのインストール方法(cygwinまたはmsysgit経由)に依存します。

msysgitが.gitconfigファイルの場所についてこの質問(Where does git config --global get written to?)を参照している場合。 cygwinの場合は、内容をcat ~/.gitconfigで見ることができます。

1

これはあなたが言及質問「git svn windows linux whitespace problems」のようなものであれば、コマンドは次のようになります。

git config core.whitespace nowarn 
git config core.autocrlf true 

(現在のレポにロケールこれらの設定を維持します)。
これは、すべてのファイルに1つのeolスタイルを適用させ、元の/ master上のファイルが、あなた自身のコピーがリベースしている別のeolと同じ行を持つのを防ぎます(CONFLICTS (add/add)エラーメッセージを説明する)。

しかし、私はautocrlf trueについて疑わしく、そしてmanaging eol style through .gitattributes filesを好む。

関連する問題