我正在尝试删除我的一个GitHub存储库中的最后两个提交。我按照建议尝试here:git push -f origin HEAD ^^:master。它似乎工作,最后两个提交被删除。
然后我用git rebase -i HEAD~2从我的本地存储库中删除它们。我删除了与这些提交相关的行,并使用git log检查它们是否被正确删除。
之后,我在本地存储库中进行了一些更改,进行了新的提交并推送到GitHub。问题是,在我的GitHub帐户中,我有前两次提交,我试图删除。
我认为问题出在我的本地存储库中,因为如果我将我的Github存储库克隆到本地,并在我推送新提交时在这里进行一些更改,那些旧提交不会被推送到GitHub。
有什么想法吗?
答案 0 :(得分:161)
要在本地删除最后两个提交,我建议使用:
git reset --hard HEAD^^
Rebase是一个完全不同的操作,在这里无法帮助你。
答案 1 :(得分:64)
如果你想删除最后一次提交的2(两个),有一个简单的命令可以做到这一点:
git reset --hard HEAD~2
您可以为要删除的任意数量的上次提交更改2
。
要将此更改推送到远程,您需要使用 force (git push
)参数执行-f
:
git push -f
但是,如果有新提交,我不建议执行包含git
或-f
选项的任何--hard
命令在远程(Github)之后提交您要删除的提交。在这种情况下,请始终使用git revert
。
答案 2 :(得分:16)
以下为我工作
n
它从本地仓库中删除了最后HEAD^
次提交,因为git push -f origin <branch>
只删除了一次。如果您需要从远程删除这些更改,您可能需要强制推送,因为您将在远程后面。
var app = angular.module('myApp',[]); app.controller("myCtrl",function ($scope) {
$scope.products =
[
{ name: 'Apple', price: 5, img: '/Apple.jpg' },
{ name: 'Banana', price: 3.7, img: '/Banana.jpg' },
{ name: 'Grapes', price: 10 , img:'/Grapes.jpg' }
];
$scope.addProduct= function () {
$scope.products.push({name:$scope.nameProduct, price:$scope.priceProduct, tmuna:$scope.imgProduct});
$scope.nameProduct = "";
$scope.priceProduct = "";
$scope.imgProduct = "";
};
$scope.cartList = [{ name: 'Apple'}];
$scope.addToCart = function () {
$scope.cartList.push({name:$scope.nameProduct});
$scope.nameProduct = "";
};
});
答案 3 :(得分:3)
删除最近的 n 次提交:
git reset HEAD~n
如果您需要从远程删除这些更改,您可能需要强制推送,因为您将落后于远程。
git push -f origin <Branch Name>