- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据这个答案,我无法理解 git diff-filter 的“复制”和“重命名”是什么意思:https://stackoverflow.com/a/6879568/2039203 .当我重命名/移动某个文件时,该文件被处理为“已添加”和“已删除”。
那么问题来了:我应该怎么做才能使用以下两个命令过滤一些文件?我是否需要此过滤器选项来获取添加/删除文件的列表?
git diff --diff-filter=C --name-only
和
git diff --diff-filter=R --name-only
最佳答案
git diff
如果文件通过了“相似性测试”,它将显示为“已重命名”的文件。为确保它正在发生,请指定 -M
选项(我将在下面这样做)。1
$ mkdir /tmp/temprepo && cd /tmp/temprepo && git init
$ cat << end > file
> Here is some text for a file.
> We want it to be long enough
> that renames and copies can
> be detected fairly easily.
> If we put ten lines into the
> file, then each percent of
> similarity is one tenth of
> each of the lines, i.e., each
> line represents 10% similarity
> to the earlier file.
> end
$ git commit -m initial
[master (root-commit) 842824a] initial
1 file changed, 10 insertions(+)
create mode 100644 file
$ git mv file newname
$ git diff --cached --name-status
R100 file newname
让我们继续并提交它,这样我们就可以 git diff
两次提交,而不是提交和索引:
$ git commit -m B
[master a2380eb] B
1 file changed, 0 insertions(+), 0 deletions(-)
rename file => newname (100%)
看看它做了什么:
$ git diff --name-status -M HEAD^ HEAD
R100 file newname
现在让我们做一个小改动:
$ ed newname
279
9s/10/about 10/p
line represents about 10% similarity
w
285
q
$ git commit -a -m C
[master 57fce41] C
1 file changed, 1 insertion(+), 1 deletion(-)
$ git diff --name-status -M HEAD~2 HEAD
R087 file newname
--name-status
之间的差异(选择了 HEAD~2
模式) (初始提交)和最新提交现在显示该文件 file
已重命名为 newname
只有 87% 的相似度,而不是 100% 的相似度(如现在在 HEAD~2
和 HEAD~1
之间看到的那样)。2
要查看副本,您通常必须运行 git diff
与 -C
和/或 --find-copies-harder
.
您可以控制在 -M
之后使用数值检测重命名(和副本)的相似文件必须达到的程度。 (和 -C
),例如 -M90%
导致上述 git diff --name-status
将重命名视为添加和删除对:
$ git diff --name-status -M90% HEAD~2 HEAD
D file
A newname
-B
选项也会影响重命名检测,git config
也是如此。设置diff.renameLimit
和 diff.renames
(请参阅文档)。完全击败重命名检测——这使得使用 --diff-filter
编写 git 钩子(Hook)脚本成为可能在许多情况下更容易——使用 --no-renames
(或任何不遵守 diff.renames
的瓷器命令;另请参见脚注 1)。
1当 diff.renames
时,此相似性测试默认为“50% 相似”启用,禁用时“仅完全匹配”。在 2.9 之前的 Git 版本中,diff.renames
默认为 false
(禁用);在 2.9 及更高版本中,它默认为 true
(已启用),也可以设置为 copy
或 copies
启用 -C
选项也是如此。请注意 diff.renames
设置适用于 git diff
,这就是 Git 所说的瓷器(或面向用户的)命令,而不是,例如 git diff-tree
。 ,这就是 Git 所说的 plumbing 命令。您必须使用 -M
或 --find-renames
如果您希望管道命令进行重命名检测,请选择此选项。
2之前,我们使用了HEAD^
和 HEAD
,但我们添加了提交 C
从那时起,初始提交现在是 HEAD^^
或 HEAD~2
.
关于git - 什么使 git diff --diff-filter=CR 命令中的 C 和 R 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21697280/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!