296

リモートの gitosis サーバーとローカルの git リポジトリがあり、コードに大きな変更を加えるたびに、変更をそのサーバーにもプッシュします。

しかし、今日、ローカルに変更を加えてローカル リポジトリにコミットしても、実行git push origin masterすると「すべてが最新」と表示さgit cloneれますが、リモート サーバー上のファイルをチェックアウトするために使用すると、最新の変更が含まれていません。 . そして、「マスター」という名前のブランチが1つと、「オリジン」という名前のリモートサーバーが1つしかありません。

PS: これは、実行時に git が表示するものls-remoteです。役立つかどうかはわかりません

$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea        HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c        refs/tags/stage3
4

27 に答える 27

285

ひょっとして頭が離れた状態で作業していませんか?

次のように:

切り離された頭

最新のコミットがブランチ ヘッドではないことを示します。

警告: 以下は:現在変更されているファイルを保存する場合はgit reset --hard、必ず最初に使用してください。git stash

$ git log -1
# note the SHA-1 of latest commit
$ git checkout master
# reset your branch head to your previously detached commit
$ git reset --hard <commit-id>

git checkoutマニュアルページに記載されているように(強調鉱山):

ブランチの先端にないコミットをチェックアウトできると便利な場合があります。
最も明白な例は、次のように、タグ付けされた公式リリース ポイントでコミットをチェックアウトすることです。

$ git checkout v2.6.18

以前のバージョンの git ではこれが許可されておらず、-bオプションを使用して一時的なブランチを作成するように求められていましたが、バージョン 1.5.0 以降では、上記のコマンドHEADは現在のブランチからあなたを切り離し、タグ(v2.6.18内の上記の例)。

この状態では、すべての git コマンドを使用できます。たとえば、さらに移動するために
使用できます。デタッチされた HEAD の上に変更を加え、新しいコミットを作成できます。 を使用してマージを作成することもできます。git reset --hard $othercommit

git merge $othercommit

HEAD がデタッチされている間の状態は、どのブランチにも記録されません (これは当然のことです --- あなたはどのブランチにもいません)。
これが意味することは、一時的なコミットとマージを、既存のブランチ(例: git checkout master) に戻すことで破棄でき、後でgit pruneそれらgit gcをガベージ コレクションすることができるということです。
誤ってこれを行った場合は、reflog にどこにいたかを尋ねることができます。

$ git log -g -2 HEAD
于 2009-06-16T07:32:54.680 に答える
194

エラー..あなたがgitnoobの場合、git commit前に持っていてもgit pushよろしいですか?私は初めてこの間違いを犯しました!

于 2012-05-19T20:06:01.167 に答える
29

知っておくべき重要なもう 1 つの状況: git の一種のデフォルト状態は、「マスター」ブランチで作業しているということです。そして、多くの場合、メインの作業ブランチとしてそこにたむろするだけです (ただし、気を利かせて他のことをする人もいます)。

とにかく、それはたった1つの枝です。したがって、私が陥る可能性のある状況は次のとおりです。

私のアクティブなブランチは、実際にはマスター ブランチではありません。...しかし、私は習慣的に次のコマンドを実行しますgit push(以前に を実行git push origin masterしたことがあるので、それはそれのショートカットです)。

だから私は習慣的に master ブランチを共有レポにプッシュしています...これはおそらく私の場合はきれいなことです...

しかし、私が取り組んでいる変更がまだマスターブランチにないことを忘れていました!!!

したがって、試してみるgit pushと「すべてが最新です」と表示されるたびに、叫びたいと思いますが、もちろん、それは git のせいではありません! それは私のものです。

代わりに、ブランチをマスターにマージしてからプッシュすると、すべてが再び満足のいくものになります。

于 2011-04-11T19:54:49.723 に答える
18

私は同じ問題に直面しました。ステージング エリアに変更を加えていないためです。そして、コマンドを使用してコードをリモートリポジトリに直接プッシュしようとしました:

git push origin master

そして、それはメッセージを示していますEverything up-to-date

この問題を解決するには、次の手順を試してください

  1. git add .
  2. git commit -m "Bug Fixed"
  3. git push -u origin master
于 2020-05-21T18:53:16.490 に答える
7

上記のVonCの回答を参照してください-追加の手順が必要でした:

$ git log -1
- note the SHA-1 of latest commit
$ git checkout master
- reset your branch head to your previously detached commit
$ git reset --hard <commit-id>

私はこれを行いましたが、試してみるとgit push remoterepo master 「エラー: 一部の参照をプッシュできませんでした。履歴が失われないようにするために、早送り以外の更新が拒否されました。前にリモートの変更 (例: 'git pull') をマージしてください」と表示されましたもう一度押す。」

