我想做一个脚本,通过在 GIT 中签出一个仓库来帮助我发布一个系统。
我的任务是我是否可以通过某种方式测试来检查一个分支以确定我是否有错误而不依赖于文件系统。
同样,我可以在不修改文件系统的情况下轻松预览 GIT 合并以识别冲突吗?
(如果有帮助,完整的系统将在 Linux 系统上运行)
使用git merge --ff-only
- 只有当它可以快速转发时它才会合并分支。这意味着冲突是不可能的,并且它将始终有效(当然系统故障除外,例如磁盘空间不足)。显然,这意味着不应该分叉分支,但是在大多数情况下是这样,如果不是,您应该在另一个 repo 中与潜在的冲突合并,保持“发布 repo”不变。
这里的另一种方法是使用符号链接(linux 或 ntfs)。您应该有两个存储库repo1
和一个指向其中repo2
一个的符号链接。releaserepo
说,你有releaserepo
-> repo1
。现在您可以更新repo2
,检查是否一切正常,然后只需将符号链接更改为它,下次您将更新repo1
并翻转符号链接。If 也将避免所有系统故障,因为创建符号链接操作是原子的。
如果你签出一个分支,你将永远不会出错。结帐只是恢复分支的先前状态。
如果您想检查合并,情况会有所不同。
如果你有一个分支mybranch
并且你想合并otherbranch
到它,记住mybranch
合并之前的状态:
git log -1 --oneline
这将返回最后一次提交的哈希。请注意哈希(例如CAFEBABE
)。
现在,尝试进行合并:
git merge otherbranch
如果一切正常。美好的。如果您遇到任何错误并且不愿意解决它们:
git reset --hard CAFEBABE
这将重置mybranch
为完成之前的状态git merge
。
除了记住 hash 之外CAFEBABE
,您还可以ORIG_HEAD
按照此处所述使用:Git 中的 HEAD 和 ORIG_HEAD