1
67
我没有太多的表演,所以这可能不是一对一的翻译。然后,像Git和Mercurial这样的分布式源代码管理系统有一个不同的工作流,所以实际上没有(也不应该有)1:1的转换。不管怎样,这里是:
查看我对前一个问题的回答,以查看我典型的Git工作流: Learning Git. Need to know if I am on the right track 如果您遵循我概述的工作流程,那么您会发现像gitk这样的工具更有价值,因为它允许您清楚地看到更改组。 附加答案:Git非常灵活,有几种方法可以实现您所描述的功能。要记住的是,对于您正在处理的每个特性,总是要启动一个新的分支。这意味着主分支不会被触碰,所以您可以一直返回它来修复错误。在Git One中工作几乎总是从以下开始:
现在您可以编辑文件a.txt。要同时处理另一个功能,请执行以下操作:
现在可以编辑文件z.txt。要切换回A.txt:
但是等等,对new-feature-z进行了更改,Git不允许您切换分支。此时,您有两个选择。第一个是最简单的,将所有更改提交到当前分支:
这是我的建议。但是,如果您真的还没有准备好提交代码,您可以临时存储它:
现在,您可以切换到branch new-feature-a。要返回您正在处理的代码,只需弹出stash:
全部完成后,将所有更改合并回主控形状:
因为合并是如此快速和容易(容易,因为冲突是如此罕见和冲突解决,当一个发生时,不太难),我们使用Git中的分支进行所有操作。 下面是在Git中常见使用分支的另一个例子,您在其他源代码管理工具中看不到它(除了Mercurial): 需要不断更改配置文件以反映开发环境吗?然后使用分支:
现在,在您最喜欢的编辑器中编辑配置文件,然后提交更改:
现在,每个新分支都可以从dev config分支而不是master启动:
完成后,使用Interactive Rebase从新功能分支中删除dev config中的编辑:
删除不需要的提交,然后保存。现在您有了一个没有自定义配置编辑的干净分支。合并回主控形状的时间:
应该注意的是,删除编辑时
*注:事实上,技术上并不完全正确,但作为一个用户,这就是它的感觉 更多附加答案:因此,从您的注释来看,您似乎希望同时存在两个分支,以便可以测试组合代码的工作方式。好吧,这是一个很好的方法来说明分支的力量和灵活性。 首先,您的工作流中廉价的分支和可修改的历史的含义。当我使用cvs和svn时,我总是有点不愿意承诺。这是因为提交不稳定的代码将不可避免地影响到其他人的工作代码。但我失去了对吉特的恐惧。这是因为在Git中,在我将更改合并到master之前,其他人不会得到我的更改。所以现在我发现自己每写5行就提交一次代码。你不需要完美的远见来承诺。你只需要改变你的心态:提交到分支==add到变更集,合并到master==commit变更集。
所以,回到例子。我会这样做的。假设你有一个分支
现在你可以测试了。如果您需要修改一些东西使Feature-Z与Feature-A一起工作,那么就这样做。如果是这样,您可以将更改合并回相关分支。使用
或者,也可以使用git-rebase临时更改new-feature-z的基础以指向new-feature-a:
现在,分支历史记录被修改,这样new-feature-z将基于new-feature-a而不是master。现在你可以测试了。此分支中提交的任何更改都将属于分支new-feature-z。如果需要修改new-feature-a,只需切换回该分支并重新设置基片即可获得新更改:
完成后,只需重新定位到主控形状,即可从新功能A中删除更改:
不要害怕建立新的分支机构。不要害怕开一家废弃的分店。不要害怕扔掉树枝。由于merge==submit和commit==add to changeset,所以不要害怕经常提交。记住,提交是开发人员的最终撤消工具。 哦,还有一件事,在Git中,删除的分支仍然存在于您的存储库中。所以,如果你不小心删除了一些你后来才意识到有用的东西,你可以通过搜索历史来找回它。所以不要害怕扔掉树枝。 |
2
1
我没有足够的P4经验来制作一个实际的备忘单,但至少有一些相似之处可以追溯。P4“变更集”是git“提交”。
对本地工作空间的更改将添加到“索引”中
你看变化
关于更深入的信息,我建议 http://progit.org/book/ . 因为您一般都知道版本控制,所以您可能会跳过很多版本控制并提取特定于git的信息… |
3
1
我和你一样,也因为缺乏“变更列表”的概念,这与Git分支完全不同。 我将编写一个小脚本,用该变更列表中的文件列表创建一个变更列表文件。 另一个只需简单地调用git commit-a@change_list_contents.txt然后调用“git commit”就可以提交某个变更列表的命令 希望能有所帮助, 埃利亚斯 |
4
1
在Git中有一个更轻的替代方案,它可以构成您工作流程的一部分;使用Git临时区域。 我通常只做一些更改,然后提交为几个提交(例如,添加调试语句、重构,实际上修复了一个bug)。与其设置性能更改列表,然后进行更改,然后提交,不如先进行更改,然后选择如何提交(可以选择使用git临时区域)。 您可以使用以下命令行提交特定文件:
或者先显式暂存文件:
GitGUI允许您从文件中选择行或块,以在临时区域中构建提交。如果在一个文件中有要在不同提交中进行的更改,那么这非常有用。从吉特搬到了Perfoce,这是我真正怀念的一件事。 在这个工作流程中有一个小的警告需要牢记。如果您对一个文件进行了更改A和B,测试该文件,然后提交A,那么您还没有测试该提交(独立于B)。 |
5
0
这并没有具体回答您的问题,但我不知道您是否知道2个用户、5个工作区版本的Performance可以从 perforce website . 如果你愿意的话,你可以在家里用这种方式进行你的个人项目。其中一个烦恼是5个工作区可能有点限制,但它的性能相当令人难以置信,可用于家庭使用。 |
6
0
在相当广泛地使用了Perforce和Git之后,只有一种方法可以让我看到靠近使用Git的Perforce变更列表的任何地方。 首先要理解的是,要在Git中正确地实现这一功能,使其成为一个不完整的错误,例如尝试将其推送到分支中,需要进行以下更改:Git将需要为单个分支提供多个临时区域。 Perfoce变更列表允许在Git中没有等价的工作流。考虑以下工作流:
如果您尝试使用git中的分支进行此操作,您将得到两个分支,其中一个具有对文件的更改
我能看到的最接近的近似值是
Git(和Subversion,这不是讨论的重点)允许在不提前通知任何人的情况下更改文件。您只需更改一个文件,然后在提交更改时让Git将其全部排序。Perfonce要求您在允许更改之前主动签出一个文件,因此更改列表必须存在。从本质上讲,性能要求您在更改索引之前将文件添加到索引中。因此,在性能上需要多个变更列表,这也是为什么Git没有等价物的原因。 它根本不需要它们。 |
fam · 如何解压缩Performce Depot文件 6 年前 |
Abhishek Bajaj · p4python运行描述未返回列表 6 年前 |
Cloud · 获取“主线”和分支之间的所有变更列表(不包括用户) 7 年前 |
BelgishChoko · P4V保存当前状态 7 年前 |
ivan_pozdeev RenanSS · 指定片段的插入顺序 7 年前 |