【问题标题】:Project commits too many files项目提交太多文件
【发布时间】:2017-04-19 23:37:43
【问题描述】:

我刚刚使用 git 克隆了一个项目并打开了一个新分支。 仅更改 1 个文件后,我尝试提交更改,但它显示我正在提交 3000 多个文件。单击任何文件查看差异后,phpstorm 会显示“没有差异”。

我听说这可能是与行尾有关的错误,但我现在不知道该怎么做。请你帮助我好吗?现在验证3000个文件是不可能的,我不想用疯狂的东西来破坏这个项目。

我尝试将 phpstorm 中的行尾更改为 LF (unix) 和 CRLF (windows),但它根本没有帮助。我听说可能还需要在 git 中更改它,所以我尝试运行一些随机推荐的命令,但根本没有结果。

编辑:增加了 100 声望赏金。我无法解决这个问题

解决方案:好的,看起来是权限问题。我在所有目录上都给了 chmod 777 太多了。

【问题讨论】:

  • 它说的变化是什么......
  • 这通常是由修改权限或行尾引起的。看看git diff 看看有什么变化。
  • @MikeB,问题作者已经提到the phpstorm says "no differences"
  • 在尝试提交之前,您是否从终端运行了git add .? (或者您是如何进行更改的?phpstorm 会自动为您执行此操作吗?)
  • 你是要提交到同一个仓库还是新仓库?

标签: git phpstorm bitbucket commit


【解决方案1】:

您可能需要在.gitignore 文件中添加一两行。这是由我的 IDE 和操作系统创建的一些我不想提交的项目文件的示例。这些行列在我的.gitignore 文件中。

# Package Files #
*.jar
*.war
*.ear

### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
*.iml
.idea

### OSX ###
.DS_Store
.AppleDouble
.LSOverride

【讨论】:

    【解决方案2】:

    取消提交,或提交到单独的分支,然后向 master 发出拉取请求。

    【讨论】:

    • 但这是我提交 1400 个我从未更改过的文件的正常行为吗?我现在在我的分支上提交,但它正在浏览所有这些文件,这太疯狂了
    【解决方案3】:

    您可以检查您的项目是否使用了 linting 工具。如果您在 Javascript 环境中,则可以使用 ESLint 或 JSLint。在 linting 工具的配置文件中,检查定义了哪种类型的行尾。

    对于Windows\r\n 是为 CRLF 定义的。

    对于 UNIX\n 是为 LF 定义的。

    确保在您的项目中设置了正确的行尾,因为这可能会导致您遇到问题。

    PhpStorm 中,您还可以转到 Editor>Code Style 并查看您在 行分隔符 下定义的设置类型。 p>

    远程分支和本地环境之间的行尾方案的偏差可能会导致提交几个您没有修改的不需要的文件。

    【讨论】:

      【解决方案4】:

      如果您在本地执行了 git init 并在执行 git init 的文件夹中执行了 git clone,那么它会将所有文件显示为未提交和未跟踪,因为您的本地 git 不知道这些文件。

      这发生在许多使用 git init 和 git clone 的开发人员身上。

      解决方案:

        • 删除 git init
        • 克隆网址

      应该可以。 我不确定你是否也这样做过,但它就是其中之一。

      【讨论】:

        【解决方案5】:

        您可以检查HTMLCSSJS 可以由 IDE 自动格式化的代码格式(例如 4 space -> 2 space 或反向)。还要检查line ending for Windows/Linux machine。

        1. 一种解决方案是将您的one file changes(修改后的文件)保存在某处。
        2. 关闭您的IDE。使用终端。
        3. 然后撤消(硬重置:将删除所有更改)您的最后一次提交。

          $ git reset --hard HEAD~1
          
        4. 然后将文件替换为修改后的文件。 (使用终端或操作系统 GUI)

        5. 然后git add & commit

          $ git status                  # see difference between working directory and the index
          $ git commit -am 'message'    # add & commit 
          

        【讨论】:

          【解决方案6】:

          你对文件权限做了什么吗?我认为这可能是问题所在。

          尝试比较单个文件:

          git diff mybranch master -- myfile.cs
          

          如果是权限问题,你会得到这样的:

          old mode 100755  
          new mode 100644 
          

          【讨论】:

          • 如果这是问题所在,那么上面的 VonC 提供了修复。 (设置文件模式)
          【解决方案7】:

          检查差异的性质。

          For eol, try:

          git -c color.diff.whitespace="red reverse" diff -R -- afile
          

          如果是这种情况,请在

          之后再次克隆您的 repo
          git config --global core.autocrlf false
          

          Check also 用于 text=auto 文件中的任何 text=auto 指令。


          For file permission mode,之后再次克隆你的仓库:

          git config --global core.filemode false
          

          您可以看到与git diff 的区别,正如我在this answer 中提到的那样。
          注意since Git 2.9.1,可以用

          改变文件的权限
          git add --chmod=+x -- yourFile
          

          【讨论】:

          • Lucio 展示了如何判断是否是权限问题(下) git diff mybranch master -- myfile.cs
          【解决方案8】:

          可能有一些神奇的东西,所以您需要做的就是在检查该分支后首先执行 git checkout .git clean -f . 然后应用您的更改。

          【讨论】:

            【解决方案9】:
            git checkout .
            git clean -f
            git reset --hard
            git clone
            

            您的编辑器缩进配置必须不同,例如空格/制表符或制表符大小,或 html/css 首选项,因此会显示由不同缩进引起的差异。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-04-13
              相关资源
              最近更新 更多