web-dev-qa-db-ja.com

Gitはコミットを修正した後のプッシュを防ぎます

通常、私はただ走る

git add file
git commit
git Push

しかし、コミットを修正する場合beforeプッシュ(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にプッシュさせるにはどうすればよいですか?ブランチは1つしかありません(master)。このリポジトリを使用しているのは私だけなので、なぜこれを言っているのですか?

gitブランチ-a:

* master
  remotes/Origin/HEAD -> Origin/master
  remotes/Origin/master

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

38
kiri

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

57
Joey

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

代わりに、ファイルを変更せずに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

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

13
Nils Werner

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

git pull Origin master
git commit -a --amend -m "..."
git Push

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

git reset --mixed Origin/master

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

8
Stefano Falasca