如何在GitHub for Windows中提交除一个文件之外的所有文件

sag*_*ale 18 git github-for-windows

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

den*_*agt 37

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

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

    git add .
    git reset filename
    git commit -m "commit message"
    
    Run Code Online (Sandbox Code Playgroud)

    第一个命令将所有文件添加到暂存区域.然后第二个命令从暂存区域中删除一个文件.这意味着文件未在提交中添加,但对其的更改将保留在本地驱动器上.

  2. 如果文件已提交到存储库但您只是偶尔想要提交文件的进一步更改,则可以这样使用git update-index --assume-unchanged:

    `git update-index --assume-unchanged filename`
    
    Run Code Online (Sandbox Code Playgroud)

    如果您随后在本地更改文件,则在执行添加所有文件的操作时,不会将其添加到暂存区域,例如git add ..在一段时间后,如果要再次提交对文件的更改,可以运行git update-index --no-assume-unchanged filename以停止忽略更改.

  3. .gitignore如果您根本不想跟踪文件,则可以使用该文件.要忽略名为的文件,filename请创建或编辑名为的文件.gitignore.添加filename自己的一行来忽略该文件.现在,执行时文件未添加到暂存区域git add ..备注:如果文件已经签入,则必须将其从存储库中删除才能实际开始忽略它.执行以下操作即可:

    `git rm --cached filename`
    
    Run Code Online (Sandbox Code Playgroud)

    --cached选项指定只应从索引中删除该文件.本地文件,无论是否更改,都将保持不变.您可以添加该.gitignore文件并提交以在其他计算机上使用相同的存储库来忽略该文件.

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

一些说明:

  • 更改filename为要排除的文件的实际名称.
  • 您也可以排除完整目录,而不是排除单个文件.你可以通过简单地替换目录名来实现filename.
  • 启动Git Shell的一种简单方法是启动GitHub for Windows,右键单击要排除/忽略文件的项目并选择该选项Open in Git Shell.现在,您位于git存储库的根目录下,您可以开始执行此答案中显示和描述的命令.

  • 极好的信息。非常感谢! (2认同)