私はこのように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")
何がおかしいのですか?
メッセージが言うように:
コミットに追加された変更はありません(「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つの異なるコード変更(関連するが異なる機能のため)を行った場合、インタラクティブモードを使用して変更を分割し、各部分を追加/コミットすることができます順番。このような小さな特定のコミットがあると便利です。
変更を追加しませんでした。具体的に
git add filename1 filename2
または(プロジェクトのルートパスから)すべての変更を追加する
git add .
または、コミット中に省略形の-a
を使用します。
git commit -a -m "message".
やったほうがいい:
git commit . -m "save arezzo files"
あなたがすることができました:
git add -u -n
どのファイルを変更して追加しようとしているかを確認する(dry run:-nオプション)
git add -u
変更したばかりのファイルを追加する
Gitソース管理下にある小さなサブプロジェクトを別のプロジェクトにコピーし、.gitフォルダーを削除するのを忘れました。コミットすると、上記と同じメッセージが表示され、.git
フォルダを削除するまで消去できませんでした。
少し愚かですが、コミットしていないフォルダの下に.gitフォルダがないことを確認する価値があります。
明らかなことかもしれませんが….
インデックスに問題がある場合は、 git-gui を使用してください。索引(ステージング領域)が実際にどのように機能するのかについて、非常に優れた見解が得られます。
この索引を理解するのに役立ったもう1つの情報源は、Scott Chaconsの "Getting Git"ページ259以降です。
ほとんどのドキュメントではそれが示されているだけなので、コマンドラインの使用を開始しました。
私はgit-guiとgitkが実際に私を速くすると思います、そして例えば "git pull"のような悪い習慣を取り除きました...今、私はいつも最初にフェッチします...マージする前に本当に新しい変更が何であるか見てください。
これが起こっているのは、Gitによって既に追跡されている別のフォルダーの中にGitによって既に追跡されているフォルダーがあるからです。たとえば、プロジェクトがあり、それにサブフォルダーを追加しました。私が片方をもう片方の内側に入れる前に、両方ともGitによって追跡されていました。内部のものを追跡するのをやめるには、それを見つけてGitファイルを削除します。
rm -rf .git
私の場合はWordPressアプリケーションを使用していて、その中に追加したフォルダはテーマでした。そのため、私はテーマルートに行き、Gitファイルを削除しなければなりませんでした。そうすればプロジェクト全体が親のWordPressアプリケーションによって追跡されるようになります。
この問題は、私のgit add .
ファイルが存在するサブディレクトリ below で.gitignore
を実行したときに発生することがわかりました(いわば私のリポジトリのホームディレクトリです)。ディレクトリを自分の uppermost ディレクトリに変更し、git add .
とそれに続くgit commit -m "my commit message"
を実行してみてください。
私の場合より多くのファイルがある場合、プロジェクトのルートフォルダから追加しようとすると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 /秒
私は同じエラーメッセージで非常に似たような問題を抱えていました。 「変更はコミット用にステージングされていません」、それでも私が差分をとるときには違いがあります。しばらくして、ディレクトリのケースを変更したことがわかりました。例「PostgeSQL」から「postgresql」。私が今覚えているように、時々gitは古いケースディレクトリの中に1つか2つのファイルを残します。その後、新しいバージョンを新しいケースにコミットします。
したがって、gitはどちらに頼るべきかを知りません。それでそれを解決するために、私はgithubのウェブサイトに行かなければなりませんでした。これで両方のケースを見ることができます。そして、あなたは間違ったケースディレクトリの中のすべてのファイルを削除しなければなりません。正しいバージョンが保存されているか、正しいケースディレクトリに保存されていることを確認してください。
古いcaseディレクトリ内のすべてのファイルを削除すると、そのディレクトリ全体は消えます。それからコミットしてください。
この時点で、あなたはあなたのローカルコンピュータでPullを実行することができて、もはや衝突を見ることができないはずです。したがって、再度コミットすることができます。 :)
commit --amend
を発行した後でもgit add .
を実行していて、まだうまくいかないという問題がありました。結局、私はいくつかの.vimrc
カスタマイズをしました、そして私のエディタは正しく働いていませんでした。 vim
が正しいコードを返すようにこれらのエラーを修正し、問題を解決しました。
他のgit-Repositoryから複製されたサブフォルダがある場合は、最初に子リポジトリから$ .git $ファイルを削除する必要があります。その後、rm -rf .git
を親フォルダに変更してgit add -A
を使用できます。