git status
提供了修改过的文件列表:
modified : app/controllers/AppController.controller.php
modified : app/controllers/Front.controller.php
modified : app/models/Booking.model.php
modified : app/models/Price.model.php
modified : app/views/AdminBookings/update.php
modified : app/views/Layouts/elements/leftmenu.php
...
每次我必须添加,签出或记录文件时,我发现文件路径“输入”(无论如何)是不方便的。
有没有办法将ID与这些文件相关联,以便我可以更快地单独管理它们?像这样:
[0] modified : app/controllers/AppController.controller.php
[1] modified : app/controllers/Front.controller.php
[2] modified : app/models/Booking.model.php
[3] modified : app/models/Price.model.php
[4] modified : app/views/AdminBookings/update.php
[5] modified : app/views/Layouts/elements/leftmenu.php
...
$ git add --id 3
答案 0 :(得分:3)
我不太喜欢交互模式-我发现它对于我想要的东西来说太慢了。我编写了一个自定义git命令,名为git-a
。此命令必须在您的PATH
上,并且必须是可执行文件。它基于命令git status -s
的输出,以避免进一步的字符串过滤,greping等。
exclusionList=('M', 'MM', 'MD', 'MMD', 'A', 'AM', 'AD', 'AMD', 'D', 'DR', 'DC',\
'RM','RD', 'RMD', 'C', 'CM', 'CD', 'CMD', 'DD', 'AU', 'UD', 'UA', 'DU', 'AA',\
'UU', '??', '!!', 'R')
allEntries=( $(git status -s) )
relevantEntries=()
previousEntry=""
for currentEntry in "${allEntries[@]}"; do
if ! echo ${exclusionList[@]} | grep -q -w -- "$currentEntry"
then
# if the currenty entry is the '->', that means this is a file
# rename - therefore, the old name (first after the letter) should
# be removed from the array, and the new name used instead
if [ "$currentEntry" == '->' ]
then
unset 'relevantEntries[${#relevantEntries[@]}-1]'
else
relevantEntries+=("$currentEntry")
fi
previousEntry="$currentEntry"
fi
done
git add ${relevantEntries[$(( $1 - 1 ))]}
我知道这是完全手动的,但是您可以跟踪git docs上所有可能的状态输出。从本质上讲,它是一个列表理解,但是用bash表示。
请注意,此命令可用于任何您喜欢的命令-只需更改最后一行,其工作原理将相同。我目前正在考虑仅获取relevantEntries
的方法,使其可用于任何git命令,但是我不确定如何执行此操作。
我当前正在创建名称为git-custom-add
的文件,并在我的.gitconfig文件中将其别名为cadd
,因此我可以使用我认为合适的所有参数,并且仍然保持命令简短。
答案 1 :(得分:1)
尝试使用git add -i
进行互动添加。它会让你进入这样一个屏幕:
staged unstaged path
1: unchanged +45/-5 app/controllers/AppController.controller.php
2: unchanged +4/-2 app/controllers/Front.controller.php
3: unchanged +15/-5 app/models/Booking.model.php
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now>
从那里,您可以选择update
(或简称u
)进入添加模式
What now> u
staged unstaged path
1: unchanged +45/-5 app/controllers/AppController.controller.php
2: unchanged +4/-2 app/controllers/Front.controller.php
3: unchanged +15/-5 app/models/Booking.model.php
Update>>
从更新提示中,您现在可以选择要添加到索引的文件。只需输入要添加的文件的编号即可。如果您有一个彩色输出,您还可以看到文件路径的某些部分是蓝色的,突出显示您可以输入以引用该文件的文本。
您可以暂存多个文件,例如要暂存第一个和第三个,输入1并按回车键,然后输入3并按回车键。注意文件前面的星星表示您已将它们分级。完成后,在空更新提示上按Enter键离开。您将在开始屏幕中返回,您可以通过输入q
退出。
答案 2 :(得分:0)
您可以按路径添加
$('#tree').on('select_node.jstree', function (e, data) {
data.instance.toggle_node(data.node);
});
或所有文件:
git add models/
或通过面具