我正在一个分支(my-branch
)上工作,这个分支是从主分支创建的。
$ git checkout -b my-branch
我编辑了一些文件,然后将它们检入到新分支中:
$ git commit -a -m 'Add new feature'
然后我从主分支(我不完全确定为什么这样做,或者它是否是良好的实践)拉取了代码:
$ git pull origin master
但是拉取时出现了许多错误消息:
From github.com
* branch master -> FETCH_HEAD
Auto-merging styles/common/module_more_info.scss
CONFLICT (add/add): Merge conflict in styles/common/module_more_info.scss
Auto-merging app/support/stagecraft_stub/responses/cloud.json
CONFLICT (content): Merge conflict in app/support/stagecraft_stub/responses/cloud.json
Auto-merging app/support/backdrop_stub/response_fetcher.js
CONFLICT (content): Merge conflict in app/support/backdrop_stub/response_fetcher.js
Automatic merge failed; fix conflicts and then commit the result.
vagrant@pp-development-1:/var/apps/spotlight$ git status
现在运行 git status
命令将会显示许多更改过的文件:
# 在分支 my-branch 上
# Changes to be committed:
#
# modified: CONTRIBUTING.md
# modified: README.md
# modified: app/appBuilder.js
[lots more files]
#
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: app/support/backdrop_stub/response_fetcher.js
# both modified: app/support/stagecraft_stub/responses/cloud.json
# both added: styles/common/module_more_info.scss
首先,发生了什么事情,其次,我该怎么办?
如果我尝试查看上面文件列表中的任何文件的差异,我会得到空输出,这很令人困惑(如果没有差异,为什么它要求我提交文件?):
$ git diff CONTRIBUTING.md
$
我应该审核位于未合并路径
下的三个文件,然后将其提交为合并提交吗?更新:更重要的是,我能否在不搞乱主分支的情况下将其推送到我的分支上?
我似乎无法回滚最后一次提交。
git reset --hard HEAD
会丢失我之前提交的代码吗? - flossfanHEAD
引用了refs/heads/my-branch
,这应该链接到合并开始前分支my-branch
上的最后一次提交。因此,通过硬重置到HEAD
,你可以回到上次提交的状态。 - gregor