Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >与git合并分支,但文件移动和删除除外

与git合并分支,但文件移动和删除除外
EN

Stack Overflow用户
提问于 2016-07-21 08:27:26
回答 2查看 154关注 0票数 2

与git合并时是否有一种不合并文件移动和删除的方法?

我们已经创建了一个分支,然后通过删除或移动大量文件来减少分支。在该分支中也对重新组织的文件进行了一些修改。现在我想要做的是将对已修剪的目录所做的更改合并回完整的分支,但仍然保留所有已删除的文件,并将所有文件保存在原来的位置。

是否有一种简单的方法可以让git在不做任何文件删除或移动的情况下,将修改从修剪后的分支合并回来?最好是能够轻松处理修改文件已被移动的事实。

请注意,我主要关注的是更改的内容,而不是分支历史,所以使用摘樱桃或重基的方法是可以的。(只要我不需要手动拖网查看提交历史记录,就可以通过修改更改来隔离这些提交。)

我找到了https://stackoverflow.com/questions/19166368/how-do-i-ignore-file-deletions-in-a-git-branch-for-merging-purposes,但问题是有前途的,答案是“不要那样做”。在我的情况下,已经发生了分支和删除。

EN

回答 2

Stack Overflow用户

发布于 2016-07-21 14:49:52

这不是我在吉特做的事。也许有一种方法可以做到这一点,但是我会用一些shell脚本来代替。您没有指定您的环境,但我的解决方案将是UNIX环境。不管如何,都应该有运行bash脚本的工具。

首先,如果您的分支发生了分叉,以便对您想要“合并”的两个分支进行更改,那么您可能希望进行一个重基。让我们将您的分支称为masterdeletions。如果您推动了deletions,以便其他人正在处理该分支,那么我可能会创建一个新的相同的分支deletions2,它将基于master来避免重写历史记录。无论如何,您可能都不想继续在deletions上工作,因为您将不得不全部重做,但是这样做不会破坏任何东西。

然后,通过复制回购文件,手动将所有文件从deletions2复制到master,并在回购文件的一个副本中检出一个分支,在另一个副本中检出另一个分支。然后,我将列出所有跟踪的文件,并使用一个简单的循环复制它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
deletions2/ $ \
git ls-tree HEAD -r | while read f; do \
    # use -n to keep master versions, -f to keep deletions versions, \
    # or -i to choose manually for each file \
    cp -f "$f" ../master/ \
done
票数 1
EN

Stack Overflow用户

发布于 2016-07-22 09:13:40

我就是这样处理的。

与user2882096的回答一样,我将使用这样的约定:完整的、预删除的分支是master,而修剪的分支是deletions。我还假设您正在从存储库的根目录中工作。

首先,git很容易被移动的文件搞混,所以第一件事是在牺牲分支中反转移动。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git checkout -b deletions2 deletions
git merge-base deletions2 master # Note this SHA1 - substitute it in the following commands
git diff --diff-filter=R -M25% --raw SHA1 | awk '{system("mkdir -p `dirname " $(NF-1)"`; git mv " $NF " " $(NF-1) )}'
git commit

git命令使用diff-filter只提取刚刚在删除分支上发生的重命名(移动)。-M25%意味着进行更广泛的重命名检测,查找除了移动之外还有75%修改的文件。-raw将输出格式更改为更便于后处理的输出格式.

awk命令只是逆转移动的一种方法。(请注意,如果文件名中有空格或时髦字符,这并不一定是健壮的。)这里唯一的复杂之处在于,git mv不会创建一个不存在的目录,因此产生了mkdir -p basename位。

撤消这些移动后,我们可以获得修改和添加(但不是删除)的修补程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git diff --patch --diff-filter=AM -M25 SHA1 > modifications.patch

然后,我们可以在合并点创建另一个牺牲分支,以允许我们应用这些更改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git checkout -b temp SHA1
git apply modifications.patch # and resolve any issues
git merge master # To resolve conflicts with the current state of master

