Questions tagged «dvcs»

DVCS代表分布式版本控制系统。

2
在Mercurial中使用嫁接的后果
最近在维护Mercurial中的发行分支时,有一些关于跳过更改的问题。例如: Mercurial:虚拟合并后,分支特定的更改会继续出现 为什么一个分支机构中的Mercurial退出影响其他分支机构? 自从2.0版引入以来,我一直想知道如何使用它graft来避免此问题。给定这样的修订树: A---B---C---D---E---F---G---H---I---J 假设我们需要创建一个跳过Evil更改的发行分支E。 hg update -r D hg graft "F::J" 给我们: A---B---C---D---E---F---G---H---I---J \ --F'--G'--H'--I'--J' 问题1:这里发生了什么?我可以理解,这transplant会从中生成补丁F::J,然后将其应用到D,但graft据说使用的是3向合并,而不是补丁。所以.......这是怎么工作的?为什么会更好? 可以说我现在修复了E,并将其合并到我的发布分支中。 --E2----------------- / \ A---B---C---D---E---F---G---H---I---J---M1 \ \ --F'--G'--H'--I'--J'---------M2-- M1是直接合并;那里没什么特别的。M2是合并分支,这些分支具有“相同”(或至少等效)的更改。 Q2:这是合并只是使用普通的3路合并D,J'以及M1? 问题3:Mercurial是否存储/使用了有关嫁接操作的额外信息以帮助合并? 最后... 问题4:这样的流程有哪些潜在问题?

7
删除所有本地变更集并还原为树
我正在使用Mercurial,在本地遇到了三个头的可怕混乱。我无法推送,我只想删除所有本地更改和提交,然后从完全干净的代码和干净的历史记录重新开始。 换句话说,我想得出的结果是(a)与远程分支的尖端完全相同的本地代码,以及(b)没有任何本地提交的历史记录。 我知道会hg update -C覆盖所有本地更改。但是,如何删除任何本地提交? 需要明确的是,我对保留在本地所做的任何工作都没有兴趣。我只想以最简单的方法还原到完全干净的本地结帐。

2
Git从另一个存储库中拉出
我有一个名为的存储库Generic,这是一个通用应用程序。我将其分叉到一个名为Acme的存储Generic库中,该存储库仅建立在应用程序存储的存储库的基础上,并向其添加了Acme Co品牌。 如果我对中的核心功能进行了更改,则Generic想Acme使用对中的核心功能进行的最新更改来更新存储库Generic。我该怎么做? 据我所知,我实际上是在尝试将上游存储库中所做的更改合并到当前fork中。 如果有任何意义,我正在尝试执行此操作,因为我有一个通用应用程序,可以Acme在此基础上构建该应用程序并为单个客户创建品牌(如本例所示)。如果有更清洁的方法,请告诉我。

4
为什么git log可能不显示移动文件的历史记录,我该怎么办?
我使用git mv,used 和重命名了几个文件,git stash快速浏览了HEAD(不进行更改),然后又git stash pop重新取回了很多文件。我的举动已从提交列表中消失,因此我用它们进行git rm了重新命名,并且提交消息声称git发现该重命名为重命名。所以我不再想了。 但是现在,提交后,我无法了解已移动文件的历史记录!这是git关于相关提交的内容: ~/projects% git log --summary commit de6e9fa2179ae17ec35a5c368d246f19da27f93a Author: brone Date: Wed Dec 8 22:37:54 2010 +0000 Moved R_DebugUI into runtime delete mode 100644 test/R_DebugUI_iOS.h delete mode 100644 test/R_DebugUI_iOS.m create mode 100644 system/runtime/src/R_DebugUI_iOS.h create mode 100644 system/runtime/src/R_DebugUI_iOS.m <<snip older commits>> ~/projects% 我现在正在尝试获取这些移动文件之一的历史记录,因此我可以查看一个旧版本,但是却没有任何有用的东西: ~/projects/system/runtime/src% git …
90 git  history  dvcs  rename  git-log 

2
如何中止合并?
我搞砸了合并。我想还原然后重试。 有没有办法在提交合并之前还原它? hg revert不执行我想要的操作,它仅还原文件的文本。Mercurial中止了我的第二次合并尝试,并抱怨仍未提交原始合并。 有没有办法在hg merge命令之后但在提交之前撤消合并?

13
Windows下的Git:MSYS还是Cygwin?
我计划将我的项目迁移到git,而我目前想知道哪个是Windows下最好和/或最稳定的选项。 从我收集到的信息来看,我基本上有2.5个选择: MSYSgit git下 Cygwin (aka 2.5)来自Cygwin提示符的MSYSgit(假设已经安装了Cygwin git)。 注意:IMO Cygwin本身就是一个很大的优点,因为您可以访问几乎所有的* nix命令行工具,就像使用MSYSgit bash一样,您只能访问这些工具的一小部分。 鉴于此,您会建议什么选择?
80 git  cygwin  msysgit  dvcs 

15
集中式和分布式版本控制系统之间的比较[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 哪些优点和缺点使用集中式与分布式版本控制系统(DVCS)?您是否在DVCS中遇到任何问题,并且如何防范这些问题?使讨论工具不可知且不可燃。 对于那些想知道可用的DVCS工具的人,这里列出了最著名的免费/开源DVCS: Git(用C编写),由Linux内核和Ruby on Rails使用。 Mercurial,(用Python编写),由Mozilla和OpenJDK使用。 Bazaar(用Python编写),由Ubuntu开发人员使用。 Darcs,(用Haskell编写)。

3
git从当前签出的master创建分支?
服务器上有一个由git控制的文件夹,在其中检出了主分支,并且一堆文件已被修改但尚未提交。有没有办法将更改提交到单独的分支,以便可以返回到干净版本? 即,我想有效地撤消所有这些人员更改,但将它们存储在另一个机会中,因此,如果该人员想要他们的更改,则可以切换到该分支。 (是的,我知道这不是git的工作方式,但这是我的情况!)任何想法都非常感谢。

5
在Mercurial上回退合并
您如何扭转合并对极化分支的影响而又不至于痛苦呢? 这个问题困扰了我几个月,我终于放弃了。 您有1个存储库,其中有2个 命名分支。A和B。 A上发生的更改将不可避免地发生在B上。 直接在B上发生的更改绝不能在A上发生。 在这种配置中,将“ B”合并为“ A”会在存储库中产生可怕的问题,因为对B的所有更改都像在A中所做的一样出现在A中。 从这种情况中恢复的唯一“正常”方法似乎是“回退”合并,即: hg up -r A hg backout -r BadMergeRev --parent BadMergerevBeforeOnA 看起来一切正常,直到您决定以后以正确的方向合并,并且最终会发生各种令人讨厌的事情,并且在特定分支B上被擦除/注释掉的代码突然变得未擦除或未注释。 到目前为止,除了“让它做事,然后手动解决所有问题”之外,还没有可行的可行解决方案,而且说实话有点麻烦。 这是说明问题的图像: [原始图像丢失] 文件C和E(或更改C&E)必须仅出现在分支b上,而不出现在分支a上。此处的修订版A9(分支a,修订版9)是问题的开始。 修订版A10和A11是“回退合并”和“合并回退”阶段。 修订版B12是无用的,错误地反复删除了原本不打算删除的更改。 这种困境造成了很多挫败感和蓝烟,我想结束这一困境。 注意 尝试通过钩子或策略来禁止反向合并可能是显而易见的答案,我发现将这种情况搞糟的能力相当高,而且发生这种可能性的可能性很大,以至于即使采取对策,您仍然必须假设不可避免地会发生这种情况,以便您可以在解决时解决它。 详细说明 在模型中,我使用了单独的文件。这些使问题听起来很简单。这些仅代表可以是单独一行的任意更改。 同样,为了增加伤害,在分支A上进行了实质性更改,留下了常设问题:“使分支A的更改与分支B的更改发生冲突,分支B的更改看起来像是在变回(并退出),看起来像是在更改”在分支A上,“ 关于历史重写技巧: 所有这些追溯解决方案的问题如下: 我们有9000次提交。 新鲜克隆因此需要半小时 如果某个地方甚至存在一个错误的存储库克隆,它的一种似然又会回到与原始存储库的联系,然后重新将其重新敲打。 每个人都已经克隆了该存储库,现在已经进行了几天提交了。 这样的一个克隆恰好是一个在线站点,因此“擦除该克隆并从头开始” =“ big nono” (我承认,以上许多内容有些愚蠢,但它们超出了我的控制范围)。 唯一可行的解​​决方案是那些假设人们可以并且将做错所有事情的解决方案,并且有一种方法可以“消除”这种错误。
77 mercurial  merge  dvcs  branch 

17
使用git版本控制系统锁定二进制文件
一年半以来,我一直在关注git社区,希望从SVN转向。使我退缩的一个特殊问题是无法锁定二进制文件。在过去的一年中,我尚未看到有关此问题的进展。我知道锁定文件违反了分布式源代码管理的基本原理,但是当二进制文件存在潜在冲突时,我看不到Web开发公司如何利用git来跟踪源代码和图像文件更改。 为了实现锁定的效果,必须标识“中央”存储库。无论git的分布式性质如何,大多数公司都将为软件项目提供“中央”存储库。我们应该能够将文件标记为需要来自指定地址的git仓库的锁定。也许由于git跟踪文件内容而不是文件而使这变得困难吗? 你们中的任何人都具有处理git和二进制文件的经验,这些文件应在修改前锁定? 注意:看起来Source Gear的新开源分布式版本控制项目Veracity已将锁定作为其目标之一。

30
版本控制入门
我需要实现版本控制,即使是在家中进行开发也是如此。我已经阅读了有关Subversion在过去几年中的出色表现,并打算全力以赴地学习这一知识,直到我听说Git是即将推出的版本控制系统。 在这种情况下,我应该推迟一下,看看哪一个排名第一吗?它们的相对优势是什么? 我注意到Git的一个问题是功能齐全的GUI并不多,这对我团队中的许多用户而言都很重要。 同样,不介意关于如何开始使用另一种的建议。(教程等)

4
如何在Mercurial上git reset --hard HEAD?
我是一个尝试使用Mercurial的Git用户。 这是发生的事情:我hg backout对要还原的变更集进行了操作。那创造了一个新的头,所以hg指示我进行合并(我想回到“默认”)。合并后,它告诉我我仍然必须提交。然后,我注意到解决合并中的冲突时我做错了某些事情,并决定我希望像以前一样拥有所有东西hg backout,也就是说,我希望这种未提交的合并消失。在Git上,这些未提交的内容将包含在索引中,而我只是想git reset --hard HEAD删除它,但据我所读,该索引在Mercurial上不存在。那我该如何退出呢?
76 git  mercurial  merge  dvcs 

7
用于Linux的漂亮且功能丰富的git GUI [关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 3年前关闭。 改善这个问题 我被检查出了rich GUI对Git上Linux。最近,我开始大量使用它,并且发现尽管命令行非常有用,但我仍然希望使用GUI,因为我对高级功能还不是很了解。 我以前在SO上遇到过这个问题,但是我仍然不得不再次问这个问题,因为那个问题没有我的答案 我已经使用git-cola和gitk,但是它们看起来有点生硬,而gitk看起来就像我在其他DE上工作。我在gitGUI中需要的所有功能都不在其中之一。 我试过了giggle,但是对看差异比较有用 我试过了QGit,但是还没有完全完成。 现在让我告诉我我想要一个foo-Git-GUI的样子: 您可以看一下Bzr Explorer,它具有很高的可用性,并且具有许多上述GUI所没有的功能 任何人都知道任何Git GUI,就像我上面发布的上述示例一样?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.