ローカル リポジトリが、コミット、スタッシュ、別のブランチへのチェックアウト、さらには変更の破棄を禁じている状態にあります。だから私は立ち往生しています。
私が覚えている限り、どのような手順でこの状況に至ったのかを説明しようと思います。
着席してください。
少し前、遠く離れた別のコンピューターで...別の開発者がプロジェクトのcrlfを正規化しました: https://help.github.com/articles/dealing-with-line-endings
しばらくの間 (ご存知のとおり、光の速さ...)、ローカルでいくつかの変更を行い、コミットし、プルしました。
私が引っ張ったとき、Gitは言った:
error: Your local changes to the following files would be overwritten by merge:
wp-config.php
wp-config.php
git update-index --assume-unchanged wp-config.php
各ローカル環境に適応したテンプレート構成ファイルであるため、インデックスから以前に削除されました。
ベースの「テンプレート」は変更できます。驚くべきことは何もありません。ここで私が計画したもの:
- 再インデックス
wp-config.php
stash
自分の設定変更pull origin master
stash apply
私の設定が戻ってきました
ステップ3で問題git pull origin master
が発生しました。スタッシュが無効であるかのように、上記のエラーが引き続き発生しました。
git status
wp-config.php
コミットのためにステージングされていない変更があったと述べました。隠した後、それは私を少し驚かせました。
変更を隠したので、実行しましたgit checkout -- wp-config.php
...しかし、何の効果もありません! ファイルはまだコミット用にステージングされていません。
私は気が狂っていたので、新しいブランチ my-config を作成し、wp-config.php
それに追加してコミットし、マスターに戻し、wp-config.php
( を使用してgit rm
) 削除し、origin/master をマージしました...成功しました!
マスターが最新でクリーンな状態になったので、Git の助けを借りずに (ファイルを手動で編集して) 自分の構成を復元することを計画しました。
何が起こったのか知りたかったので、my-config ブランチに切り替えて、ここで非常に簡単な操作を試みました。
git stash
git stash apply
そして、何を推測しますか?stash apply
言って失敗しました:
error: Your local changes to the following files would be overwritten by merge:
wordpress/license.txt
wordpress/readme.html
...
(all the files that where modified by the crlf conversion)
そして今、私は自分のブランチで立ち往生しています(そしてそれを見る予定です、フランス語圏の人は理解するでしょう;))以来:
git stash apply
、上記のエラーが発生しcommit
ますcheckout master
git stash
stash エントリを生成しますが、ステージングされていない状態は変更しませんgit checkout -- <file>
どちらもステージングされていない状態を削除しません
今できる唯一のことは、これらのファイルをすべて (OS を使用してrm
) 削除して、マスター ブランチに戻れるようにすることです。
実話。
master ブランチで何が起こったのか、次に my-config ブランチで何が起こったのか、そして何がそのような状況になったのかを理解したいと思います (crlf 変換されたファイルで stash を使用していると思われます)。
重要事項:
- Linuxで実行しています
git core.autocrlf
オンですinput
- my
.gitattributes
は「dealing-with-line-endings」の記事のものと同じです - 私はGitに比較的慣れていません(2日目です)
stash
my-config ブランチで実行すると、次のように出力されました。
warning: CRLF will be replaced by LF in wordpress/license.txt.
The file will have its original line endings in your working directory.
... (one for each crlf converted file) ...
Saved working directory and index state WIP on my-config: dbf65ad my config -- should not be pushed
HEAD is now at dbf65ad my config -- should not be pushed
( dbf65ad
my-config ブランチで行った唯一のコミットです)