web-dev-qa-db-ja.com

'git commit'が変更を保存しないのはなぜですか?

私はこのようにgit commit -m "message"をしました:

> git commit -m "save arezzo files"
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

しかしその後、git statusを実行すると、同じ修正ファイルが表示されます。

> git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   arezzo.txt
#       modified:   arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")

何がおかしいのですか?

242
arezzo

メッセージが言うように:

コミットに追加された変更はありません(「git add」または「git commit -a」を使用)

Gitには「ステージング領域」があり、コミットする前にファイルを追加する必要があります。 ここで説明を読む


特定の例では、次を使用できます。

git commit -am "save arezzo files"

(フラグの余分なaに注意してください。git commit -a -m "message"と書くこともできます-両方とも同じことを行います)

あるいは、コミットに追加するものをより選択したい場合は、git addコマンドを使用して追加しますステージング領域への適切なファイル、およびgit status追加されるものをプレビューする(注意することを忘れないでください)使用されている表現)。

また、gitドキュメントページでgitの使用方法に関する一般的なドキュメントとチュートリアルを見つけることができます。ファイルのステージング/追加の概念。


知っておく価値のあるもう1つのことは、インタラクティブステージング-これにより、ファイルの一部をステージングエリアに追加するため、3つの異なるコード変更(関連するが異なる機能のため)を行った場合、インタラクティブモードを使用して変更を分割し、各部分を追加/コミットすることができます順番。このような小さな特定のコミットがあると便利です。

388
Peter Boughton

変更を追加しませんでした。具体的に

git add filename1 filename2

または(プロジェクトのルートパスから)すべての変更を追加する

git add .

または、コミット中に省略形の-aを使用します。

git commit -a -m "message".
47
Femaref

やったほうがいい:

git commit . -m "save arezzo files"
38
Baptiste Pernet

あなたがすることができました:

git add -u -n

どのファイルを変更して追加しようとしているかを確認する(dry run:-nオプション)

git add -u

変更したばかりのファイルを追加する

7
Albert Vonpupp

Gitソース管理下にある小さなサブプロジェクトを別のプロジェクトにコピーし、.gitフォルダーを削除するのを忘れました。コミットすると、上記と同じメッセージが表示され、.gitフォルダを削除するまで消去できませんでした。

少し愚かですが、コミットしていないフォルダの下に.gitフォルダがないことを確認する価値があります。

7
Simon Hutchison

明らかなことかもしれませんが….

インデックスに問題がある場合は、 git-gui を使用してください。索引(ステージング領域)が実際にどのように機能するのかについて、非常に優れた見解が得られます。

この索引を理解するのに役立ったもう1つの情報源は、Scott Chaconsの "Getting Git"ページ259以降です。

ほとんどのドキュメントではそれが示されているだけなので、コマンドラインの使用を開始しました。

私はgit-guiとgitkが実際に私を速くすると思います、そして例えば "git pull"のような悪い習慣を取り除きました...今、私はいつも最初にフェッチします...マージする前に本当に新しい変更が何であるか見てください。

4
Martin

これが起こっているのは、Gitによって既に追跡されている別のフォルダーの中にGitによって既に追跡されているフォルダーがあるからです。たとえば、プロジェクトがあり、それにサブフォルダーを追加しました。私が片方をもう片方の内側に入れる前に、両方ともGitによって追跡されていました。内部のものを追跡するのをやめるには、それを見つけてGitファイルを削除します。

rm -rf .git

私の場合はWordPressアプリケーションを使用していて、その中に追加したフォルダはテーマでした。そのため、私はテーマルートに行き、Gitファイルを削除しなければなりませんでした。そうすればプロジェクト全体が親のWordPressアプリケーションによって追跡されるようになります。

4
drjorgepolanco

この問題は、私のgit add .ファイルが存在するサブディレクトリ below .gitignoreを実行したときに発生することがわかりました(いわば私のリポジトリのホームディレクトリです)。ディレクトリを自分の uppermost ディレクトリに変更し、git add .とそれに続くgit commit -m "my commit message"を実行してみてください。

4
jam99

私の場合より多くのファイルがある場合、プロジェクトのルートフォルダから追加しようとすると7000個の画像ファイルがありますが、それらは追加されていません。大丈夫です。ターゲットフォルダを通過して、abowsのようにコマンドを実行します。

git add .
git commit -am "image uploading"
git Push Origin master

git Push Origin masterオブジェクトの列挙:6574、完了。オブジェクトを数える:100%(6574/6574)、完了。最大4つのスレッドを使用したデルタ圧縮オブジェクトの圧縮:100%(6347/6347)、完了。書き込みオブジェクト:28%(1850/6569)、142.17 MiB 414.00 KiB /秒

0
user11109055

私は同じエラーメッセージで非常に似たような問題を抱えていました。 「変更はコミット用にステージングされていません」、それでも私が差分をとるときには違いがあります。しばらくして、ディレクトリのケースを変更したことがわかりました。例「PostgeSQL」から「postgresql」。私が今覚えているように、時々gitは古いケースディレクトリの中に1つか2つのファイルを残します。その後、新しいバージョンを新しいケースにコミットします。

したがって、gitはどちらに頼るべきかを知りません。それでそれを解決するために、私はgithubのウェブサイトに行かなければなりませんでした。これで両方のケースを見ることができます。そして、あなたは間違ったケースディレクトリの中のすべてのファイルを削除しなければなりません。正しいバージョンが保存されているか、正しいケースディレクトリに保存されていることを確認してください。

古いcaseディレクトリ内のすべてのファイルを削除すると、そのディレクトリ全体は消えます。それからコミットしてください。

この時点で、あなたはあなたのローカルコンピュータでPullを実行することができて、もはや衝突を見ることができないはずです。したがって、再度コミットすることができます。 :)

0
brianwaganer

commit --amendを発行した後でもgit add .を実行していて、まだうまくいかないという問題がありました。結局、私はいくつかの.vimrcカスタマイズをしました、そして私のエディタは正しく働いていませんでした。 vimが正しいコードを返すようにこれらのエラーを修正し、問題を解決しました。

0
Brennan Cheung

他のgit-Repositoryから複製されたサブフォルダがある場合は、最初に子リポジトリから$ .git $ファイルを削除する必要があります。その後、rm -rf .gitを親フォルダに変更してgit add -Aを使用できます。

0
Sam Toorchi