2017-07-19 13 views
0

私はリモートブランチからチェックアウトし、いくつかのファイルを変更しました。しかし、私はローカル設定のみに適用できるので、次のコミットでそれらを追加することは望ましくありません。実際、私はいつも彼らにコミットされていないことを望んでいます。そのため、これらのファイルにgit update-index --assume-unchangedを適用しました。しかし、今私は、これらのファイルが地元のものと異なるところからチェックアウトすることに問題があります: enter image description heregitブランチをローカルの「仮定していない」ファイルでチェックアウトするには?

「Smart Checkout」(私が必要なもの)をクリックすると、「Couldn ' "checkout origin/master:次のファイルのローカルな変更は、チェックアウトによって上書きされます:" "強制的なチェックアウト"をクリックしても、 "チェックアウトできませんでした/ master:Entry '.gitignore' not uptodate 。マージできません。 "

ローカルの変更を維持しながら、他のブランチからどのようにチェックアウトできますか?

+1

.gitignoreについては、ローカルの無視パターンを.git/info/excludeに追加して、プロジェクト内に変更しないでください。 – max630

+1

そして必要なものは[skip-worktree]です(https://stackoverflow.com)。/a/13631525/2303202) – max630

+0

skip-worktreeのように見えますが、私が最初に探していたものです。私はそれを受け入れることができるように答えを作ることを検討してください。 – arslancharyev31

答えて

2

まさにこの理由から、私はいつもassume-unchangedから人々を遠ざけるように指導しています。あなたの最善の策は、リポジトリから変更を保存する別の方法を見つけることです。

エラーメッセージから、.gitignoreファイルが問題のファイルの1つと思われます。非共有/ローカル無視ルールは.gitignoreに属しません。彼らは.git/info/excludeに属しています。

その他の場合は、個別に処理する必要があります。一般的なケースは、ローカル設定ファイルです。典型的な解決策は、開発者が実際に設定ファイルをローカル(リポジトリワークツリー外にあるパス)に作成することを想定して、テンプレートのみをソース管理することです。

ローカル/非共有バージョンのコードをお持ちの場合は、その理由を再確認することから始めます。必要な場合は、作業ツリーの外部からコードをスワップするためのビルドプロセスを使用することをお勧めします。

最後の行は、パスでファイルを追跡するようにgitに指示していれば、その行為を試みようとしています。

+0

私がこれらすべての儀式で迷惑を掛けている理由は、バグ修正のプルリクエストをさまざまなGitHubリポジトリに送信したいだけです(この場合build.gradleファイルなど)。それではもっと便利な方法がありますか? – arslancharyev31

+1

私は上流(おそらく別のワークツリーにチェックアウトされている)に根ざしたブランチ上で共有しようとするバグ修正を行い、それを私自身の作業ラインに戻すことでやると思います。 –

関連する問題