Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 事后远程分支_Git_Repository_Branch - Fatal编程技术网

Git 事后远程分支

Git 事后远程分支,git,repository,branch,Git,Repository,Branch,假设我在一个项目上工作了一周,每天都提交更改并将其推送到远程回购: Mo - Tu - We - Th - Fr - Sa - Su (origin/master) 周一早上,我意识到我在周末写的东西走错了方向。从技术上讲,是否可以像这样假装我在周六创建了一个新分支 Mo - Tu - We - Th - Fr (origin/master) \ Sa - Su (origin/expe

假设我在一个项目上工作了一周,每天都提交更改并将其推送到远程回购:

Mo - Tu - We - Th - Fr - Sa - Su   (origin/master)
周一早上,我意识到我在周末写的东西走错了方向。从技术上讲,是否可以像这样假装我在周六创建了一个新分支

Mo - Tu - We - Th - Fr   (origin/master)
                       \
                         Sa - Su   (origin/experimental)

如果这在技术上是可行的,它是否违反了更改公共回购协议的规则?

您可以将当前的
master
分支机构推为
实验性

git checkout master
git checkout -b experimental
git push -u origin experimental
然后需要重置并强制推送主机,如果其他参与者已经获取了该分支,这可能会带来不便:

git reset --hard master Fr
git push --force
或者,您可以使用:

这样,您就可以创建一个额外的提交,它取消
Sa
Su
,而不需要
推送--force

Mo - Tu - We - Th - Fr - Re  (origin/master)
                      \
                        Sa - Su   (origin/experimental)

这样做没有问题,但您必须强制推送主机。在将分支合并回主机时,不会恢复提交导致问题(类似于恢复合并提交)?@musiKk可能会,但如果他们有许多合作者已经获取了
origin/master
,这比尝试强制推送要好。我完全同意。我只记得“恢复合并提交”案例中的这一点。您必须记住在合并之前重新恢复提交,否则合并会忽略这些,可能会导致奇怪的冲突。@musiKk您的意思是?但情况似乎并不完全相同。不,但我认为合并仍然会忽略历史上已经存在的提交。不过,我必须尝试一下,才能百分之百确定。
Mo - Tu - We - Th - Fr - Re  (origin/master)
                      \
                        Sa - Su   (origin/experimental)