正如标题所说,我并不清楚a git merge --squash和a 之间的区别git merge --no-commit.
据我所知的帮助页面git merge,这两个命令都会让我进入一个更新的工作树,在那里它仍然可以编辑然后进行最后的提交(或多次提交).
有人可以澄清这两个选项的差异吗?我什么时候使用一个而不是另一个?
我一直在打破这个问题已经有一段时间了,现在无法找到解决这个问题的方法:
我有一个Eclipse RCP应用程序,它使用打包为jar的自定义库.从插件中,我在jar中调用一个方法.在这个方法中,我正在"获取"资源使用this.class.getResource(relPath),而是relPath我需要的文件的硬编码相对路径.这将返回一个URL我可以用来构建一个File.
现在,如果我不是从插件中调用此方法,而是从简单的Java程序中调用此方法,则此方法非常有效.区别:Eclipse RCP的类加载器返回一个不受支持URL的协议,而在运行一个简单的Java程序时,返回-URL,完全可以构造一个.bundleresource://Filefile://File
我知道FileLocatorEclipse SDK 的类 - 它将bundleresource-URLs解析为文件URL,但是我不能在库中使用它,因为我不想将它绑定到Eclipse RCP平台 - 应该可以使用它这个来自非Eclipse-RCP源的lib也是如此.
任何人都知道我如何从一个相对路径加载这个资源的方式,从Eclipse RCP-Plugin或任何其他客户端调用方法时都可以工作?
我需要File在这个相对路径的目录上构建一个来搜索其中的文件.我完全陷入了这个......
更新:如果除了使用File#list()以获取目录内容之外,这可能对我有帮助..
任何提示非常感谢,
我正在尝试将一个相当复杂的XML模式解析为Java中的Schema对象,因此我可以对XML消息进行一些验证.
我的代码看起来类似于:
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(new File("schema/schema.xsd")));
Run Code Online (Sandbox Code Playgroud)
我的架构有很多导入:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="base_1">
<xs:import namespace="base_1" schemaLocation="common/MessageBase.xsd"/>
</xs:schema>Run Code Online (Sandbox Code Playgroud)
...等等.当我尝试加载架构时,我遇到了很多错误.基于与此相关的另一个问题,看起来我需要指定一个资源解析器,但这不是应该默认处理的东西吗?
如果是这样,是否有一个特定的目录,我需要将模式放在相对于我正在编写的应用程序或相对于基础模式文件的位置?
最后,当我使用XMLSpy或类似方法加载模式时,它工作正常,我可以毫无问题地验证XML实例.
该主题已经说过:
我现在正在考虑关注设计问题:我为包含各种方法的特定类型的对象定义了一个接口.现在我遇到了这个问题,这个接口的不同实现需要额外的/不同的方法参数(因为它们的实现方式使得这是必要的),我无法将其合并到接口中,因为它们并非所有接口实现都通用.
现在我意识到接口实现可能带有自己的属性文件,从那里加载其他参数,但是如果这些参数需要在运行时传递呢?
目前我只能想到传递一个Map<String, Object> parameters来克服这个问题 - 因为像DocumentBuilderFactory这样的JDK类通过提供这样的方法来做一些非常相似的事情setAttribute(String attName, Object attValue)似乎是解决这个问题的可行方法.不过,我会对别人如何解决这样的问题,另类想法感兴趣吗?
我不想从接口派生并添加其他方法,因为在我的情况下,我将不得不NotImplementException从基本接口的方法抛出.
更新:
地图方法最终可能出现什么问题?如果实现类无法使用其他参数,则可以完全忽略它.其他人可能会检查Map是否包含所需的参数名称,检查其值的类型并在有效时使用它们,否则抛出异常.我也看到这被用于抽象类JAXBContext,所以它似乎是一种常见的方法..
更新:
我决定采用地图方法,因为我没有看到任何明显的缺点,它也被用在JDK中(是的,我知道这并不一定意味着很多:)因为我不能接受这个问题的答案,我会赞成.感谢您的输入!
问候,
--qu
我使用 Gerrit 犯了一个致命的错误,想知道是否有人可以为此提供解决方案/想法:
目前的情况是我有一个分支feature-foo,我们的团队正在将更改推送到该分支以供审核。其中一些更改已经提交/合并,并且仍有大量更改供审核。现在,昨天我决定将补丁集推送到特定更改,其中包含大约 15 个之前的更改(尚未合并)。
我不小心推过了代码审查(是的,我确实有这些权限,是的,我很愚蠢,为了我自己的安全没有停用它们 - 吸取了教训)。这导致这 15 个更改/提交被直接推送到分支而不是代码审查。所以现在所有这些更改都MERGED在 Gerrit 中进行了标记。我的直接想法是push -f使用我知道最初是feature-foo.
这正确地将分支重置到它应该在的位置。但是 - 这 15 个更改仍然MERGED在 Gerrit 中标记。我想要的是:我需要将这些更改返回到“正在审核”状态,因为它们实际上仍在进行中。
任何想法,任何人?我无法想象这之前没有发生在某人身上......
问候,
--qu
编辑 1:澄清 - 错误推送的提交导致快进 - 而不是合并。尽管如此,对于 Gerrit 来说,这些更改/提交仍然是“已合并”,就好像有人在 Gerrit-Web 界面中按下了“提交更改”一样。所以 -这个问题实际上是关于 Gerrit,而不是 Git 本身。
关键词:意外推送,意外合并
在阅读了有关此主题的一些帖子之后,我意识到有一些反对使用关键字替换的缺点.不过,我需要一种方法来解决以下问题,并希望有人可能知道如何使用git解决这个问题(无论是否使用关键字替换):
我有一个主要的应用程序,我使用git作为VCS.这个主要应用程序的一部分(一组XML文件)正被实用程序使用,我也使用git(单独的repo).
现在,主应用程序和实用程序具有不同的发布周期,每当我发布新版本的实用程序时,我都会从主应用程序复制最新的XML文件集.在该实用程序中,这组XML文件是git中的非版本化内容,因此它甚至没有签入到repo中.
截至目前,每当我查看此实用程序的不同版本(由git管理并具有标记版本)时,我无法知道包含的XML文件集所指的"版本"(更好:提交哈希) .
所以我在想:如果我可以在这些XML文件中使用最新的提交SHA(作为注释),我总是知道我的实用程序的某个版本所引用的XML文件集.这种方法有什么问题,或者这是要走的路?如果是,我如何将最新的commit-SHA导入我的XML文件?(我读过$ Id:$不会接受commit-SHA,但有些"blob"-SHA?)