Git:推送后移除提交的文件

zvms9eto  于 2022-12-17  发布在  Git
关注(0)|答案(8)|浏览(145)

在Git中是否有可能还原提交的文件?我已经向GitHub推送了一个提交,然后我意识到有一个文件我不想被推送(我还没有完成修改)。

ttygqcqt

ttygqcqt1#

  • 更新:添加了更安全的方法 *

首选方法:

  1. checkout 文件的先前(未更改)状态;注意双破折号
git checkout HEAD^ -- /path/to/file

1.提交:

git commit -am "revert changes on this file, not finished with it yet"

1.推动它,无需用力:

git push

1.回到你未完成的工作,再次做(3次箭头向上):

git checkout HEAD^ -- /path/to/file

有效地“未提交”:

修改仓库HEAD的最后一次提交,混淆您意外推送的工作,同时可能会与您的同事发生冲突,因为他可能已经将工作拉出来了,他将长出白发,并浪费大量时间试图协调他的本地分支负责人与中心负责人:
要从上次提交中删除文件更改:
1.要将文件恢复到上次提交前的状态,请执行以下操作:

git checkout HEAD^ /path/to/file

1.要用恢复的文件更新最后一次提交,请执行以下操作:

git commit --amend

1.要将更新后的提交推送到存储库,请执行以下操作:

git push -f

真的,考虑使用前面提到的首选方法。

zwghvu4y

zwghvu4y2#

如果你想从远程存储库中移除文件,首先使用--cache选项将其从项目中移除,然后推送它:

git rm --cached /path/to/file
git commit -am "Remove file"
git push

(This即使文件在提交之前已经被添加到远程存储库中,也能正常工作)记住将不想推送的文件扩展名添加到.gitignore中。

hrirmatl

hrirmatl3#

只能将一个文件恢复为指定的版本。
首先,您可以检查文件更改了哪些提交。
git log path/to/file.txt
然后可以使用修订号检出文件。
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
之后,您可以提交并再次推送它。

sbtkgmzw

sbtkgmzw4#

您可以使用以下工作流:

git reset --soft HEAD~1
git reset HEAD /path/to/file
d7v8vwbk

d7v8vwbk5#

将文件重置为正确的状态,提交,然后再次推送。
如果你确定没有其他人获取你的修改,你可以在提交时使用--amend来修改你之前的提交(即重写历史),然后推送。我认为你必须在推送时使用-f选项来强制推送。

9q78igpj

9q78igpj6#

使用git rm --cached /path/to/file然后添加,提交和推送。就像上面的答案,但你需要使用--cached而不是--cache

oalqel3c

oalqel3c7#

  • 获取上次提交的哈希码。
  • git log
  • 恢复提交
  • git revert <hash_code_from_git_log>
  • 推动变革
  • git push

checkout 在ghrs。你可能会得到你所需要的,希望你这是有用的

r6l8ljro

r6l8ljro8#

我遵循了以下步骤[我经常遇到这种情况,尤其是在节点模块文件夹中]
1-git日志
2-git回复程式
用你承诺的号码换号码
将是像这样的长号码04409a858709c82fbf9eae7559d6ae9c34b6fbe6
3-git推送
这对我很有效,但请记住,这里有一个技巧,你的第一个提交将是列表中的最后一个,所以检查日期和提交信息。
check this image from my terminal

相关问题