Mil*_*mic 4 git version-control head git-detached-head
我从我的项目中检出特定提交并从那里继续,希望该提交之后的更改将被删除,并且我检出的那个提交将是新的头。我提交了新的更改,但我无法推动它们。我还是 git 的新手。
我所做的是:
我有:
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.
Run Code Online (Sandbox Code Playgroud)
当我输入git status 时,我得到:
HEAD 从 506f0ec 分离 无需提交,工作目录干净
我在头部提交中更改了项目层次结构,因此我想将其恢复到以前的状态。我不想将它与头部合并。
我是这样做的(简单的方法,不专业): 我在一个文件夹中进行了更改,而不是放在头上。我将 head commit 下载到新文件夹中,并将文件夹中的所有文件(git 文件除外)复制到此文件夹中。删除了不必要的文件。添加了所有更改,提交和推送。
谢谢,米洛拉德·西米克
当我们检出提交哈希时,我们不再位于分支( detached HEAD) 上。
HEAD 从 506f0ec 分离
要解决它,只需创建一个新分支,进行更改,进行新的提交,推送到远程即可。
结帐到提交哈希。
$ git checkout <commit-hash>
Run Code Online (Sandbox Code Playgroud)
您可以在此处进行更改/提交并稍后在推送到远程之前创建一个新分支(您的案例在这里)。但我更喜欢先创建一个新分支(比如,dev)。
$ git checkout -b dev
// do changes here
$ git add .
$ git commit -m 'message'
$ git push -u origin HEAD # push to remote/dev
Run Code Online (Sandbox Code Playgroud)
合并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
Run Code Online (Sandbox Code Playgroud)
用master分支替换dev分支
如果您想master使用dev分支的更改重置,请替换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
Run Code Online (Sandbox Code Playgroud)
注意:现在master并dev具有相同的提交/更改。
| 归档时间: |
|
| 查看次数: |
4894 次 |
| 最近记录: |