我从我的项目中检查了特定的提交并继续从那里开始,希望删除该提交后的更改,并且我检查的提交将是新的头。我做出了新的改变,但我无法推动它们。我还是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.
当我输入 git status 时,我得到了:
HEAD detached from 506f0ec nothing to commit, working directory clean
我改变了头部提交中的项目层次结构,所以我希望将其恢复到以前的状态。我不想把它与头合并。
我是这样做的(简单方法,不专业): 我在一个文件夹项目中有变化,没有定位在头上。 我将head commit下载到新文件夹中,并将所有文件(git文件除外)从我对这个文件夹的更改复制到文件夹中。删除了不必要的文件。添加了所有更改,提交和推送。
谢谢,Milorad Simic
答案 0 :(得分:3)
当我们结帐到提交哈希时,我们不再是分支(detached HEAD
)。
HEAD与506f0ec分离
要解决它,只需创建一个新分支,进行更改,执行新的提交,推送到远程。
签出提交哈希。
$ git checkout <commit-hash>
您可以在此处进行更改/提交,然后在推送到远程(此处为您的案例)之前创建新分支。但我更喜欢先创建一个新的分支(比如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
将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
注意:现在master
和dev
具有相同的提交/更改。
答案 1 :(得分:0)
检查&#34; git status&#34;,如果您还有剩余的提交更改,请先通过&#34; git stash&#34;将其隐藏一段时间。
尝试使用&#34; git pull --rebase&#34;
之后尝试再次提交。 如果你再次遇到同样的问题,请告诉我。
答案 2 :(得分:0)
您可以执行git reset --hard <commit-id>
然后进行更改/提交。
干杯