我正在尝试通过终端中的管道传递参数以获取git命令,并且,按照惯例,我不知道我在做什么。
目前:git rm --cached folder/path | rm -rf folder/path | git commit -m '...'
如果可能的话,我不想在第二个命令中重复使用文件夹路径,但我不确定如何从第一个命令中获取folder/path
。
甚至可能,还是我在错误的树上狂奔?
答案 0 :(得分:0)
你不需要做管道。
rm folder/file
git rm !$
git commit -m "your message"
在bash中学习bang(!)运算符非常值得。再次指定长路径并不是最好的。
对于我的大多数工作流程,我都可以解决这个问题:
rm path/to/unwanted/file
git add -A # stages ALL changes in the work tree
git commit -m "my message"
如果我正在修复之前错误添加了我不想要的文件的提交,可以通过将上面代码片段中的最后一次提交更改为
来修改该提交。git commit --amend -C HEAD
这将重用当前提交的消息。
您可能希望包含git状态的输出以及您要执行的操作。
答案 1 :(得分:0)
我认为这应该有效:
param=/folder/path; git rm --cached $param | rm -rf $param | git commit -m '...'
编辑:@pholser解决方案通过使用unset
从环境中删除变量,使事情变得更清晰。这也可以在subshell:
(param=/folder/path; git rm --cached $param | rm -rf $param | git commit -m '...')
答案 2 :(得分:0)
x=/folder/path && git rm --cached $x | rm -rf $x | git commit -m '...' && unset x
答案 3 :(得分:0)
您无需从索引中删除并单独从文件系统中删除,git rm
旨在同时执行这两项操作:
git rm -r folder/path
对rm
或git commit
的管道没有任何意义,因为它们都没有从你正在尝试的表格中读取标准输入。您可以使用;
分隔命令。