web-dev-qa-db-ja.com

エラー:リリースで引き出すことはできません:ステージングされていない変化があります

私はプロジェクトで数人の友人と共同作業を始めました。彼らはheroku gitリポジトリを使用しています。

私は数日前にリポジトリをクローンしました、そして、彼らはその後いくつかの変更を加えましたので、私は最新のアップデートを手に入れようとしています

私はここで述べたようにgit pull --rebaseコマンドを実行しました(これはそれを行う正しい方法ですか?): https://devcenter.heroku.com/articles/sharing#merging-code-changes

次のようなエラーが表示されます。

$ git pull --rebase
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.

私はそのコードをめちゃくちゃにしたので、変更をコミットするか破棄するかを望みます(stashとは何を意味するのでしょうか)。これは何が起こっているのでしょうか?このような場合は、私が行った可能性のある変更を破棄してgitリポジトリから更新されたコードを入手したいと思います。

私ができることについて何か考えはありますか?

113
user3597950

git statusを実行してください、これはどんなファイルが変更されたかをあなたに示します。変更を保存したくないと述べたので、変更を取り除くためにgit checkout -- <file name>またはgit reset --hardを実行できます。

ほとんどの場合、gitは変更について何をすべきかを教えてくれます。たとえば、あなたのエラーメッセージはあなたの変更をgit stashに言った。あなたがそれらを維持したいのであれば、これになります。引っ張った後、あなたはgit stash popをするでしょうそしてあなたの変更は再び適用されるでしょう。

git statusには、ファイルがコミット用にステージングされているかどうかに応じて変更を取り除く方法もあります。

143
Schleis

リベースで引っ張ることは一般的には良い習慣です。

ただし、インデックスがクリーンでない、つまりコミットされていない変更を加えた場合は、それができません。

変更を保持したい場合は、これを回避するためにこれを実行できます。

  1. 変更を隠します。git stash
  2. リベースでマスターから引っ張る
  3. (1)で保存した変更をgit stash apply stash@{0}またはより単純なgit stash popで再適用します。
46
Kostas Rousis

リベースの実行中に作業中の変更を維持したい場合は、--autostashを使用できます。 のドキュメントから

リベースを開始する前に、必要に応じてローカルの変更を隠して( git-stash [1] を参照)、完了したら隠しファイルを適用してください。

例えば:

git pull --rebase --autostash
43
mkobit

まずgit statusで始めましょう

保留中の変更があるかどうかを確認してください。それらを破棄するには、実行してください。

git reset --hard
26
Igal S.

これは私のために働く:

git fetch
git rebase --autostash FETCH_HEAD
12
CppChase

いつでもできる

git fetch && git merge --ff-only Origin/master

(a)アップストリームの変更と衝突するコミットされていない変更がある場合は変更はありません。(b)stash/pull/applyと同じ効果:HEADから最新の変更を反映するようにリベースします。 _および未確定の変更はそのまま残ります。

9
Jared Updike

ステージングされていない変更がgitがファイル上のeol規約を修正しようとしているためであるとき(それは私の場合のように)、隠したりチェックアウトしたりリセットしたりしてもそれが消えることはありません。

ただし、意図したものが実際に実際にリベースしてステージングされていない変更を無視する場合は、ブランチをローカルで削除してからもう一度チェックアウトします。

git checkout -f anyotherbranchthanthisone
git branch -D thebranchineedtorebase
git checkout thebranchineedtorebase

ほら!まだ失敗していません。

4
tggagne