私はgitサーバではなく、EC2上のgitサーバ上で既にコミットしています。Git:サーバーのコミットを変更するにはどうすればよいですか?
gitサーバーでこれらのコミットを変更するにはどうすればよいですか?
削除などの操作がコミット、リベースのように、 変更はメッセージ
をコミットするには、それは可能ですか?
ありがとうございます。
私はgitサーバではなく、EC2上のgitサーバ上で既にコミットしています。Git:サーバーのコミットを変更するにはどうすればよいですか?
gitサーバーでこれらのコミットを変更するにはどうすればよいですか?
削除などの操作がコミット、リベースのように、 変更はメッセージ
をコミットするには、それは可能ですか?
ありがとうございます。
強制的にすべてを押すことができます。あなたのローカルツリーを正確にあなたが望むものに変更し、git push -f
とあなたがローカルに持っているものとサーバー上のツリーを置き換えます。これは、あなたが置き換えたばかりのツリーを引っ張った他のリポジトリに問題を引き起こすことに注意する価値があります。
リモートブランチの履歴を破壊的に編集する場合は(たとえばrebase
/amend
)、ローカルで変更してからgit push --force
を実行します。リポジトリ管理者がこの機能を無効にすることはできません。その場合は、リモートブランチをgit push origin :my_branch
で削除してから、git push origin my_branch
でもう一度押してみてください。それ以外の場合はgit revert
を使用することができます。これは、チームで働く場合に推奨される方法です(経験則では、公開された履歴は変更しないことが望ましい)。
はここ(this Github repositoryを使用)例を示します
$ touch SOMETHING
$ emacs SOMETHING
$ git add SOMETHING
$ git ci -m SOMETHING
[master d14aaa0] SOMETHING
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 SOMETHING
$ git push
Counting objects: 8, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 611 bytes, done.
Total 6 (delta 3), reused 0 (delta 0)
To [email protected]:23Skidoo/ghc-parmake.git
53f836a..d14aaa0 master -> master
$ git reset --hard "HEAD~"
HEAD is now at 7b2dc96 TODO update.
$ git push --force
Total 0 (delta 0), reused 0 (delta 0)
To [email protected]:23Skidoo/ghc-parmake.git
+ d14aaa0...7b2dc96 master -> master (forced update)
commit historyを見ると、あなたはそれがd14aaa0が存在しないコミット見ることができます。