57

普段はただ走るだけ

git add file
git commit
git push

しかし、プッシュする前にコミットを修正すると(を使用git commit --amend)、次のプッシュは失敗します

hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

ブランチをマージせずに git に変更をプッシュさせるにはどうすればよいですか? 私はブランチ ( master) を 1 つしか持っておらず、このレポを使用しているのは私だけなので、なぜこれを言っているのですか?

git ブランチ -a:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

編集: を使用するgitk HEAD @{u}と、2 つのブランチがあることがわかります。1 つは元のコミットで、もう 1 つは修正されたコミットです。

4

3 に答える 3

79

これは、すでにプッシュされたコミットを修正する場合にのみ当てはまります。公開された履歴を変更しているため、一般的にはこれを行うべきではありません。ただし、あなたの場合push -f、修正されたリビジョンでリモートコミットを上書きすることで逃げることができるはずです。

于 2013-09-03T09:44:16.827 に答える
30

うん、そうすべきではありません(コミットをプッシュしてから、変更して再度プッシュしようとする)。

代わりに、ファイルを変更せずに Git を以前のコミットにロールバックしてから、新しいコミットを作成できます。

git reset --mixed origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be an amendmend"
git push origin master

これにより、修正しようとしていた変更を含む新しいコミットが作成されます。

于 2013-09-03T09:45:53.443 に答える
10

プルされたコミットを次のように修正しました

git pull origin master
git commit -a --amend -m "..."
git push

修正されたコミットを元に戻すことで問題を解決できます。

git reset --mixed origin/master

そして、本格的なコミットとして再び作成します

于 2013-09-03T09:44:28.300 に答える