如何删除Github上的最后一次提交和本地?

时间:2012-04-14 12:08:40

标签: git github commit

我正在尝试删除我的一个GitHub存储库中的最后两个提交。我按照建议尝试here:git push -f origin HEAD ^^:master。它似乎工作,最后两个提交被删除。

然后我用git rebase -i HEAD~2从我的本地存储库中删除它们。我删除了与这些提交相关的行,并使用git log检查它们是否被正确删除。

之后,我在本地存储库中进行了一些更改,进行了新的提交并推送到GitHub。问题是,在我的GitHub帐户中,我有前两次提交,我试图删除。

我认为问题出在我的本地存储库中,因为如果我将我的Github存储库克隆到本地,并在我推送新提交时在这里进行一些更改,那些旧提交不会被推送到GitHub。

有什么想法吗?

4 个答案:

答案 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>