从Git存储库中移除推送文件

sirbozc5  于 2022-12-21  发布在  Git
关注(0)|答案(4)|浏览(138)

我已经将两个目录推到了我的Git Bitbucket存储库中,现在我希望移除/删除它们。
我该怎么做这些改变?我已经试过了:

git rm -rf --cached files 
git commit -a -m "Deleted files" 
git push origin master

我在这里发现的是,它只从我的工作目录中删除了文件,但在Bitbucket中保留了原来的内容。

mqkwyuun

mqkwyuun1#

您可以通过以下命令恢复用于推送这些目录的提交

git reset --soft HEAD^

假设不想要的提交位于HEAD的顶部。
如果它在一些提交之前说谎,试试这个

git reset --soft HEAD~3

这将恢复HEAD中倒数第四次提交所指定的更改。(您需要根据不需要的提交的位置更改数字'3'。)
检查git status,您应该能够看到那些不需要的目录,因为您的本地更改还没有提交。
谢谢!

gajydyqb

gajydyqb2#

你可以删除远程分支中的所有文件通过推送一个空的本地分支-
假设您要删除origin的分支trial,则可以执行git push origin :trial

zwghvu4y

zwghvu4y3#

确保您确实删除了这些文件

rm -rf directory-to-remove/

然后从git中删除:

git rm -r --cached directory-to-remove/

最后提交并推送:

git commit -a -m "Deleted files"
git push origin master

假设当前分支是master。

v6ylcynt

v6ylcynt4#

不久前我也遇到过类似的问题,我使用交互式重定基解决了它。
你要做的就是找到你想要修改的提交之前的提交的哈希值,假设哈希值是376c762c1b28f927595010e98e4ee82d6bc63de3

# first git checkout the correct branch
git rebase -i 376c762c1b28f927595010e98e4ee82d6bc63de3

然后,您将获得提交哈希提交后的所有提交的列表,以及提交消息的一部分。

pick 376c762 Commit with wrong file
pick e145ef2 Fourth before last commit
pick d969e5b Third before last commit
pick 7b92c09 Second before last commit
pick db1dea3 First before last commit
pick ff120d6 Most recent commit message

# Rebase 621d70a..ff120d6 onto 621d70a (6 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
#                    commit's log message, unless -C is used, in which case
#                    keep only this commit's message; -c is same as -C but
#                    opens the editor
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
...

这里你可以做的是将提交前的单词从pick改为edit

edit 376c762 Commit with wrong file

然后保存文件并退出Ctr + XYEnter(如果使用nano)。
在提交之后,你会被拉回到命令行。你可以执行以下操作来撤销之前的提交。文件和你将拥有未提交的更改。提示符将显示你当前所在提交的提交哈希的前7个字符。

git restore HEAD^

然后,您可以从提交中删除/添加/更改文件,添加并提交更改。要继续变基,请执行以下操作:

get rebase --continue

如果在以后的提交中更改了相同的文件,您可能会遇到冲突,您必须先修复并提交,然后才能执行--continue

相关问题