现在,我们只需将临时分支合并回master。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git checkout master
git merge temp

它将合并修改,但不合并提交历史记录。如果还希望将提交历史合并到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git merge -s ours deletions2

其中,-s ours告诉git合并以合并提交历史,但保持当前文件的状态。

最后注意:如果不使用git diffgit apply来制作补丁,而是使用git format-diffgit am__,可能会更好。但是,我无法使它与--diff-filter选项很好地工作。适当的补丁是制作的,但它们不适用于干净。更熟悉这两种情况的人可能会获得更好的成功。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38509584

复制
相关文章
PHP 如何从关联数组中移除并返回指定的键值对
该功能已经整合到 WPJAM Basic 插件中,并已免费提供下载,简单勾选或者设置下即可开启!
Denis
2023/04/14
5.1K0
如何从列表中获取元素
观察URAM的物理管脚,不难发现A/B端口都有相应的地址、使能、读写控制信号。与BRAM不同的是URAM的读写使能信号是同一个管脚RDB_WR_A/B,其为0时执行读操作,为1时执行写操作,这意味着一旦A/B端口独立,同一端口的读写操作就无法同时发生,因此,如果采用上一篇文章中介绍的方法将其配置为两个独立的单端口RAM,其读写行为与常规的单端口RAM是不同的,进一步而言,此时的读写行为类似于NO_Change模式。
Lauren的FPGA
2019/10/30
17.4K0
在 React 16 中从 setState 返回 null 的妙用[每日前端夜话0x7D]
在 React 16 中为了防止不必要的 DOM 更新,允许你决定是否让 .setState 更来新状态。在调用 .setState 时返回 null 将不再触发更新。
疯狂的技术宅
2019/06/11
14.6K0
如何通过函数返回数组首地址
int * scanffile(FILE *fp,int n){ int i; static
全栈程序员站长
2022/07/20
1.7K0
如何通过函数返回数组首地址
在WebFlux下从ServerWebExchange中获取参数
获取参数方式和web包类似,直接在controller方法参数的位置填上serverHttpRequst,框架即可自动将请求注入,但是这里serverHttpRequst获取的请求仅限于普通请求的body中的内容,以及methed方法这些。但是,前端如果是通过form-data方式传参过来, serverHttpRequst 得到的是body是null。因此必须拿到更上一级的请求内容ServerWebExchange。通过ServerWebExchange获取form-data的参数再加以验证。
Diuut
2022/11/22
12.2K0
如何在Bash中获取数组长度?
在Bash脚本中,数组是一种常用的数据结构,用于存储多个值。在处理数组时,经常需要知道数组的长度,即数组中元素的个数。本文将详细介绍如何在Bash中获取数组长度的方法,以帮助您更好地处理数组操作。
网络技术联盟站
2023/06/17
1.3K0
如何在Bash中获取数组长度?
Python中如何构造返回函数以及怎么使用返回函数
Python返回函数即当一个函数的返回结果是另一个函数的时候,这样的函数就是返回函数。
python自学网
2021/12/05
2.8K0
Python中如何构造返回函数以及怎么使用返回函数
在shell程序里如何从文件中获取第n行
有没有一种“规范”的方式来做到这一点?我一直在使用 head -n | tail -1,它可以做到这一点,但我一直想知道是否有一个Bash工具,专门从文件中提取一行(或一段行)。
程序熵
2023/09/25
4710
在shell程序里如何从文件中获取第n行
java中怎么输入数组_java中如何从键盘输入数组
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
全栈程序员站长
2022/09/13
4K0
在vue中如何监听移动端的返回键
环境:vue.js+vant 问题:首页列表和分类页的列表用的同一个页面,页面区分用的是本地缓存,希望在分类页点击返回的时候,执行清除缓存,刷新页面 解决原理:利用history和浏览器刷新popstate状态去实现 每一次返回都会去历史记录回退 -1 所以就在进入页面之前 往历史记录里面多记录一次当前页面的链接。然后再回退的时候监听刷新,去做一些事情。 具体执行: 1、挂载完成后,判断浏览器是否支持popstate
IT工作者
2022/03/14
3.6K0
在Oracle中,如何获取ASH报告?
(2)使用OEM,可以在性能页,单击“运行ASH报告”按钮生成ASH报告,由于OEM生产用的相对比较少,这里就不讨论了。
AiDBA宝典
2023/08/10
1.3K0
在Oracle中,如何获取ASH报告?
MongoDB中如何返回数组对象中第一个对象
在使用MongoDB数据库时,为了减少关联操作,我们通常采用嵌套模型,数组对象是比较常见,例如商品的评论、关注好友等,通常返回前面N条或者第一条之类来减少网络流量(所有历史消息意义可能不大).另外就是单个有16M的限制,此时可能采用连接方式,将部分信息存储在另外一个集合中。最近刚好遇到一个find需求,针对结果集的数组只返回第一条元素。我们知道MongoDB针对数组操作符非常丰富。接下来主要介绍,elemMatch,
徐靖
2022/09/22
12.7K0
在Perl中扩展C库(1):XS语言(更新中)
XS是Perl与C的胶水语言,通过它能在Perl中创建方法,以此扩展C库中的函数或新定义的C函数,详情可参阅《官方手册:perlxs》。
Homqyy
2023/03/06
3.7K0
Spring 如何从 IoC 容器中获取对象?
前面几篇文章主要分析了 Spring IoC 容器如何初始化,以及解析和注册我们定义的 bean 信息。
WriteOnRead
2021/03/12
9.7K0
Spring 如何从 IoC 容器中获取对象?
shell中的函数+数组+数组分片
一、函数: 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。 直接来讲函数脚本吧: #! /bin/bash function inp(){ //定义一个inp的函数 echo $1 $2 $3 $0 $# } inp 1 a 2 b //传入参数 例如咱们有个脚本进行互动: sh test.sh 2 b 3 c $1 : 第一个参数 就是如上的“2” $2 :
老七Linux
2018/05/09
3.3K0
在 Python 中如何使用 format 函数?
在Python中,format()函数是一种强大且灵活的字符串格式化工具。它可以让我们根据需要动态地生成字符串,插入变量值和其他元素。本文将介绍format()函数的基本用法,并提供一些示例代码帮助你更好地理解和使用这个函数。
海拥
2023/07/05
1.1K0
shell中的函数和数组
在shell中函数的关键字function是可以省略的,而且和其他大部分的编程语言一样,函数要声明在调用函数的语句之前,因为代码都是从上至下执行的。以下写一个简单的函数打印脚本的参数,代码示例:0 表示脚本的名称,# 表示此函数参数的个数,要注意的是在函数里的1、2、3获得的是函数的参数,而不是脚本的参数,在函数体外使用1、2、3获得的才是脚本的参数。
端碗吹水
2020/09/23
2.4K0
shell中的函数和数组
Math.max()方法获取数组中的最大值返回NaN问题分析
今天群里边有人问到 Math.max() 方法返回 NaN 的问题,我简单举个例子,看下图:
德顺
2021/12/08
4.5K0
Math.max()方法获取数组中的最大值返回NaN问题分析
python中函数的返回值详解
在本小节刚开始的时候,说过的“买烟”的例子中,最后儿子给你烟时,你一定是从儿子手中接过来 对么,程序也是如此,如果一个函数返回了一个数据,那么想要用这个数据,那么就需要保存
Python学习者
2023/03/27
3.3K0
点击加载更多

相似问题

在Perl中如何从mongoDB中获取返回的数据?

10

从perl中的函数中获取返回布尔值

23

在perl中获取param函数数组

34

如何使用pop - Perl从数组的数组中返回数组

31

在Perl中返回数组

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文