【问题标题】:Commit changes only in one directory in Git仅在 Git 的一个目录中提交更改
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 如果我做你说的第二件事(尝试不分期提交),将提交哪些更改?
    • 在这种情况下,@Stefan,“提交将忽略索引中暂存的更改,而是记录列出文件的当前内容(Git 必须已经知道),”@987654321 说@.
    • 另外,如果您暂存了一些排除的文件,您可以使用以下命令取消暂存它们: $ git reset -- 然后 $ git commit -m 'msg' 和 tthen $ git push
    【解决方案2】:

    嗯,奇怪。以下应该工作。假设您没有上演任何内容。

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

    【讨论】:

    • 我真的不明白你的问题,但这可能是我自己的错 :) 我重写了我的答案。我希望它更令人满意。
    • 嗯,这有点清楚了。我仍然不明白为什么你必须'大喊'。实际上,只有在您也限制了 commit 的范围时,这才是正确的(因为您不知道还有什么已经上演了)
    • 好的,我跟着你。我不是要大喊大叫,只是为了强调这个词。替换为应该。是的,当然,我认为索引中没有添加任何其他内容。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您将在“暂存区”提交任何更改;你可以通过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

      【讨论】:

        【解决方案5】:

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

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

        在我看来,OP 不习惯/不喜欢直接使用暂存区。在没有进一步上下文的情况下推荐这种方法也更安全,因为默认提交(所有暂存的内容)很可能会

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

        【讨论】:

        • 我相信我确实提到过——至少是与问题相关的部分。 (提交消息是否包含在命令行中或稍后提示是与当前主题不同的问题,即如何提交特定目录而不提交其他所有内容。)
        • 糟糕。我错过了(-a 谈话让我偏离了轨道?)。我可能会下意识地扫描 -- 令牌。 (哦,提交消息只是习惯:)
        【解决方案6】:

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

        git commit -- my-dir
        

        【讨论】:

        【解决方案7】:

        基本

        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
        

        记得用空格或疯狂字符引用路径

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-04
          • 2011-07-06
          • 2021-05-20
          • 2010-09-22
          • 1970-01-01
          • 1970-01-01
          • 2011-01-15
          相关资源
          最近更新 更多