【问题标题】:How to undo accidentally committed 'Unversioned' Files in GIT如何撤消 GIT 中意外提交的“未版本化”文件
【发布时间】:2019-09-25 04:23:10
【问题描述】:

在 IntelliJ 中,未版本化的文件以红色突出显示。我确实希望它们出现在我的 git repo 中。这些可能是我正在处理的各种包中的临时 .java 文件。

但是,昨晚我不小心添加了数百个未版本控制的文件并提交了它们。我没有推他们。所有这些红色文件现在都变成白色了:(

我尝试对我最近推送的提交进行硬重置,比如说20a482h

我做了git reset --hard 20a482h,但文件仍然是白色的。

如果我执行Git > Push,它会显示一个包含 5 个提交的列表!!我去将我的本地文件重置为昨晚发生这种情况之前的确切状态。

如何使它们再次全部变红,并且未版本化?

git status
On branch origin
Your branch is up to date with 'origin'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   .gitignore

Untracked files:
  (use "git add <file>..." to include in what will be committed)

       code/src/main/java/comm/UnwantedFile1.java
       code/src/main/java/comm/UnwantedFile2.java
       ..... 200 + files ....

但是,上面没有列出许多“白色”文件。我希望它们再次变红,只是在我的本地文件中,但没有其他地方。

.gitignore

*.iml
.idea
*.css
/app-layout-demo/src/main/webapp/VAADIN/themes/demo/styles.scss.cache
/app-layout-addon/src/main/polymer/bower_components/
/app-layout-addon/src/main/polymer/build/
### Java template
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

例如,给定下面的“帮助”包。文件QuickTip.java 不应该是白色的,它应该是红色的。现在它是版本化的,将包含在任何提交/推送中。 Help 中的其他 2 个文件应保持版本化。

如何解压各种包中的 200 多个文件?

【问题讨论】:

  • 你能显示git status的输出和.gitignore的内容吗?
  • 当然,我已经编辑了我的答案。顺便说一句,我刚刚做了一个硬重置 HEAD~4 来重置过去的 4 次提交,这就是为什么它说我是最新的。如果我在 IntelliJ 中执行 Git&gt;Push,它会显示没有提交。但是许多.java 文件是白色的,我希望它们恢复为红色,就像昨晚我意外提交它们之前一样。
  • 所以 git 状态确实表明您修改了 .gitignore。你对那个文件做了什么改变?如果您将该文件重置为“干净”状态并再次尝试 git status 会怎样?
  • 我认为.gitignore 的更改是由于我事后删除了.java 文件造成的。我刚刚从gitignore 中删除了底部线,所以就像昨晚一样。如果我这样做 git status 它仍然说我是最新的。现在我的 gitignore 看起来和我的问题完全一样。
  • 我在我的问题中添加了一张小图片,以更好地解释我的困境。

标签: git git-reset


【解决方案1】:

一个好的做法是.gitignore 文件。

它们会变成灰色而不是红色并且不再打扰你。

【讨论】:

    【解决方案2】:
    1. 运行 git log 以查看您要返回的提交距离有多远
    2. 运行git reset HEAD^ --soft 假设它是您要重置的最后一次提交,如果您想返回2 次提交,您可以改为使用HEAD^^。这会将您的状态重置为该提交,但由于--soft 标志不会放弃您的更改,所以现在如果您执行git status,您应该能够再次看到这些文件以及您在这些提交中所做的其他更改李>
    3. git add你想要的文件忽略你不想要的文件并进行新的提交
    4. 通过运行 git reset --hardgit checkout .git clean -f -d 来重置/删除/忽略剩余文件以删除和重置不需要的更改
    5. git push您在验证更改后所做的更改。

    【讨论】:

    • 谢谢,我刚刚解决了它,但我相信你的第 4 点是我必须有效地重置本地文件并删除未版本控制的文件。我想我现在很好。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-05-07
    • 2018-05-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    相关资源
    最近更新 更多