2013-04-20 56 views
0

我想做一个脚本,通过在GIT中签出回购协议来发布系统。GIT预览结账或合并

我的任务是我可以通过某种方式测试以检出分支,以确定是否出现错误而不依赖于文件系统。

同样,我可以在一个简单的方法预览GIT合并识别冲突,而无需修改文件系统?

(全系统的Linux系统上运行,如果这是为了帮助)

回答

0

如果你签一个分支,你永远不会得到一个错误。结帐只是恢复分支的以前的状态。

如果你想检查合并,情况会有所不同。

如果你有一个分支mybranch,你要合并otherbranch进去,在合并之前记得mybranch状态:

git log -1 --oneline 

这将返回最后的哈希提交。请注意散列(例如CAFEBABE)。

现在,尝试做合并:

git merge otherbranch 

如果一切正常。精细。如果你得到任何错误,都不愿意来解决这些问题:

git reset --hard CAFEBABE 

git merge尚未开始之前,这将重置mybranch的状态。

不用记住哈希CAFEBABE的,你也可以利用ORIG_HEAD如下所述:HEAD and ORIG_HEAD in Git

+0

是的,您可以在结帐时收到错误,因为您有本地更改,但没有被提交或不在gitinrgnor文件中。 – 2013-04-20 13:16:58

+0

你不想合并未提交的状态 – eckes 2013-04-20 14:32:24

1

使用git merge --ff-only - 它会合并,只有当它能够快速转发的分支。这意味着冲突是不可能的,并且始终有效(当然系统故障除外,例如磁盘空间不足)。显然,这意味着分支机构不应该分化,但是在大多数情况下,如果不是,你应该在另一个回购机制中合并潜在的冲突,保持“释放回购”不变。

另一种方法是使用符号链接(linux或ntfs)。您应该有两个存储库repo1repo2以及符号链接releaserepo,它们将指向其中之一。说,你有releaserepo - >repo1。现在你可以更新repo2,检查是否所有的工作,然后只是改变它的符号链接,下次你将更新repo1并翻转符号链接回来。如果也会避免所有的系统故障,因为创建符号链接操作是原子的。