我们工作的团队热情地采用了rebase工作stream程,但是我们可能会有一点点的失望,这就是这个问题的关键:你是法官。 现在使用pull –rebase对我来说是不容易的。 但是,我们也有大量的function分支,多人工作。 定期地,我们要引入主人正在发生的变化。 传统的智慧会让我们合并,因为它是一个共享的分支。 但是,在我们反思的过程中,我们决定重新devise这些分支机构。 当然这需要大家的合作。 工作stream程如下所示: 1)翻新人员与每个人协调,以确保他们都被检入并推送到function部门,然后要求他们在该部门不再做任何工作,直到他们全部清楚。 2)rebaser将特性分支重定位到master,删除远程特性分支(git push origin:feature),然后推送新的重新发布的特性分支(git push origin feature) 3)rebaser每个人都可以获取更新他们的特性分支,然后删除他们的本地特性分支(git branch -D feature),然后创build一个新的局部特性分支来跟踪远程特性分支。 大家然后得到全部清楚。 这个工作stream程正在工作,部分原因是我们是一个小团队,工作中断很小。 但是,我担心我们正在学习可怜的Git习惯(重新分配一个共享的分支),或者工作stream程不能很好地扩展。 好的,我们的资料库历史很可爱。 你怎么看,Git大师? 我们是在玩火,还是在摇摆合理的工作stream程? 更新 : 我原来问这个问题已经两年了,从那以后我的工作stream程就改变了。 我们还是经常做git pull –rebase ,所以没有改变。 这是常识,它可以防止所有不美观,迷惑的迷你合并。 (我们主要保持同步,所以git pull –rebase成本git pull –rebase )。 不过,除此之外,偶尔英勇的纠正错误的行动,我们已经过了我们的蜕变疯狂。 合并大部分时间是合理的。 然而,肆意合并是有问题的,并且对两年前我所关心的混乱,混乱的历史做出了贡献。 我们的解决scheme有几个组件 主分支是“原始的”。 主题分支被合并, 一旦他们这样做,主题分支就退休了 。 换句话说,将主题分支合并表示该工作已经准备好进行生产,现在是主分支的一部分。 看看我们的版本历史,很清楚发生了什么事情:主题分支合并到主,这就是。 我们在必要时使用一次性整合分支。 例如,如果我们有主题分支A,B和C,并且他们都不准备集成到主控中,但是我们需要一起testing它们,我们只创build一个QA分支(通常是主分支),然后合并A,B和C英寸在某些时候,QA分支被删除或重新使用。 重点是它并不打算以任何方式永久存在,并且它没有与主分支相同的限制(您可以根据需要多次合并您的主题分支)。 如果历史过于混乱,您可以删除QA分支并重新开始(我们发现这种方法非常自然)。 合并时, […]
我会尽力解释我的问题。 我已经多次使用git bash使用了rebase选项。 现在我有SmartGit,不知道为什么rebase是不正确的。 步骤1: 第2步: 第3步: 结果是HEAD分离。
我对git还是比较git目前正在使用它来在团队环境中pipe理我们的代码。 我有一些rebasing的问题,我解决了他们使用 git checkout –ours filename.txt git add filename.txt git rebase –continue 现在我想推进我的更改,并运行以下命令 $ git push origin feature/my_feature_branch 给我以下错误: To ssh://git@coderepo.com:7999/repo/myproject.git ! [rejected] feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward) error: failed to push some refs to 'ssh://git@coderepo.com:7999/repo/myproject.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Merge the remote […]
我在Windows上使用SourceTree作为我的git工具。 我有一个主分支和一个function分支,当我发生冲突时,我无法让SourceTree执行rebase。 主要看起来像: c1→c2→c4→c5 function如下所示: c1→c2→c3 我想重新分配function,所以它会: c1→c2→c4→c5→c3 c3和c5之间有冲突。 我可以解决冲突,但是当我提交更改时,我得到一个HEAD标签,看着我的graphics,我可以看到该function分支没有重新devise。 我怎样才能得到rebase的工作?
我正在把我的主人转到舞台分支 git checkout stage git rebase master 有时我删除了两个文件,然后根据GIT修改了这两个文件。 warning: too many files, skipping inexact rename detection CONFLICT (delete/modify): test-recommendation-result.php deleted in HEAD and modified in [Bug] Fix test recommender. Version [Bug] Fix test recommender of test-recommendation-result.php left in tree. CONFLICT (delete/modify): test-recommendation.php deleted in HEAD and modified in [Bug] Fix test recommender. Version [Bug] Fix […]
假设我有我的“主”分支签出。 我已经对“主人”进行了一些生产更改,现在我想把我的“实验”分支重新分配给最新的主人。 但是,我想这样做,而不修改我的工作副本中的任何文件。 实质上,我希望所有的魔法都发生在.git目录中,而不需要触摸工作副本。 如果不是“不要修改我的工作副本”的要求,这只是一个问题: # current branch is master git checkout experimental git rebase master git checkout master 我真正的问题是,这会修改我的工作副本中的时间戳,即使通过检查我开始的完全相同的内容来结束。 只要我运行“git checkout experimental”,任何包含实验分支变化的文件都会将其mtime设置为当前时间 – 自从上次重新设置实验以来,在master中更改的任何文件也一样。 因为这些时间已经改变了,所以像构build工具这样的东西会得到他们需要再做的工作的想法,即使在我完成的时候,这些文件的内容并没有真正改变。 (就我而言,如果项目文件的时间戳发生变化,Visual Studio认为需要花费大量的时间来卸载和重新加载项目。)我想避免这种情况。 是否有办法一步完成上述所有操作,而不需要修改工作副本中的任何内容 (假设在重新分配期间没有冲突) ? (如果有冲突的话,我的偏好是显示错误,然后中止整个操作,而不修改任何时间戳,但这只是我的偏好,不是一个硬性要求 – 我不知道什么是可能的。 当然我可以写一个脚本来捕捉m次,运行git,然后重新设置m次; 但似乎Git可能已经有办法像rebase这样的事情而不打扰工作副本,因为rebase实际上是关于增量,而不是文件的实际内容。
我有一个地方分支在git的日常开发工作。 我的工作stream程是: 做local_branch上的东西,提交 取得原点/主 重新调整local_branch以赶上来自origin / master的新东西 这一切都很好,但是我遇到的大部分build议都是说,不应该“推”那些定期进行基础设置的私人分支机构。 这里的问题是,在这种情况下,本地分支不备份到服务器,保存工作的唯一方法是将其合并回“可推出”分支(即起源/主) 在这种情况下,你对工作stream程有什么build议? 谢谢! 更新 :我意识到,我的原始要求之一(避免使用外部实用程序)是不必要的限制。 我目前的解决scheme是将我的所有存储库存储在云同步的文件夹中 – 这样我就可以免费获得备份。
我面临一个我不确定如何解决的问题。 我从我的分支做了一个反对主人的事: git rebase master 并得到以下错误 First, rewinding head to replay your work on top of it… Applying: checkstyled. Using index info to reconstruct a base tree… Falling back to patching base and 3-way merge… Auto-merging AssetsLoader.java CONFLICT (content): Merge conflict in AssetsLoader.java Failed to merge in the changes. Patch failed at 0001 checkstyled. 所以我去了我最喜欢的编辑器,修复了1行冲突,保存了文件,并做了一个git状态,并得到了以下输出: […]
我想将一个变更集从一个分支移到另一个分支。 基本上我现在有: A -> B -> C -> D # default branch 而且我要: A # default branch \-> B -> C -> D # some_new_branch 那里some_new_branch还不存在。 我已经习惯了,所以我猜想我有一个简单的“mercurial”方法。
我有以下情况: 我从一个主存储库(X)创build了一个clone (Y),因为有很多人在Y上工作,我们没有做任何rebase但是只merge s。 当我们想把( push )Y给X时,我们想要做一个rebase ,以便让事情变得漂亮和干净 问题是,在进行rebase我们被要求做前面merge步骤中所做的所有merge 。 有没有解决这个问题,除了那个意味着实际上重新合并? 我认为这是相当直接的,因为我们已经解决了冲突的合并。