それで、「git pull remoterepo master」を実行したところ、競合が見つかりました。もう一度git reset --hard <commit-id>実行し、競合するファイルをバックアップ フォルダーにgit pull remoterepo masterコピーし、もう一度実行し、競合するファイルをプロジェクトにコピーして戻し、 を実行しgit commit、次にgit push remoterepo masterを実行し、今回は機能しました。

Git は「すべてが最新です」と言うのをやめ、「早送り」について不平を言うのをやめました。

于 2013-02-17T00:11:41.250 に答える
3

あなたのgitステータスから、あなたはおそらく私の状況とは異なる状況にあるでしょう。

とにかく、これが私に起こったことです..次のエラーが発生しました:

fatal: The remote end hung up unexpectedly
Everything up-to-date

ここでのより有益なメッセージは、リモートがハングアップしたというものです。これは、http ポスト バッファ サイズの超過が原因であることが判明しました。解決策は、それを増やすことです

git config http.postBuffer 524288000

于 2013-05-04T07:06:52.897 に答える
3

私も同様の状況に直面しました。変更を加えて試してみたところ git push origin master、すべてが最新であるとのことでした。

私はgit add変更されたファイルにしなければなりませんでしたgit push origin master。それはそれから働き始めました。

于 2011-07-27T13:27:18.450 に答える
2

Github のブランチをマージし、ローカルで開発を続けたときに、私自身がこれに遭遇しました。私の修正は、提案された他の修正とは少し異なりました。

最初に、古いローカル ブランチ (プッシュできなかった) から新しいローカル ブランチを分岐しました。次に、新しいローカル ブランチをオリジン サーバー (Github) にプッシュしました。いえ

$ git checkout -b newlocalbranch oldlocalbranch
$ git push origin newlocalbranch

これにより、oldlocalbranch ではなく newlocalbranch ではありますが、変更が Github に表示されます。

于 2016-09-24T17:00:08.153 に答える
1

リモート URL に誤りがないことを確認します。

ローカルの Jenkins ビルド構成で Git を CVS として有効にした後、これに遭遇したことにも言及したかっただけです。Jenkins は、私が与えたブランチの最新のコミットをチェックアウトし、リポジトリに与えたパスに対応するようにリモートをリセットしたようです。機能ブランチを再度チェックアウトし、オリジンのリモート URL を「git remote set-url」で修正する必要がありました。ビルド ツールで作業ディレクトリを指定しないでください。失敗する可能性があります。リモートは作業ディレクトリへのファイル パスに設定されていたので、同じ送信元と送信先で変更をプッシュしようとすると、当然のことながらすべてが最新であると報告されました。

于 2013-07-19T21:19:26.073 に答える
1

私は機能ブランチにいて、同僚も独自の機能ブランチを作成したという状況がありました。私は走っgit fetch -agit push origin <coworkers_branch>。これにより、すべてが最新であることがわかりました。

<coworkers_branch> にチェックアウトしてから機能ブランチからプルし、コミットして <coworkers_branch> にプッシュバックすることで修正しました。

私はこれに必要以上に多くの時間を費やしたので、これが誰かに役立つことを正直に願っています.

于 2021-04-23T12:05:24.030 に答える
1

私の間違いは、これまでに述べたすべてのものとは異なりました。頭が離れている理由がわからない場合は、おそらくわからないでしょう。git commitとで自動操縦に取り組んでいましたがgit push、 からの出力を読み取っていませんでしたgit commit。-am を忘れたため、エラー メッセージでした。

[colin] ~/github/rentap.js [master] M % git commit 'figured out some more stuff with the forms in views and started figuring out row and mode in models so also made matching routes and controllers'
error: pathspec 'figured out some more stuff with the forms in views and started figuring out row and mode in models so also made matching routes and controllers' did not match any file(s) known to git.
[colin] ~/github/rentap.js [master] M % git push
Enter passphrase for key '/home/colin/.ssh/id_ecdsa': 
Everything up-to-date

-am私が通常行う場所に置くことで修正しました:

[colin] ~/github/rentap.js [master] M % git commit -am 'figured out some more stuff with the forms in views and started figuring out row and mode in models so also made matching routes and controllers'
于 2018-04-26T02:34:48.937 に答える
0

ファイルを追加し、既に変更/追加されたファイルをコミットして、以下のコマンドを実行する必要があります

git add . または git add nameoffile #プロジェクトに既存のファイルを追加します

git commit -m "first commit" #プロジェクト内のすべてのファイルをコミットする

git push オリジンマスター

于 2020-06-29T06:34:44.683 に答える