Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/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返回了5次提交,但忘记创建新分支,如何返回?_Git_Git Branch_Git Commit_Git Checkout - Fatal编程技术网

Git返回了5次提交,但忘记创建新分支,如何返回?

Git返回了5次提交,但忘记创建新分支,如何返回?,git,git-branch,git-commit,git-checkout,Git,Git Branch,Git Commit,Git Checkout,我必须用Git返回六次提交,并使用命令 git checkout idofthecommit 我一直在做的就是继续承诺,承诺,承诺。因为我没有创建真正的新分支,所以当我使用git推送到外部存储库时 git push origin master 它告诉我一切都是最新的 这意味着我实际上没有对主控进行任何更改 如何将我所做的提交移动到主分支?如果您对运行的命令的描述正确-现在就在您正在处理的内容上创建一个分支,以创建对它的可靠命名引用(git branch WIP HEAD)。然后根据主控(gi

我必须用Git返回六次提交,并使用命令

git checkout idofthecommit
我一直在做的就是继续承诺,承诺,承诺。因为我没有创建真正的新分支,所以当我使用git推送到外部存储库时

git push origin master
它告诉我一切都是最新的

这意味着我实际上没有对主控进行任何更改


如何将我所做的提交移动到主分支?

如果您对运行的命令的描述正确-现在就在您正在处理的内容上创建一个分支,以创建对它的可靠命名引用(
git branch WIP HEAD
)。然后根据主控(
git-rebase-master
)和签出主控并合并到WIP中

您可以非常简单地对此进行测试,以复制情况,并探索您需要的命令及其作用。对于这个
git-graph
被别名为
git-log--graph--oneline--decoration--abbrev-commit
,只生成一个漂亮的git日志

创建一个包含8次提交的演示存储库,然后签出6次并创建更多提交

$ cd /tmp && git init demo && cd demo
$ for msg in one two three four five six seven eight; do echo $msg>file && git add file && git commit -m $msg; done
$ git checkout HEAD~6
$ for msg in nine ten eleven; do echo $msg>file && git add file && git commit -m $msg; done
让我们看看这个:

$ git graph --all
* e81b31c (HEAD) eleven
* c005e75 ten
* c567d25 nine
| * 4d28c3d (master) eight
| * 380f715 seven
| * 9966c80 six
| * 6b2f757 five
| * e43d079 four
| * ce0ff34 three
|/
* 8d5a6e1 two
* 1f880ae one
实际上,这看起来就像是从8d5a6e1中提取的一个功能分支。唯一特别的是它唯一的参照物是头。如果现在添加分支参照,它将成为普通要素分支

如果在使用分支标记标记此工作分支之前意外签出master或其他分支,则会丢失对新提交链顶部的引用。现在你把树枝弄丢了。在这种情况下,您需要使用reflog查找该链上的最后一次提交,并向该提交添加分支引用。我们可以从上面的演示存储库中看到这一点:

$ git reflog
e81b31c HEAD@{0}: commit: eleven
c005e75 HEAD@{1}: commit: ten
c567d25 HEAD@{2}: commit: nine
8d5a6e1 HEAD@{3}: checkout: moving from master to HEAD~6
4d28c3d HEAD@{4}: reset: moving to 4d28c3d
....
我们可以从reflog中看到一些提交返回,我们检查了HEAD~6,然后又添加了三个提交。然后,我们可以发出
git branch recover committes e81b31c
,以获取指向该组提交的分支并恢复它们