Git将master合并到orphan而没有提交历史记录

时间:2017-10-09 16:42:17

标签: git

给定一个没有历史记录的orphan分支,从创建孤儿的那一刻起,我将如何合并在master分支上完成的更改,而不会在远程推送孤立时复制所有提交历史记录。

A <- B <- C <- D  

        orphan(created from state B) <-X <- Y

我想将cd带到孤儿分支,然后xy来掌握。

如果我做checkout orphan, merge masterrebase master orphan获取提交,还有所有历史记录树。例如,当我将孤儿推送到远程服务器时,每个人都可以看到所有master's历史记录。

稍后我想将orphan合并回master,将提交xy带到那里。

编辑:

现在将孤儿合并到主人的工作正常git merge

A <- B <- C <- D <------X <- Y
                       /  
        orphan <-X <- Y 

但是,master合并回orphan或者将整个主历史记录放入孤儿(例如X成为B前面的function(input, output, session) { # Read in labels labels <- eventReactive (input$inFile2, { ldata = read.csv(input$inFile2$datapath, header=input$header2) return(ldata[, 1]) }) # Go to next tab only if labels are uploaded observeEvent(input$act_next, { if(nlevels(labels())> 0) { updateTabsetPanel(session, "allResults", 'selVars') } else { #if(is.null(input$inFile2$size)) { showModal(modalDialog(strong(h5("Please upload labels.")), easyClose = TRUE, footer = NULL)) #} } }) } )或樱桃采摘,但我需要跳过合并提交,并得到更多的冲突

3 个答案:

答案 0 :(得分:2)

移植物正是为此而建造的。

root=$(git rev-list my-orphan-branch --max-parents=0)  # get the orphaned-branch root
echo $(git rev-parse $root B) >.git/info/grafts        # locally remember its real parent

现在所有的本地命令都会知道祖先,但它仍将是repo-local,push和fetch不会导出它。

答案 1 :(得分:0)

根据评论和您的意图,我将建议一个替代的工作流程/设计,以避免需要做超普通的Git事情。

听起来有些特殊的配置文件或设置包含您不想传递回遥控器的密码或类似的敏感信息,这些信息会被存储到repo中的编译文件中。为什么不将这些与代码中的烘焙分开?如果这些文件已经分开,那么您只需.gitignore个。无论如何,最好同时使用编译的标准默认值或使用repo(和/或应用程序本身)分发的默认配置文件,然后让代码检查是否存在自定义配置文件,保存在回购站之外或使用.gitignore忽略。

在不了解您的设置(linux / PC / Mac,编程语言,框架等)的情况下,很难给出进一步的指导 - 例如,使用Visual Studio开发C#,有一个Properties.Settings文件可以设置。默认值成为已编译代码的一部分,但是类会自动生成,这将保存对用户特定文件的任何更改,并在应用程序启动时重新加载它,但这是在用户主目录中,而不是在开发文件夹。另一种方法是在本地使用该文件,并使用.gitignore让Git不在repos之间传输它。

我认为这种方法对您来说会更长远,但是为了更好的配置管理而更新设计可能会产生短期成本。我担心的是,如果你每次需要推送更改时都需要一些非标准的Git魔法,那么就会导致某人忘记采取额外步骤并将敏感信息推送到遥控器的时间。

答案 2 :(得分:0)

试试这个:

/css