如何组合提交和推送到遥控器

时间:2018-05-23 14:50:13

标签: git git-branch git-commit

开始时本地分支是uptodate,现在我使用git rebase -i HEAD~3并将pick两个最新提交的fixup修改为#include <iomanip> #include <iostream> #include <string> #include <type_traits> #include <variant> #include <vector> #include <functional> using var_t = std::variant<std::function<void(void)>, std::function<void(int)>>; template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; }; template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>; int main() { std::vector<var_t> vec = { []() {std::cout << "void" << std::endl;}, [](int arg) {std::cout << "int " << arg << std::endl;} }; for (auto& v: vec) { std::visit(overloaded { [](const std::function<void(void)>& fv) { fv(); }, [](const std::function<void(int)>& fi) { fi(42); } }, v); } } 以在本地分支上组合3个提交,现在我想将本地分支推送到远程。我只想在遥控器上显示合并提交。 然而,合并后本地分支落后于远程两个提交,我无法直接推送。我该如何处理?

1 个答案:

答案 0 :(得分:2)

免责声明git push --force很危险;使用它需要您自担风险。

如果你真的想这样做并组合提交,你可以使用git squash然后git push --force在本地存储库上执行此操作,以覆盖遥控器上的内容。

-

请注意,git push --force将更新分支以指向新的提交,因此旧的提交将永久无法访问,除非您具有提交标识符或找到它的方法并且提交未被提交垃圾回收。这在托管的git服务上通常是不可能的,尽管GitHub确实有一个活动日志。

此外,如果其他人在同一个分支机构工作并且不期待更改,git push --force可能会导致问题。