如何从特定提交继续项目并修复 HEAD 分离问题?
How to continue project from specific commit and fix HEAD detached issue?
我检查了我项目中的特定提交并从那里继续,希望该提交之后的更改将被删除,并且我检查的那个提交将成为新的负责人。我提交了新的更改,但我无法推动它们。我还是 git 的新手。
我所做的是:
- git结帐commit_hash
- 已编辑项目
- git commit -m "new changes"
- git push -u origin master
我得到了:
To https://github.com/myusername/project.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/miloradsimic/ISA16.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
当我输入 git status 我得到:
HEAD detached from 506f0ec
nothing to commit, working directory clean
我在 head commit 中更改了项目层次结构,所以我想恢复到以前的状态。我不想将它与 head 合并。
我是这样做的(简单,不专业):
我在一个文件夹项目中进行了更改,而不是放在头上。
我将 head commit 下载到新文件夹中,并将所有文件(git 文件除外)从文件夹复制到这个文件夹。删除了不必要的文件。添加了所有更改、提交和推送。
谢谢,米洛拉德·西米克
当我们签出提交哈希时,我们不再在分支 (detached HEAD
) 上。
HEAD detached from 506f0ec
要解决它,只需创建一个新分支,进行更改,进行新提交,推送到远程。
签出提交哈希。
$ git checkout <commit-hash>
您可以在此处执行 changes/commits 并稍后在推送到远程之前创建一个新分支(此处为您的情况)。但我更喜欢先创建一个新分支(比如 dev
)。
$ git checkout -b dev
// do changes here
$ git add .
$ git commit -m 'message'
$ git push -u origin HEAD # push to remote/dev
合并 dev
分支到 master
分支:
您需要 merge dev branch
进入 master
分支以获得您的新更改。
$ git checkout master
$ git pull origin dev # pull 'dev' new changes into 'master', pull = fetch + merge
$ git push origin HEAD # update origin/master
用dev
分支替换master
分支
如果您想用 dev
分支的更改重置 master
,请将 master
替换为 dev
分支。
$ git checkout dev
$ git branch -D master # delete local master branch
$ git checkout -b master # create new local/master branch with exactly 'dev's' history
$ git push -f origin HEAD # force(-f) push to remote since git history is changed
注:现在master
和dev
有相同的commits/changes.
你可以git reset --hard <commit-id>
然后changes/commit。
干杯
我检查了我项目中的特定提交并从那里继续,希望该提交之后的更改将被删除,并且我检查的那个提交将成为新的负责人。我提交了新的更改,但我无法推动它们。我还是 git 的新手。
我所做的是:
- git结帐commit_hash
- 已编辑项目
- git commit -m "new changes"
- git push -u origin master
我得到了:
To https://github.com/myusername/project.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/miloradsimic/ISA16.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
当我输入 git status 我得到:
HEAD detached from 506f0ec nothing to commit, working directory clean
我在 head commit 中更改了项目层次结构,所以我想恢复到以前的状态。我不想将它与 head 合并。
我是这样做的(简单,不专业): 我在一个文件夹项目中进行了更改,而不是放在头上。 我将 head commit 下载到新文件夹中,并将所有文件(git 文件除外)从文件夹复制到这个文件夹。删除了不必要的文件。添加了所有更改、提交和推送。
谢谢,米洛拉德·西米克
当我们签出提交哈希时,我们不再在分支 (detached HEAD
) 上。
HEAD detached from 506f0ec
要解决它,只需创建一个新分支,进行更改,进行新提交,推送到远程。
签出提交哈希。
$ git checkout <commit-hash>
您可以在此处执行 changes/commits 并稍后在推送到远程之前创建一个新分支(此处为您的情况)。但我更喜欢先创建一个新分支(比如 dev
)。
$ git checkout -b dev
// do changes here
$ git add .
$ git commit -m 'message'
$ git push -u origin HEAD # push to remote/dev
合并 dev
分支到 master
分支:
您需要 merge dev branch
进入 master
分支以获得您的新更改。
$ git checkout master
$ git pull origin dev # pull 'dev' new changes into 'master', pull = fetch + merge
$ git push origin HEAD # update origin/master
用dev
分支替换master
分支
如果您想用 dev
分支的更改重置 master
,请将 master
替换为 dev
分支。
$ git checkout dev
$ git branch -D master # delete local master branch
$ git checkout -b master # create new local/master branch with exactly 'dev's' history
$ git push -f origin HEAD # force(-f) push to remote since git history is changed
注:现在master
和dev
有相同的commits/changes.
你可以git reset --hard <commit-id>
然后changes/commit。
干杯