gpt4 book ai didi

git - git checkout master + git reset --hard 会做什么?

转载 作者:太空狗 更新时间:2023-10-29 14:09:38 24 4
gpt4 key购买 nike

我对 git 比较陌生,并且在早期遇到了一些问题。我已经做出了几次 promise ,但是当我尝试推送它们时,我得到的回应是一切都是最新的。我觉得我的问题与 this question 中列出的问题相同, 但它建议如下:

$ 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>

“ check out master”究竟会做什么?我只是不想丢失我所做的更改...

gitk截图:
enter image description here

最佳答案

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

在分支 mybranch 上时(C 是提交):

                        HEAD
|
V
master mybranch
| |
V V
C1 -------> C2 -------> C3

运行 git checkout master 后:

            HEAD
|
V
master mybranch
| |
V V
C1 -------> C2 -------> C3

这还会根据需要移动工作目录中的文件,因此它是项目在该提交时的样子的完美快照。它不会删除或更改提交,因此您不会因 checkout 另一个分支而丢失一个分支中的工作。

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

编辑:

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

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

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

关于git - git checkout master + git reset --hard 会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2421717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com