Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 - Fatal编程技术网

如何在没有较早提交的情况下推送一个Git提交?

如何在没有较早提交的情况下推送一个Git提交?,git,Git,我已经做了一个git提交,但是我没有推。我现在正在做一个新的bug修复,它不应该和第一次提交时接触相同的文件 我是否可以提交此错误修复并仅提交此提交?您可以将以前的提交移动到(临时)分支,然后选择新的提交到主分支。例如: # first commit your current work git branch temp_branch git reset --hard HEAD~2 git cherry-pick temp_branch git push 然后,temp_分支将包含两个新提交。然后

我已经做了一个git提交,但是我没有推。我现在正在做一个新的bug修复,它不应该和第一次提交时接触相同的文件


我是否可以提交此错误修复并仅提交此提交?

您可以将以前的提交移动到(临时)分支,然后选择新的提交到主分支。例如:

# first commit your current work
git branch temp_branch
git reset --hard HEAD~2
git cherry-pick temp_branch
git push
然后,temp_分支将包含两个新提交。然后,您可以稍后将上一个选回主控:

git cherry-pick temp_branch^
git branch -D temp_branch

完成此操作后,您的主分支将包含与开始时相同的两个提交,但顺序相反。

只需执行另一个克隆,并从那里推动错误修复。

我们的商店广泛使用个人分支。基本上这个过程是这样的:

鉴于您目前在主分支上

git checkout -b bug_fix_name_that_I_dont_want_to_commit
上面创建了一个分支并将其签出…这是放置未准备好推送的提交的地方

现在,您应该能够在不影响主分支的情况下对当前分支进行提交

当您准备发布/推送该提交时,只需执行以下操作:

git push origin master
您的其他提交将不会转到源存储库

当您准备将“bug修复”合并到主分支中时,签出主分支并执行

git merge bug_fix_name_that_I_dont_want_to_commit

我想这回答了问题,但如果没有,请告诉我

导致特定提交的所有提交都定义了新提交

也就是说,如果你有一个主人→ 发展→ 修复错误,如下图所示:

您可以单独推动
dev
,但不能单独推动
bugfix
,但是
bugfix
的定义包括
dev
,因此
dev
没有
bugfix

但是,如果您将此错误修复构建为一个功能分支,那么您将得到更像这样的东西:

您仍然可以追溯到这一点(从
origin/master
创建一个新分支,选择更改,然后在您的开发分支上执行
git reset--hard HEAD^
,以消除错误修复更改)

完成后,您可以使用一个简单的
git-rebase-master
转发您的开发分支,如下所示:


实际上,从分支开始修复bug通常会使这类问题变得更容易。

看起来您已经问了50多个问题,但只接受了其中一小部分的答案。请考虑使用“接受”函数来标记对您最有帮助的答案。