git checkout master+;git重置--很难吗?

git checkout master+;git重置--很难吗?,git,branch,Git,Branch,我对git比较陌生,在早期就遇到了一些问题。我做了几次承诺,但当我试图推动它们时,我得到的回应是,一切都是最新的。我觉得我的问题与中列出的相同,但建议如下: $ git log -1 # note the SHA-1 of latest commit $ git checkout master # reset your branch head to your previously detached commit $ git reset --hard <commit-id> $git

我对git比较陌生,在早期就遇到了一些问题。我做了几次承诺,但当我试图推动它们时,我得到的回应是,一切都是最新的。我觉得我的问题与中列出的相同,但建议如下:

$ git log -1
# note the SHA-1 of latest commit
$ git checkout master
# reset your branch head to your previously detached commit
$ git reset --hard <commit-id>
$git日志-1
#注意最近提交的SHA-1
$git签出主机
#将分支头重置为以前分离的提交
$git重置--硬
“检查主人”到底要做什么?我只是不想失去我所做的改变

gitk的截图:

git checkout master
是将您的工作区域切换到master分支,在其他版本控制系统中也称为trunk

签出分支会移动本地
HEAD
指针,使其指向分支引用的同一提交。例如:

在分支上时
mybranch
C
s为提交):

运行git checkout master后:

            HEAD
            |
            V
            master      mybranch
            |           |
            V           V
C1 -------> C2 -------> C3
这还可以根据需要移动工作目录中的文件,从而使其成为提交时项目外观的完美快照。它不会删除或更改提交,所以您不会因为签出另一个分支而丢失一个分支中的工作

在另一个问题中描述的“分离头”情况下发生的情况是,
C3
与分支无关。为了解决这个问题,您需要更新
master
分支所指向的提交,以便它包含新内容(
C3
)。签出
master
告诉git您现在正在使用master分支,然后使用您希望位于
master
分支顶端的提交的SHA1执行一次硬的
reset
,将分支引用更新为您想要的

编辑:

在这种情况下,头部分离不是问题所在。请记住,在git中,提交和推送是两件不同的事情。提交不像在Subversion中那样与中央存储库通信。对工作目录进行更改后,您可以为更改的每个文件运行一次
git add filename
,其中
filename
是文件名。将所有文件添加到索引后,可以使用
git commit
提交它们

这方面的一个缩写是使用
git commit-A
,它将在提交之前自动将修改过的文件添加到索引中。这允许您跳过git add步骤。请注意,
git commit-a
只会添加修改过的文件。如果要引入一个从未提交过的新文件,则必须使用
git add
手动添加它


提交完成后,可以运行
git push
将提交发送到远程存储库并更新远程分支。这只做远程通信的事情。与Subversion不同,提交本身在本地处理,不与服务器进行任何交互。

什么是“这个”问题?你没有提供链接。因此,如果我速度慢,请原谅,当我签出主控时,我的所有文件都将恢复到更改和提交之前的状态,但当我推送时,它将正确更新所有内容;是这样吗?假设您在签出主机和按下主机之间运行问题中提到的命令。当您推送时,git会发送本地主分支的所有提交,这些提交在远程主分支中还不存在。然后它更新远程分支指针
origin/master
以指向与本地
master
相同的提交。我在另一篇文章中运行了三个命令,它仍然说一切都是最新的,可能推送在您之前的一次尝试中已经成功,因此它报告它准确地更新了。您可以在
gitk
中发布您的历史记录截图,这样我们就可以看到发生了什么。也许您的场景与另一个问题中的场景不一样。进行了更多的提交(当我签出主控时,我丢失了所有更改),但在我尝试推送时,仍然显示所有内容都是最新的。有点宽泛,我认为值得一提的是
重置
对回答问题所做的操作。
            HEAD
            |
            V
            master      mybranch
            |           |
            V           V
C1 -------> C2 -------> C3