我已经在EC2上的git服务器上推送了一些提交,而不是在github上。
如何在git服务器上修改这些提交?
操作就像 删除提交,如变基, 更改提交消息
有可能吗?
非常感谢。
答案 0 :(得分:9)
你可以通过强制推动来做所有事情。将您的本地树更改为您想要的git push -f
,它将使用您在本地拥有的内容替换服务器上的树。值得注意的是,这会导致任何其他已拉动您刚刚更换的树的回购产生问题。
答案 1 :(得分: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 git@github.com: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 git@github.com:23Skidoo/ghc-parmake.git
+ d14aaa0...7b2dc96 master -> master (forced update)
查看commit history,您可以看到提交d14aaa0不存在。