【发布时间】:2011-08-17 06:16:36
【问题描述】:
我在 Mac 10.6.6 上使用 Git 1.7.4.1。从命令行,如何仅在单个目录中提交更改?我通过这样做添加了目录:
git add my-dir
但是做
git commit -a
在我的 repo 中列出所有更改,我只想从 my-dir 提交和推送更改。
【问题讨论】:
标签: git
我在 Mac 10.6.6 上使用 Git 1.7.4.1。从命令行,如何仅在单个目录中提交更改?我通过这样做添加了目录:
git add my-dir
但是做
git commit -a
在我的 repo 中列出所有更改,我只想从 my-dir 提交和推送更改。
【问题讨论】:
标签: git
省略-a 选项。然后git 将仅提交您使用git add 暂存的文件。
您也可以尝试使用git commit my-dir 提交目录而不暂存。
【讨论】:
嗯,奇怪。以下应该工作。假设您没有上演任何内容。
git add my-dir
git commit -m "Commiting first revision of my-dir folder. Very exciting feature!"
git push origin master
【讨论】:
commit 的范围时,这才是正确的(因为您不知道还有什么已经上演了)
只需按照您的指定使用git add 暂存文件夹,然后在不使用-a 选项的情况下进行提交:git commit -m "Committing stuff"。 -a 选项表示提交所有已修改的文件,即使它们没有暂存。
【讨论】:
您将在“暂存区”提交任何更改;你可以通过git status看到这些。
git commit -a 中的 -a 标志,根据手册页,告诉 git 大致“暂存所有已修改或删除的文件,但不是你没有告诉 git 的新文件” - 这个不是你想要的
教训是要了解命令行选项的作用
要解决此问题,您首先要做的是,根据How to undo 'git add' before commit?,取消暂存您使用commit -a 选项意外添加的所有文件。根据那个答案,您必须执行命令git rm -r --cached .,现在您的更改应该仍然存在,但没有暂存。
现在您可以像以前一样使用git add my-dir。然后你可以做git commit(没有-a)
【讨论】:
为什么没有人提到你可以简单
git commit -m 'message' -- my-dir
在我看来,OP 不习惯/不喜欢直接使用暂存区。在没有进一步上下文的情况下推荐这种方法也更安全,因为默认提交(所有暂存的内容)很可能会
【讨论】:
-a 谈话让我偏离了轨道?)。我可能会下意识地扫描 -- 令牌。 (哦,提交消息只是习惯:))
在一个命令中完成所有操作:
git commit -- my-dir
【讨论】:
基本
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
记得用空格或疯狂字符引用路径
【讨论】: