git 一个分支 push 到远程,会携带其他分支的 commit?

306 天前
 smdbh

本地网络有个 git 仓库,main 都是其他分支 merge 得到的,就 3 ,4 个 commit, 其他分支有总共几十个提交。

现在想将 main 分支的这几个 commit 发布到外网的 git 仓库,其他分支不发 外网仓库刚新建,无任何内容 使用

git push remotename main

期望外网 main 只有 3 ,4 个提交, 但结果外网的 git main 出现几十个提交,包含了所有分支的信息

请问这是啥问题,该如何操作实现期望的几个提交结果, 谢谢

2190 次点击
所在节点    git
11 条回复
yeqizhang
306 天前
你不是问题,你看错本地的 main 了?本地的 main 合了其它分支必然包括那些提交
smdbh
306 天前
@yeqizhang 那这个不是和 rebase 没区别了
dfkjgklfdjg
306 天前
你应该用 squash 把想要合并进来分支历史压缩成一个 Commit 。直接 merge 会带着合并进来的分支中所有的 commit 的
dfkjgklfdjg
306 天前
@yeqizhang #1 ,OP 的 main 里面的 4 个 commit 应该都是 merge commit 吧。
MENGKE
306 天前
git merge xxx --no-ff
lisxour
306 天前
你说的 3 、4 个 commit ,是 merge commit 吧。。。

如果你合并分支时,不把 commit 合成一个,其实是会把每一条 commit 带过来的

leonshaw
306 天前
commit 不是空中楼阁
smdbh
306 天前
@lisxour ,我是想只要蓝色的 push 出去,实际是紫色的也有了。 “如果你合并分支时,不把 commit 合成一个,其实是会把每一条 commit 带过来的”, 是不是说紫色先要 squash 成 1 个 commit 再 merge 到 main ?
dfkjgklfdjg
306 天前
@smdbh #8 ,是的
jpuyy
306 天前
git log main 有多少 commit, push 到 remote main 就会有多少 commit
lisxour
305 天前
@smdbh #8 是的,但是合不合并成大 commit 各有优缺点,实际用哪种看各自的具体需求

合并成大 commit
优点:回退方便,一回退就是一整个功能
缺点:丢失中间的小 commit 信息(改动信息),只知道做了这个功能

不合并大 commit
优点:所有 commit 信息都还在,方便查历史改动
缺点:出了问题不好回退,假如两个功能改动在一个期间同时 merge 了,两个的 commit 会全混在一起,当你想回退 A 功能时,你需要把 A 功能所有相关 commit 找回来才能回退

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1017496

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX