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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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推送';是否将分离的提交发送到远程存储库?_Git_Github_Version Control_Git Push_Git Reset - Fatal编程技术网

威尔';git重置'+';git推送';是否将分离的提交发送到远程存储库?

威尔';git重置'+';git推送';是否将分离的提交发送到远程存储库?,git,github,version-control,git-push,git-reset,Git,Github,Version Control,Git Push,Git Reset,我的存储库中有一个分支,其中有一个关于新更改的新提交(比如“提交a”)。 我还没有将提交推送到远程存储库 现在,此提交缺少一个修复程序,我想: git reset HEAD~1(返回上一次提交A-1,将上一次提交的更改放回工作目录) 更改缺少修复程序的文件 git添加。 git提交(说“提交B”) git推送 我的问题主要是关于重置提交(A) 它会像以前一样存在吗?还是仍在我的分行 这会以任何方式将“提交”推送到远程存储库吗 这会搅乱我的历史吗?或者,git push只将提交同步到分支中,

我的存储库中有一个分支,其中有一个关于新更改的新提交(比如“提交a”)。 我还没有将提交推送到远程存储库

现在,此提交缺少一个修复程序,我想:

  • git reset HEAD~1
    (返回上一次提交A-1,将上一次提交的更改放回工作目录)
  • 更改缺少修复程序的文件
  • git添加。
  • git提交
    (说“提交B”)
  • git推送
我的问题主要是关于重置提交(A)

  • 它会像以前一样存在吗?还是仍在我的分行
  • 这会以任何方式将“提交”推送到远程存储库吗
  • 这会搅乱我的历史吗?或者,
    git push
    只将提交同步到分支中,而忽略分离的提交?(即“提交A”)
最后

  • 如果我已经推送了“提交A”并尝试执行相同的操作序列,会怎么样
它会像以前一样存在吗?还是仍在我的分行

如果您在一个系统中,那么任何重置都将仍然在一个分离的磁头中。
如果您不在分离的头部,则git reset将分支头部重置为
commitB
,这意味着:

-
commitA
位于另一个分支中(请参阅“”:git分支--包含commitA) -或者它在一段时间内是可见的

这会以任何方式将“提交”推送到远程存储库吗

否,除非可以访问
commitA
,否则为另一分支的一部分,并且如果您正在推动另一分支

这会搅乱我的历史吗

不是你当地的历史。只有在委员会已经被推动的情况下,这可能会扰乱上游回购的历史

在某一点上,您需要:

  • 要么是git,要么是aBranch
  • 或者从您所在的位置创建一个分支(或者重置为git checkout-b aNewBranch)

您需要在分支中才能进行推送。

如果不进行git推送,则任何内容都不会在远程存储库中结束

Git reset默认为“混合”模式,因此您的命令将等效于“Git reset--mixed HEAD~1”。从git文档中可以看到以下关于混合模式重置的内容:

Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action.

您还可以使用“git commit--amend”命令修改提交,而不是重置。这将使用您要添加的更改来修改上次提交。

关于重置提交(A)

它会像以前一样存在吗?还是会留在我的脑海里 分支机构

它将作为分离的提交(无法从您的分支访问)保留,您可以通过执行以下操作来访问它

git reflog
该命令将列出HEAD指向的所有提交的历史记录,在本例中,您将看到如下内容:

af35532 HEAD@{0}: commit: Commit B
bae2395 HEAD@{1}: reset: moving to HEAD~
6685f32 HEAD@{2}: commit: Commit A
因此,您可以通过以下方式将分支恢复到以前的状态(指向提交A):

git reset HEAD@{2}
这会以任何方式将“提交”推送到远程存储库吗

否,因为push仅发送头(也称为分支),并且仅提交可从这些头访问的内容

由于无法从您的分支访问Commit A,因此它永远不会被发送。请注意,如果有另一个不同的分支使Commit成为可访问的,那么Commit A将与该分支一起发送

这会搅乱我的历史吗?或者git push只会将提交同步到 分支,忽略分离的分支?(即“提交A”)

不,它不会弄乱您的历史记录,git push不会同步分离的提交

如果我已经按下了“提交A”,并尝试执行相同的操作,会怎么样 操作顺序

在这种情况下,推送将被拒绝为“非快进”,因为您正试图用divegent历史覆盖远程磁头

To https://github.com/user/repo.git
! [rejected]        master -> master (non-fast-forward)

是的,但我在一家分店。从我的分支中,I
git reset
,我的头仍将指向该分支(即使它将指向它以前的一个提交)。唯一分离的东西是'Commit A',因为它不再进入我的分支历史(事实上,我'回来'并'选择了另一条路径'(reset+Commit)。但也许“分离”不是描述提交状态的正确术语?它不能回答我关于重置提交的分离/暂停状态的问题。而且我知道如果我不推,我不会影响远程存储库。但是+1指给我
git amend
;我没有想到它。@Kamafeather在您重置的提交之后,将不会删除。它们将退出,但将孤立。可以使用“git fsck--lost found”命令找到它们。这就是您想知道的吗?是的,就是这样。我想确保在本地重置不会使重置提交也在远程保留。谢谢