【问题标题】:How to commit all file except one in GitHub for Windows如何在 GitHub for Windows 中提交除一个文件之外的所有文件
【发布时间】:2014-12-26 03:52:19
【问题描述】:

我想提交除一个文件之外的所有文件。我可以使用 GitHub for Windows 客户端执行此操作,还是需要使用命令行?如果需要使用命令行,如何使用?

【问题讨论】:

  • 是的,您可以通过客户端完成
  • stackoverflow.com/questions/4475457/… 请检查此链接。这可能会对您有所帮助。
  • 感谢您的建议,但命令会删除所有修改过的文件。我只想提交除一个文件之外的所有文件,并且文件应该有更改。

标签: git github-for-windows


【解决方案1】:

据我所知,如果不使用 git shell/命令行,这是不可能的。在 Git Shell 中,您有几个选项。所有这些都会产生略有不同的结果。

  1. 如果您只想暂时排除文件(可能是一次提交)并在以后的提交中添加它,您可以执行以下命令:

    git add .
    git reset filename
    git commit -m "commit message"
    

    第一个命令将所有文件添加到暂存区。 Then the second command removes the one file from the staging area. This means the file is not added in the commit but the changes to it are preserved on your local drive.

  2. 如果文件已经提交到存储库,但您只是偶尔想提交文件的进一步更改,您可以通过这种方式使用git update-index --assume-unchanged

    `git update-index --assume-unchanged filename`
    

    如果您随后在本地更改文件,当您执行添加所有文件的操作时,它不会被添加到暂存区域,例如 git add .When, after some time, you want to commit changes to the file again, you can run git update-index --no-assume-unchanged filename to stop ignoring the changes.

  3. 如果您根本不想跟踪文件,可以使用.gitignore 文件。 To ignore a file named filename you create, or edit, a file called .gitignore. Put filename on a line of its own to ignore that file. 现在执行git add . 时文件不会添加到暂存区。备注:如果文件已经签入,您必须将其从存储库中删除才能真正开始忽略它。执行以下操作即可:

    `git rm --cached filename`
    

    The --cached option specifies that the file should only be removed from the index. 本地文件,无论是否更改,都将保持不变。您可以添加 .gitignore 文件并提交以使该文件在具有相同存储库的其他机器上被忽略。

  4. 如果您想忽略一个未跟踪的文件,但又不想与其他存储库贡献者共享此忽略,您可以将忽略的文件的名称放入文件 .git/info/exclude.git 目录通常是隐藏的,但您可以通过更改文件夹选项使其可见。与.gitignore 文件一样,如果文件已被先前的提交签入,则必须执行git rm --cached filename

一些注意事项:

  • filename 更改为您要排除的文件的实际名称。
  • 除了排除单个文件之外,您还可以排除整个目录。您只需将目录名称替换为 filename 即可。
  • 启动 Git Shell 的一种简单方法是启动 GitHub for Windows,右键单击要在其中排除/忽略文件的项目并选择选项 Open in Git Shell。现在您位于 git 存储库的根目录,您可以开始执行此答案中显示和描述的命令。

【讨论】:

    【解决方案2】:

    您可以只创建一个 .gitignore 文件并在其中添加要排除的文件的名称。

    【讨论】:

      【解决方案3】:

      更新:这是“老办法”。现在有一个名为 git reset 的命令,您应该改用它,因为它消除了删除您在提交中确实想要的文件的风险。


      我会做以下事情:

      git add .
      git checkout filename
      git commit -m "commit message"
      

      第一行添加列表中的所有文件,第二行删除您指定的文件,其中“filename”应该是您不希望提交的文件的名称。

      或者

      git checkout filename
      git commit -am "commit message"
      

      git commit -am 添加文件的同时做出提交信息。

      如果您需要删除您在上一个文件中所做的更改:

      git stash -u
      

      【讨论】:

      • 这很危险! checkout 命令会删除您从上次提交中对文件所做的所有更改,如果您想按照 OP 的要求提交除一个文件之外的所有文件,则不会使用这种命令。您应该在替换中使用重置。
      • 在 2017 年我写这个答案时, git reset 不存在,但感谢 jmm 指出这一点 - 我会更新我的答案。
      猜你喜欢
      • 2012-05-31
      • 2019-03-16
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 2017-12-08
      • 1970-01-01
      • 2016-09-25
      相关资源
      最近更新 更多