以下是所有需求:
我有一个名为 /fix/version-1.x 的远程分支(修复分支),它有两个提交:
原来这个分支不正确(更准确地说是我的第二次提交):一个文件上有一些实现错误
作为第一步:
1-我已经下载了这个分支(带有两个提交)
所以作为第一反应,我对这个文件进行了简单的检查,以便进行上一次提交(第一次),因为那里没有实现错误。
2-我检查了第一次提交(仅适用于此文件)
git checkout 'commit' file/to/restore
3-我得到'detached HEAD'
git branch command
4-我为这个文件做了更改(更正)
5- git add file/to/restore
6- git status OK
7-我使用新的消息git commit -m "solve implementation error problem"
当我将本地分支推送到远程服务器时
8- git push remote fix/version-1.x
它告诉我,每件事都是最新的(已经更新)无事可做!!!
但是当我在没有将文件签出到先前状态(第一次提交)的情况下工作时,即我直接在此分支上进行了更改并进行了提交,然后推送到远程服务器,每个东西都正常工作,我在远程服务器上有新的提交(第三个)。
问题似乎来自这个独立的头?我在这里做错了吗?
答案 0 :(得分:0)
似乎问题来自这个独立的头
事实上。 git checkout 'commit' -- file/to/restore
应该只重置该特定文件而不分离HEAD
detached HEAD status必须来自第1步。
第一步应该是:
git clone url/remote/repo/
cd repo
git checkout fix/version-1.x
该本地分支将自动链接到其upstream branch
来自git checkout
man page:
git checkout <branch>
如果找不到
<branch>
但在一个遥控器(称为<remote>
)中确实存在一个匹配名称的跟踪分支,则视为等效于:
git checkout -b <branch> --track <remote>/<branch>
然后您可以继续git checkout 'commit' -- file/to/restore