2011-10-19 10 views

答えて

9

強制的にすべてを押すことができます。あなたのローカルツリーを正確にあなたが望むものに変更し、git push -fとあなたがローカルに持っているものとサーバー上のツリーを置き換えます。これは、あなたが置き換えたばかりのツリーを引っ張った他のリポジトリに問題を引き起こすことに注意する価値があります。

7

リモートブランチの履歴を破壊的に編集する場合は(たとえば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が存在しないコミット見ることができます。

関連する問題