假设我想复制目录的内容,不包括名称中包含"音乐"一词的文件和文件夹.
cp [exclude-matches] *Music* /target_directory
Run Code Online (Sandbox Code Playgroud)
什么应该代替[exclude-matches]来实现这个目标?
我的git树中有一个文件:
$ git ls-files | grep /Expression.java
sm/src/main/java/cl/utilities/sm/Expression.java
Run Code Online (Sandbox Code Playgroud)
我想得到它的活动日志,而不必输入整个路径.基本上我想要这个输出:
$ git log --oneline -2 sm/src/main/java/cl/utilities/sm/Expression.java
2718cdc cleaned up some warnings
f30cf15 Added missing @Overrides
Run Code Online (Sandbox Code Playgroud)
......但无需打字sm/src/main/java/cl/utilities/sm.我尝试了很多东西,但没有一个有效:
$ git log -- \*/Expression.java
$ git log -- \*Expression.java
$ git log -- \*\*/Expression.java
$ git log -- '*/Expression.java'
$ git log -- '**/Expression.java'
Run Code Online (Sandbox Code Playgroud) 我只是在代码学校处理git课程https://try.github.io/levels/1/challenges/1,并被git add'*.txt'和git add*.txt的不同行为搞糊涂了.
没有引用的字符串没有添加所有内容.git rm也一样.为什么这样工作?或者只是网络版本?
我需要列出触及源树中的一个路径而不是另一个路径的提交。
D-头
C - 触摸foo和bar
B - 触碰foo
A - 基线
在 A 和 DI 之间想要一个所有涉及文件夹foo 的 提交列表,除非他们也接触文件夹bar,换句话说,在上面的例子中,我希望看到 B 而不是 C。
我试过了,git rev-list A..D --exclude='bar' -- foo但这仍然给了我 B 和 C。
请指教。
我正在使用git pre-commit钩子来检查提交.预提交脚本基本上做了一件事:
exec git diff-index --check --cached HEAD --
Run Code Online (Sandbox Code Playgroud)
它也做了一些其他的事情,但它们与这个讨论无关.
问题是,我在存储库中有各种各样的文件,并不是所有文件都必须遵守" git diff-index --check" 强制执行的检查.
所以我的问题是:如何排除/忽略这些文件?也就是说,我确实在git中跟踪它们,但我想在预提交检查中忽略它们.
例如,某个补丁包含*.c,*.h,*ini和*.xyz文件.我希望" git diff-index --check"仅适用于.c和.h文件.