Git-ブランチ(ウィンドウ)の切り替え&コミットされていない変更
質問
git / DCVSの概念を理解するのに苦労しています。起こったことは次のとおりです。
- gitプロジェクトを作成し、SVNリポジトリからインポートしました
- いくつかのコミットを行いました
- 何かを試してみたいと思ったので、 constants-update というブランチを作成しました
- constants-update ブランチに切り替え、一部のファイルを移動し、他のファイルを削除して、さらに追加しました
- このブランチにコミットしました
- 今、
git checkout master
を使用してmasterブランチに切り替えようとしています
- このエラーが発生しました:エラー:「src / groovy / Constants.groovy」にローカル変更があります。ブランチを切り替えることはできません。
DCVSの私の理解は、ファイルをコミットする限り、あるブランチが他のブランチよりも多いまたは少ないファイルを持つ場合でも、ブランチを自由に切り替えることができるということです。 git commit -a
でコミットしてmasterブランチに切り替えようとしましたが、同じエラーが発生します。
補足として、gitをコミットすると、LFがCRLFに置き換えられることを警告し、末尾の空白も警告します。コミット後、 git status
を実行すると、ファイルの束は常に #modified ...
として表示されます。
これはgit / windows に関連していますか、それとも何が起こるのかを正しく理解していませんか?他のブランチで変更を失うことなく、マスターブランチに切り替えたいだけです。
解決 3
問題を解決しましたプリコミットフックのハッキング( .git / hooks / pre-commit
のこれらの行を#
でコメントします):
# if (/\s$/) {
# bad_line("trailing whitespace", 問題を解決しましたプリコミットフックのハッキング( .git / hooks / pre-commit
のこれらの行を#
でコメントします):
<*>);
# }
他のヒント
現在のブランチに未保存の変更がある場合にブランチを変更するためのgit-stashを検索します。
これがどのように機能するかについてのあなたの考えは正しいです。
ただし、gitの行末に問題があるように思われ、ファイルが変更されていなくてもすべてのファイルが変更されていると考えられます。 Windowsではgitを使用しませんが、&quot; core.autocrlf&quot;を提案するつもりでした。 crlf処理を機能させるオプション。ただし、次のブログエントリは、これは良いアイデアではないことを示しています。 http://weierophinney.net/matthew/archives/191-git-svn-Tip-dont-use-core.autocrlf.html
ユーザーディレクトリにある.gitconfigファイルで次のオプションを使用するだけです。
[コア] autocrlf = true
そして問題を解決します。