Git 删除最后一次提交和推送

Git 删除最后一次提交和推送,git,bitbucket,gitkraken,Git,Bitbucket,Gitkraken,同时学习GIT和GitKraken。我在一个文件中做了一些小改动-aa.cpp,在GitKraken的帮助下提交并推送到远程存储库。突然,我发现我已经推送了项目目录中所有我不喜欢的文件 现在我需要从存储库中删除不需要的文件。我更喜欢从远程存储库中删除最后一次推送,并尝试再次提交和推送。如何使用GIT命令删除上次提交。如何使用GitKraken进行同样的操作?如果您已经推送了此提交,那么可能是其他人拉了该分支。在这种情况下,重写分支的历史记录是不可取的,您应该恢复此提交: git revert &

同时学习GIT和GitKraken。我在一个文件中做了一些小改动-
aa.cpp
,在
GitKraken
的帮助下提交并推送到远程存储库。突然,我发现我已经推送了项目目录中所有我不喜欢的文件


现在我需要从存储库中删除不需要的文件。我更喜欢从远程存储库中删除最后一次推送,并尝试再次提交和推送。如何使用
GIT
命令删除上次提交。如何使用GitKraken进行同样的操作?

如果您已经推送了此提交,那么可能是其他人拉了该分支。在这种情况下,重写分支的历史记录是不可取的,您应该恢复此提交:

git revert <SHA-1>
git push origin branch

git push --force origin branch

但是,只有在没有其他人共享此分支的情况下,才应该使用此选项。

我希望您使用的是单独的分支,而不是主分支(如果您使用的是git flow,则使用develop)。对于我的示例,我将使用
我断开的分支
作为分支名称;)

我的步骤是:
删除远程分支,我们稍后将推送更新版本

git push origin :my-broken-branch
接下来,从本地分支中删除最后一次提交
HEAD^1
指的是比当前提交时间早的提交时间

git reset HEAD^1
现在继续添加所需的文件,并按习惯提交。最后将您的分支推到远程。它将在那里重新创建分支,并且没有人必须知道更改后的提交

git push origin my-broken-branch

我的方法是键入
git status
,这允许我们验证当前所在的分支,然后是:

git log
然后,您将看到如下内容:

commit aa09a82fb69af2d1aebde51d71514f7a03c3a692
Author: User <user@useremail.com>
Date:   Fri Nov 4 15:36:22 2016 -0400

    Fix issue with vertical scroll being forced

commit 411771837efe3ed555395e77fd35105a500ab758
Author: User <user@useremail.com>
Date:   Thu Nov 3 15:50:42 2016 -0400

    Add user notifications

commit f43b262f4e02b5a7268280e1230d44e36d1e547b
Author: User <user@useremail.com>
Date:   Thu Nov 3 12:11:00 2016 -0400

    All your base are belong to us
…让我们回到那次提交,保留远程备份。使用另一个
git status
,以确保一切都已为双重推送做好准备(我个人对验证当前分支有点强迫,尤其是在多任务处理时):

…这将清理分支列表,并显示本地和远程以比较提交消息


此外,如果与团队合作,确保他们在前进之前意识到这一点。在您删除最后一次提交和推送之前,您不希望他们拉动或推送其一端的分支。

阅读此答案,一旦您删除了所需的提交,只需推送到远程即可。稍好一点的
--force
版本是
--force with lease
。这会将远程存储库与您的本地源副本进行比较,如果自您上次获取后有其他人向该分支推送提交,则不会覆盖该副本
commit aa09a82fb69af2d1aebde51d71514f7a03c3a692
Author: User <user@useremail.com>
Date:   Fri Nov 4 15:36:22 2016 -0400

    Fix issue with vertical scroll being forced

commit 411771837efe3ed555395e77fd35105a500ab758
Author: User <user@useremail.com>
Date:   Thu Nov 3 15:50:42 2016 -0400

    Add user notifications

commit f43b262f4e02b5a7268280e1230d44e36d1e547b
Author: User <user@useremail.com>
Date:   Thu Nov 3 12:11:00 2016 -0400

    All your base are belong to us
git reset --hard 41177183
git push origin :<branch_name>
git push origin <branch_name>
git fetch --all --prune
git branch -av