繁体   English   中英

git branch stash提交到一个

[英]git branch stash commits into one

伙计们,我试图在推送到github之前将分支中的多个提交合并为一个。 分支名称是mybranch

如果我没有记错的话,以下命令应该为我提供挤压提交的选项。

git rebase -i mybranch

我没有看到它真正起作用...它只是说

noop

# Rebase 39e50c2..39e50c2 onto 39e50c2
#
# Commands:
#  p, pick = use commit
...

我究竟做错了什么?

谢谢

您实际上无法合并停留在一个分支上的提交。 但是您可以使用以下步骤完成此操作:

# reset all changes after commit that already is pushed to remote repo
# option --soft will save all the changes in stage area 
git reset --soft origin/mybranch
# here all you changes is in stage area so you can commit
git commit -m "squashed commit"
git push

为了更好地理解git reset命令的格式,它是:

git reset <mode> <commit>

和模式--soft

--soft完全不接触索引文件或工作树(但将头重置为,就像所有模式一样)。 就像git status那样,这会将所有更改的文件保留为“要提交的更改”。

origin/mybranch指向最后一次推送到原点提交的位置。

如果您的mybranch是本地分支机构(即未推送到远程分支机构),则可以重置为与其分支的分支机构。

Rebase将提交从提交图中的一个位置移动到另一个位置,因此您不能将分支基于其自身,因为那将是一个Noop -如消息所示。 相反,在mybranch上,您可能想要做的是将其基础转移到与之分离的分支。 例如,如果它与主服务器不同,则需要

git rebase -i master

查看我的备忘单上的“功能/ Bugfix分支工作流程”以获取更多信息http://philipdaniels.com/gitcheatsheet/

特别是,如果其他人正在对您的存储库进行更改,那么最好理解为什么建议以原始源/主数据库为基础(步骤7):这会迫使您解决当时的任何合并冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM