- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用带有中央存储库的 mercurial。当我们中的两个或更多人致力于我们在本地提交的更改时。在某个时候,我们将这些更改推送回中央存储库。
当我拉动时,问题就来了。通常会有其他开发人员修改和推送的文件,这些文件会通过拉取进入我的存储库。然后我需要 merge ,这显示了我的本地存储库和提交的文件之间的区别。
困扰我的是我必须 merge 和提交。这被推回到中央服务器,它似乎已经提交了两次相同的更改,一次是我作为 merge ,一次是来自其他开发人员的变更集。
在 mercurial 中有没有什么方法可以更新我的存储库并更新我没有接触过的文件,而不是记录两次完全相同的更改,一次来自原始开发人员,一次来 self 的 merge ?
这个问题似乎提出了同样的观点,但没有提供我的问题的答案: Why is mercurial dumb when merging? How can I make pulling/merging changes simpler?
最佳答案
Mercurial 在变更集和修订方面工作。
变更集是进行修订时所做变更的快照。
如果你成功地只更新了被更改的文件,当你拉取时,你的工作文件夹中不会有一个实际的修订,你会有一个 SCSS 修订,只有你和你的机器知道如何那是。在不同时间拉动的其他人会得到不同的 SCSS 修订版,他们不会排队。
所以不,Mercurial 设计为完全按照您所说的那样工作,除了它没有真正显示发生两次的变化,如果它看起来这样做,一定是您做错了什么。
换句话说,如果我更改了某些内容并提交,然后我拉下您的更改,进行 merge ,然后提交, merge 提交将只包含我为解决 merge 而必须执行的任何更改。如果 merge 是自动的,没有需要解决的冲突,看起来您只是在提交一个空的变更集,有两个父变更集。
现在,有很多方法可以减轻所有分支,例如,您可以使用 rebase。
会发生以下情况:
central: 1---2---3---4
local: 1---2---3---4
你改变了什么
central: 1---2---3---4
local: 1---2---3---4---5
其他人改变了一些东西,然后推送:
central: 1---2---3---4---5'--6'
local: 1---2---3---4---5
(我在 5 之后使用 ' 来表明虽然它是该存储库中的修订号 5,但它与其他存储库中的修订号 5 不同。)
然后当你拉的时候,它看起来像这样:
central: 1---2---3---4---5'--6' <-- corresponds to these <--+
|
local: 1---2---3---4---5 |
\ |
6'---7' <-- note that these gets renumbered
然后你将 5 rebase 到 7' 之上,你得到这个:
local: 1---2---3---4---6'--7'--5
如果需要,如果您进行了冲突更改,则在 rebase 时会发生 merge 。 rebase 后,您可以推送。它基本上使您的修订历史看起来像是轮流工作。
关于使用中央存储库时,mercurial 协作会导致多次提交相同的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5793828/
任何人都知道如何将内容从一个 Magnolia CMS 存储库(Jackrabbit 存储库)传输/迁移到我们的应用程序使用的另一个自定义 jacrabbit 存储库? 最佳答案 正如另一张海报所建议
Git 是否支持任何允许我直接从本地/工作树提交到远程存储库的命令?正常的工作流程至少需要一个“git add”来用文件内容的副本等填充对象数据库。 我知道这不是正常的、预期的 Git 工作流程。但我
我们正在将 Git 存储库移动到新服务器。迁移后我们显然可以只删除旧的存储库,所以当人们尝试推送或 pull 时他们会得到一个错误并在 wiki 上查找新的存储库 URL,但是是否有可能阻止 pull
我们有两个 Subversion 存储库,每个存储库都有一个项目。所以: svn://server/svn/project_a svn://server/svn/project_b 它们是独立的项目,
使用 maven/tycho 构建 Nodeclipse Eclipse 插件每个版本都有新的 p2 存储库。 发布是在 Bintray 上完成的不允许更新文件。所以每个版本都在它的文件夹中。 Bas
这听起来有点复杂,让我解释一下: Project_A 在它自己的 Mercurial 存储库中已经存在了一段时间。 Project_A 现在被 merge 到一个新的 super 项目 Super-P
这听起来有点复杂,所以让我解释一下: Project_A 已在其自己的 Mercurial 存储库中存在了一段时间。 Project_A 现在正在 merge 到一个新的 super 项目 Super
我想将我的所有文件从 Git Repo A 移动到 Git Repo B 并具有完整的历史记录。 Git B 已经包含另一个项目文件。我尝试了几种方法,例如 How to move files fro
我从 github 中托管的公共(public) git 存储库创建了一个裸存储库 (MY_LOCAL_REP): ~$ git clone --bare github 存储库已更新(创建了一个分支
工作 SVN 库 我正在启动一个 git 存储库来与 svn 存储库进行交互。 svn 存储库已设置并且工作正常,其中包含一个基本 README 文件的单次提交。 检查它工作正常: tchalvak:
我正在使用 spring boot 1.5.2 和 spring boot data redis 1.8。 我有两个@Id 注解,一个用于JPA,另一个用于redis hash。这里我想使用 JPA
我是 maven 的新手。我仍然无法理解它的概念。 例如,我正在寻找 com.extjs:gxt:jar:2.2.5 或 org.syslog4j:syslog4j:jar:0.9.46。我在任何 r
我已经阅读了很多关于存储库模式和服务层的作用的书,我(我认为)很清楚这两者之间的区别。但是现在有一个简单的问题让我挠头了一段时间。 我知道数据访问层如何负责...访问数据,因此典型的存储库可能具有插入
我是 Git/Smartgit 的新手。现在我不得不在 WIN 10 下配置一台新 PC。请问我如何将设置和存储库从旧 PC 导出/导入到新 PC? 非常感谢,问候, 本德 最佳答案 SmartGit
所以我最近开始在我的工作项目中使用存储库模式。我一直遇到同样的问题,我似乎无法找到答案: 可以将另一个存储库注入(inject)现有存储库吗?这样做有什么负面影响? 例如 : class Crawls
我有一个应用程序容器推送到 gitlab 容器注册表。我正在尝试将其作为容器部署到 azure web 应用程序服务中。我根据azure的文档尽我所能地进行了配置。但我不明白我错过了什么,因为 azu
我使用java框架来开发crud应用程序。这个框架被称为:“Cuba.Platform”。 我的问题是,我无法在古巴打开该项目。当我尝试在那里打开我的项目时,我遇到了这个问题: “存储库包含 http
我在我的数据层中有几个对数据库执行 CRUD 操作的存储库类。我不确定这种设计,因为大多数表都需要每个存储库一个专用类,一段时间后我最终会为数据库中存在的每个表得到很多存储库。我这样做是因为,当然,我
我正在重构一些代码,并将一些执行数据库 CRUD 操作的方法提取到它们自己的存储库类中。 我有几个问题,鉴于以下两种类型的对象存储在数据库中:用户和角色 我应该创建 IUserRepository 和
尝试在这里创建一个非常简单的存储库和服务层模式。 (.NET 4、C#、LINQ,尽管这个问题部分与语言无关)。注意:这只是研发。 我的目标是尽量减少服务层中方法定义的数量。 这是我的存储合约: in
我是一名优秀的程序员,十分优秀!