相关疑难解决方法(0)

如何在git中进行重命名而不进行后续编辑?

我有一个文件,我已重命名,然后编辑.我想告诉Git进行重命名,但不是内容修改.也就是说,我希望删除旧文件名,并添加旧文件内容和新文件名.

所以我有这个:

Changes not staged for commit:

        deleted:    old-name.txt

Untracked files:

        new-name.txt
Run Code Online (Sandbox Code Playgroud)

但想要这个:

Changes to be committed:

        new file:   new-name.txt
        deleted:    old-name.txt

Changes not staged for commit:

        modified:   new-name.txt
Run Code Online (Sandbox Code Playgroud)

或这个:

Changes to be committed:

        renamed:    old-name.txt -> new-name.txt

Changes not staged for commit:

        modified:   new-name.txt
Run Code Online (Sandbox Code Playgroud)

(相似性度量应为100%).

我想不出一个直截了当的方法来做到这一点.

是否有获取特定文件的特定修订内容的语法,并将其添加到指定路径下的git临时区域?

删除部分,git rm很好:

$ git rm old-name.txt
Run Code Online (Sandbox Code Playgroud)

这是我正在努力的重命名的补充部分.(我可以保存新内容,mv在shell中签出一份新的副本(旧内容),git add然后恢复新内容,但这似乎有很长的路要走!)

谢谢!

git file-rename git-add

19
推荐指数
2
解决办法
2427
查看次数

(Git合并)何时使用“我们的”策略,“我们的”选项和“他们的”选项?

git merge文档中提取的递归合并策略的定义。

这只能使用3向合并算法解析两个磁头。当有一个以上的公共祖先可用于三路合并时,它将创建一个公共祖先的合并树,并将其用作三路合并的参考树。据报道,这样做可以减少合并冲突,而不会因对Linux 2.6内核开发历史记录中的实际合并提交进行测试而导致合并错误。此外,这可以检测和处理涉及重命名的合并。当拉或合并一个分支时,这是默认的合并策略。

递归策略可以采用以下选项:

如前所述,递归策略是默认策略,它使用3向递归合并算法(在此处Wikipedia上进行了说明)。

我的理解是冲突的大块必须手动解决,并且通常以这种方式表示

<<<<<<<<<<<
developer 1's code here
============
developer 2's code here
>>>>>>>>>>>
Run Code Online (Sandbox Code Playgroud)

我们的递归合并策略的选择进行了说明如下:

通过支持我们的版本,此选项可以强制自动解决冲突的大块。与另一棵树不冲突的更改会反映到合并结果中。对于二进制文件,全部内容都是从我们这边获取的。

这不应与我们的合并策略混淆,该策略甚至根本不看另一棵树包含的内容。它丢弃另一棵树所做的所有操作,声明我们的历史包含其中发生的所有事件。

现在假设我有两个分支Y和M的头,并且具有一个共同的基本祖先B,如下所示

在此处输入图片说明

当使用默认递归策略合并Y和M时,第30行将变为Print("hello");行,因为在第30行,Y表示从基本祖先开始的更改,而M则不是。但是如果我在M分支上并运行

git merge -s recursive -X ours Y

第30行会成为Print("bye");合并后的输出吗?

对于那些说这很明显的人,请注意我们的选项指出

通过支持我们的版本,此选项可以强制自动解决冲突的大块

但是(据我了解)在第30行没有冲突的块。

为了完整起见,我还将提供他们的选项的文档:

这与我们的相反。


我们的策略文档如下:

这样可以解析任意数量的head,但是合并的结果树始终是当前分支head的树,有效地忽略了所有其他分支的所有更改。它旨在取代侧支的旧开发历史。请注意,这与递归合并策略的-Xours选项不同。

所以回到上面的例子,如果我跑了

git merge -s ours Y

在分支M上,很明显第30行将Print("bye");在合并的输出中。在这种情况下,为什么也没有 …

git version-control merge github

7
推荐指数
1
解决办法
5840
查看次数

标签 统计

git ×2

file-rename ×1

git-add ×1

github ×1

merge ×1

version-control ×1