代码之家  ›  专栏  ›  技术社区  ›  letthefireflieslive

在一行中添加并提交特定文件

git
  •  2
  • letthefireflieslive  · 技术社区  · 8 年前

    我有两份文件 没有上演 对于commmit:

    • src/A.java
    • src/B.java

    我希望在一行中添加并提交B.java。最方便的方法是什么,比如一个班轮。

    我知道 git commit -am "Commit message" ,我需要为你做这件事 特定文件

    2 回复  |  直到 8 年前
        1
  •  3
  •   torek    8 年前

    您还可以运行以下任一操作:

    git commit --only <paths>
    

    (添加 -m <message> 如果需要),或:

    git commit --include <paths>
    

    (再次添加 -m<信息> 如果需要)。这有点过于简化了,其效果是将指定的路径添加到索引中( --include )或临时索引( --only ),然后使用您选择的索引提交 --只是 vs --包括 .

    如果你用过 --包括 ,在当前分支上成为新头提交的已完成提交将自动由扩展索引表示。这个案例是一个更简单的描述:它真的很有效,就像你 git add 我把那些文件都删掉了 git添加 编辑文件。

    如果你用过 --只是 ,完成的提交成为新的头,代表了不一定在 典型的 指数这种情况更为复杂,因为在开始之前,索引通常应该表示(因此包含与头提交相同的所有文件) git添加 正在删除文件以覆盖索引版本。这里的内部细节是Git复制了 --只是 安全安装新提交后,将文件添加到常规索引中。

    保留过度简化(因为所有版本实际上都使用一些特殊的临时索引文件),我们可以如下所示:

    • 正常提交:使用 这个 索引作为提交的所有文件的源。提交完成后,索引仍然是索引,并且仍然包含所有文件。

      因此,如果你 git add fileA 然后 git commit ,新提交具有新的 fileA (和以前一样,每隔一个文件都是相同的旧文件)。索引和新的 HEAD 提交匹配。

    • git commit --include <file> :行为很像 git添加 然后 git提交 .

      因此,如果你 git添加文件 然后 git commit --include fileB ,新提交具有新的 菲拉 新的 fileB (和以前一样,每隔一个文件都是相同的旧文件)。索引和新的 头 提交匹配。

    • git commit --only <file> :复制 头 “提交到临时索引,”他补充道 <file> 到临时索引,然后运行 git提交 使用临时索引。关于成功,他补充道 <文件> 到 这个 索引也是如此。

      因此,如果你 git添加文件 然后 git commit --only fileB ,新提交具有 古老的 菲拉 (来自上一个 头 承诺),承诺 新 文件 (来自临时索引),并且与以前一样每隔一个文件使用相同的旧文件。索引 之后 新的 菲拉 新的 文件 ,因此提交后的索引与新索引不同 头 提交,因为它有不同版本的 菲拉 .

        2
  •  3
  •   letthefireflieslive    8 年前

    自从 git commit -am 如果要添加所有内容,您仍然需要先添加,然后提交,但至少可以在一行中完成

    git add src/B.java && git commit -m "add B"
    

    关键是,没有本机Git命令只用于添加和提交一个文件(或修改文件的子集)