仅在Git中的一个目录中提交更改

时间:2011-05-02 20:41:04

标签: git

我在Mac 10.6.6上使用Git 1.7.4.1。从命令行,如何仅在单个目录中提交更改?我通过执行以下操作添加了目录:

git add my-dir

但正在做

git commit -a

显示我的仓库中所有更改的列表,我只想提交并推送来自my-dir的更改。

7 个答案:

答案 0 :(得分:51)

为什么没有人提到你可以简单地

git commit -m 'message' -- my-dir

在我看来,OP不习惯/不喜欢直接使用临时区域。这种方法在没有进一步背景的情况下推荐也更安全,因为可能是违约提交(已经上演的所有内容)

  • 如果已经上演了
  • ,则提交的不仅仅是my-dir 当OP不用于明确管理暂存区域时,
  • 会产生令人困惑的结果(因为工作树可能与索引不同步)

答案 1 :(得分:36)

省略-a选项。然后git将仅提交您使用git add暂存的文件。

您也可以尝试提交目录而不使用git commit my-dir暂存。

答案 2 :(得分:14)

嗯,奇怪。以下应该有效。假设你什么都没有上演。

git add my-dir
git commit -m "Commiting first revision of my-dir folder. Very exciting feature!"
git push origin master

答案 3 :(得分:6)

<强>基本

git add -- ./myfolder
git commit -m'my comment' -- ./myfolder

有更多文件和目的地

git add -- ./myfolder1 ./myfolder2./some/random/file.txt
git commit -m'cool' -- ./myfolder1 ./myfolder2 ./some/random/file.txt

我在寻找git bare repo

git --git-dir=path/to/my/repo --work-tree=path/to/my/working/tree add -- ./myfolder
git --git-dir=path/to/my/repo --work-tree=path/to/my/working/tree commit -m'my comment' -- ./myfolder

请记住引用带空格或疯狂字符的路径

答案 4 :(得分:4)

只需按照您的指定使用git add暂存文件夹,然后在没有-a选项的情况下进行提交:git commit -m "Committing stuff"-a选项意味着提交所有已修改的文件,即使它们没有被暂存。

答案 5 :(得分:4)

在一个命令中完成所有操作:

git commit -- my-dir

答案 6 :(得分:2)

您将在“暂存区”中提交任何更改;你可以用git status看到这些。

-a中的git commit -a标志,根据手册页,告诉git大致“暂存所有已修改或删除的文件,但不是你没有告诉git的新文件” - 这不是您想要的

本课程应了解命令行选项

要解决此问题,根据How to undo 'git add' before commit?,您要做的第一件事就是取消使用commit -a选项意外添加的所有文件。根据该答案,您必须执行命令git rm -r --cached .,现在您的更改仍应存在,但不会进行任何操作。

现在你可以像以前一样做git add my-dir。然后,您可以git commit(没有-a