如果我们将错误的项目推送到另一个远程存储库会发生什么?

发布于 2024-09-16 18:50:03 字数 213 浏览 9 评论 0 原文

假设我们有一个名为 main 的项目,然后我们有一个名为 analytics 的项目,在 Bash 中,我们位于 analytics工作目录并意外推送到 main 远程存储库,analytics 中的所有文件是否都会添加到 main 项目中,并且是否可逆?

Say if we have a project known as main, and then we have a project that is analytics, and in Bash, we are at the analytics working directory and accidentally push to the main remote repository, will all the files in analytics be added to the main project, and is it reversible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傲影 2024-09-23 18:50:03

您将收到来自 Mercurial 的投诉,并且推送将被中止。它看起来像这样:

# create main repo:
% hg init main
% touch main/a.txt
% hg -R main commit --addremove -m main
adding a.txt

# create analytics repo
% hg init analytics
% touch analytics/a.txt
% hg -R analytics commit --addremove -m analytics
adding a.txt

# try the push:
% hg -R analytics push main
pushing to main
searching for changes
abort: repository is unrelated

Mercurial 根据根节点知道两个存储库是否相关。也就是说,如果存储库 A 和 B 共享公共根节点,则它们是相关的。

You will get a complaint from Mercurial and the push will be aborted. It looks like this:

# create main repo:
% hg init main
% touch main/a.txt
% hg -R main commit --addremove -m main
adding a.txt

# create analytics repo
% hg init analytics
% touch analytics/a.txt
% hg -R analytics commit --addremove -m analytics
adding a.txt

# try the push:
% hg -R analytics push main
pushing to main
searching for changes
abort: repository is unrelated

Mercurial knows if two repositories are related based on their root nodes. That is, repositories A and B are related if they share a common root node.

活泼老夫 2024-09-23 18:50:03

如果 main 是本地存储库,您可以导航到 main 并执行 histedit 删除有问题的提交。您也可以从基于服务器的 main 进行 histedit,但如果任何其他用户创建了克隆,当他们推送到 main 时,他们将重新添加更改。

histedit 是一个 Hg 扩展,不与 Hg 捆绑在一起。安装后,您可以像这样使用它:

> hg histedit <rev>

哪里是有问题的提交的开始位置。 Histedit 将生成从顶部到顶端的提交列表。在此列表中,您可以向 histedit 指示您要保留提交、编辑评论或删除提交。 Drop 应该可以解决问题。

if main is a local repository, you can navigate to main and perform a histedit to drop the offending commits. You can histedit from a server-based main as well, but if any other users have created clones, when they push to main they will re-add the changes.

histedit is an Hg extension that doesn't come bundled with Hg. Once you install it you can use it like this:

> hg histedit <rev>

where is the start of the offending commits. Histedit will generate a list of commits from up to the tip. In this list you can indicate to histedit that you want to keep the commit, edit the comment, or drop the commit. Drop should do the trick.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文