14

誤ってファイルを追加したリポジトリにコミットをプッシュしました。他の誰もリモートリポジトリからマージしていないので、履歴を書き換えることができます。しかし、ローカルコミットからファイルを削除すると(ステージング解除、ソース管理、またはディスクから削除しない)、変更をプッシュできません。gitpushはすべてが最新のものであることを示しています

4

5 に答える 5

14

どうぞ:

git checkout HEAD~ -- path/to/your/file
git add path/to/your/file
git commit --amend -C HEAD

git diff -p HEAD~ -- path/to/your/file | git apply -R
git commit --amend -C HEAD

git reset HEAD~ -- path/to/your/file
git commit --amend -C HEAD
于 2012-04-12T15:42:52.997 に答える
8

試す:

git rm --cached <yourfile>
git commit --amend
git push -f
于 2012-04-12T13:37:37.370 に答える
5

完全なコミットを書き直す必要がある場合は、を使用してみてください

git reset HEAD^
git add <files to be part of the commit>
# or git add -pu
git commit -C <previous commit number>

これを行う前に、コミットメッセージ/日付/作成者を再利用できるように、最後のコミット番号を保持する必要があります。

于 2012-04-12T14:30:03.567 に答える
3

私はコリンとイドロノーが提案したのと同じようなことをしましたが、

答えは使用することでした

git push +sa1:sa1

ここで、sa1は私のブランチです。これにより、「何も」もプッシュされなくなります。

于 2012-04-13T03:38:00.793 に答える
0

これらの2つのコマンドを使用すると、(作業ツリーの)内容を変更せずFILEに、最後のコミットですべての変更をすぐに元に戻すことができます。

git reset HEAD~ "FILE"
git commit --amend --no-edit

https://superuser.com/a/567550の回答に基づいて簡略化

これにより、現在ステージングされているすべての変更もコミットに追加されるため、git restore --staged -- $(git rev-parse --git-dir)事前に実行することをお勧めします。


@ColinHebertの回答から派生した以前のソリューション

git diff -p HEAD~ -- "FILE" | git apply --reverse --cached
git commit --amend --no-edit
于 2021-12-02T09:55:58.113 に答える