文档章节

Git使用的一个注意事项--删除文件后的rebase/merge导致文件丢失

zgw06629
 zgw06629
发布于 2015/04/29 19:11
字数 227
阅读 1477
收藏 0

代码衍合过程中发现的一个问题:

只要在某个分支A中删除了某个文件(如file1)且另外一个分支B也包含此文件,则分支B rebase或merge 分支A时会丢失该文件。

如下所示:

$ mkdir temp
$ cd temp
$ touch file1
$ git init
$ git add .
$ git commit -m 'first commit in master'
$ ls
file1
$ git checkout -b bran-1
$ git checkout -b bran-2
$ git checkout bran-1
$ ls
file1
$ rm file1
$ touch file2
$ git add --all
$ git commit -m 'first commit in bran-1'
[bran-1 709dc71] first commit in bran-1
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename file1 => file2 (100%)
$ git checkout bran-2
$ touch file3
$ ls
file1  file3
$ git add .
$ git commit -m 'first commit in bran-2'
$ git rebase bran-1
#file1丢失了
$ ls
file2  file3

鉴于以上的结论,建议在开发过程中应该避免删除操作。除非确定所有分支都不会再用到。

© 著作权归作者所有

共有 人打赏支持
zgw06629
粉丝 16
博文 54
码字总数 30471
作品 0
海淀
程序员
Git Rebase 操作的分析与整理

文前说明 作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。 本文仅供学习交流使用,侵权必删。 不用...

羽杰
2017/04/23
0
0
git使用命令, 特别:git checkout -b a 与 git branch a区别

创建分支: $ git branch mybranch 切换分支: $ git checkout mybranch 创建并切换分支: $ git checkout -b mybranch 更新master主线上的东西到该分支上:$git rebase master 切换到maste...

keke321
2012/08/24
0
0
git stash与git rebase

git stash 先看命令行 git stash - -help的帮主页面 也就是储藏你在当前工作的一些代码,状态。比如我在工作中常用的。 每次从远程拉代码的时候,拉完代码之后需要在本地将本地的一些配置应用...

avery1
06/11
0
0
Eclipse上GIT插件EGIT使用手册

一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EGit 二_使用EGIT前的配置 配置个人信息,最重要的是user.name和user.email l Preference...

moz1q1
2014/08/14
0
0
Eclipse上GIT插件EGIT使用手册

一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EGit 二_使用EGIT前的配置 配置个人信息,最重要的是user.name和user.email l Preferences ...

吃鱼的虾米
2014/01/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高三暑假我是怎么想开去学linux系统的

高三的时候,我有一句口头禅:“老了老了,现在做题越来越迟钝了”。当时整天日夜苦读,体重日益增加,脸色越来越黯淡,我在终于熬过了高考的时候,简直心里面乐得开了花。我终于可以去做自己...

linuxprobe16
24分钟前
0
0
Python 获得命令行参数的方法

需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2]

编程老陆
31分钟前
0
0
链队

队列用链表来表示时,需要用两个变量来记录队列两端的变化:theFront,theBack. 根据链接方向的不同,链队有两种链接方式(其实就是链表的头插入节点和尾插入节点,头删除节点和尾删除节点)。...

Frost729
34分钟前
0
0
IDEA toString() json模板

public java.lang.String toString() {java.lang.StringBuilder builder = new java.lang.StringBuilder();#set ($i = 0)#foreach ($member in $members)#if ($i == 0)builder.appen......

Mtok
44分钟前
0
0
Dubbo内核实现之SPI简单介绍

Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。那所谓的微内核+插件体系是如何实现的呢!即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLo...

明理萝
49分钟前
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部