【发布时间】:2015-08-05 08:58:23
【问题描述】:
我经常遇到如下场景:
modified: assembly/main.debug.s
modified: ../src/cd/Config.java
modified: ../src/cd/memoization/cfg/SubgraphFinder.java
modified: ../src/cd/memoization/cfg/SubgraphMap.java
modified: ../src/cd/profiler/Profile.java
modified: ../test/cd/test/TestSamplePrograms.java
modified: ../../notes/20150521.txt
这里我有一堆文件,我想将它们包含在不同的提交中。到目前为止我所做的是做一堆git add <pathspec>,然后是相应的git commit。 <pathspec> 让我很恼火。有没有像下面这样的?
1 modified: assembly/main.debug.s
2 modified: ../src/cd/Config.java
3 modified: ../src/cd/memoization/cfg/SubgraphFinder.java
4 modified: ../src/cd/memoization/cfg/SubgraphMap.java
5 modified: ../src/cd/profiler/Profile.java
6 modified: ../test/cd/test/TestSamplePrograms.java
7 modified: ../../notes/20150521.txt
git magic 2,3,5 -m "My super simple commit"
【问题讨论】:
-
“我有一堆文件,我想将它们包含在不同的提交中”。好的,那么您实际上想要做什么?所有文件都包含在任何 git repo 中。如果您更改文件,则更改存在于某处的分支上,即使只是 master。您试图实现什么(大图)导致您提出这个问题?
-
那么,你想要
git commit -a -m "...."之类的东西,但它应该是有选择性的(不是所有修改过的文件都像-a那样)?这听起来确实是一个有趣的功能,可以节省一些时间 -
听起来您正在寻找 git 的接口,也许像 Magit 之类的? masteringemacs.org/article/introduction-magit-emacs-mode-git
-
我会创建一个 .gitignore 文件来排除您不想添加的所有路径或排除所有文件并指定要包含的一次。然后使用
git add . --all,然后使用 git commit。这是一个可能有帮助的链接:stackoverflow.com/questions/30322696/git-missing-some-files/… -
@MichaelDurrant 大局很简单。想象一下,您在 git 存储库中修改了多个文件,并且您所做的更改在语义上属于不同的提交。 #Slizzered 这正是我想做的。理想情况下,不是通过单独指定路径,而是通过 git status 显示某种枚举,就像我的问题一样,以便更轻松地选择文件。 #Peter Paul Kiefer 这对我来说听起来很乏味。