8

いくつかのgit/DCVSの概念を理解するのに苦労しています。何が起こったのか:

  1. gitプロジェクトを作成し、SVNリポジトリからインポートしました
  2. 私はいくつかのコミットをしました
  3. 何かを実験したかったので、constants-updateというブランチを作成しました
  4. 定数に切り替えました-ブランチを更新し、いくつかのファイルを移動し、他のファイルを削除し、さらに多くのファイルを追加しました
  5. 私はこのブランチにコミットしました
  6. 今、私は自分のマスターブランチに切り替えようとしていますgit checkout master
  7. このエラーが発生しました:エラー:'src / groovy/Constants.groovy'にローカルな変更があります。ブランチを切り替えることはできません。

DCVSについての私の理解は、ファイルをコミットする限り、一部のブランチに他のブランチよりもファイルが多かれ少なかれある場合でも、ブランチを自由に切り替えることができるということです。git commit -aマスターブランチでコミットして切り替えようとしましたが、同じエラーが発生します。

ちなみに、gitをコミットすると、LFがCRLFに置き換えられることを警告し、末尾の空白についても警告します。コミットした後、を実行するgit statusと、一連のファイルが常にとして表示され #modified ...ます。

これはgit/ windowsに関連していますか、それとも何が起こるのか正しく理解していませんか?他のブランチでの変更を失うことなく、マスターブランチに切り替えたいだけです。

4

4 に答える 4

4

現在のブランチに保存されていない変更がある場合に、ブランチを変更するために git-stash を検索します。

于 2008-11-03T02:47:55.017 に答える
4

これがどのように機能するかについてのあなたの考えは正しいです。

ただし、git は行末に問題があるようで、ファイルが変更されていない場合でも、すべてのファイルが変更されていると見なされます。Windows では git を使用しませんが、crlf 処理を機能させるために「core.autocrlf」オプションを提案するつもりでした。ただし、次のブログ エントリは、これが良い考えではない可能性があることを示しています。

于 2008-11-03T02:48:00.353 に答える
4

pre-commit フックをハッキングする問題を解決しました(これらの行を.git/hooks/pre-commitでコメント化#):

#       if (/\s$/) {
#       bad_line("trailing whitespace", $_);
#       }
于 2008-11-03T10:38:19.203 に答える
2

ユーザーディレクトリにある .gitconfig ファイルで次のオプションを使用するだけです。

[コア] autocrlf = true

そして、それは問題を解決します。

于 2009-01-29T05:23:48.373 に答える