简而言之:
在从新的git 存储库git pull
上的远程分支提取代码之后,我可以将我的代码重置为一个状态吗?
很长的故事:
我有两个包含脚本的文件夹,一个文件夹代表另一个文件夹内的另一个版本的文件。为了应用版本控制,我首先在 github 中创建一个 git 存储库,其中的文件夹与其他文件夹相比具有更少的修订版,并创建两个具有相同内容的分支来代表这两个文件夹。
要将具有最新修订的文件夹同步到远程分支,我在该文件夹中执行以下操作:
git init
git remote add origin [GITHUB_REPO]
git pull origin [BRANCH_NAME]:[BRANCH_NAME]
git add .
git commit -m "Latest revision."
我之前已经对工作流程进行了多次测试,似乎没有任何问题,直到后来我意识到在git add .
我运行之前git status
并且没有显示任何修改,它只显示新的未跟踪文件,这很奇怪。
我需要先撤消到某个状态git pull
,因为我意识到我的一些文件被远程覆盖了,但由于pull
是第一个操作,并且在此之前没有提交,我无法重置为之前的任何内容pull
。
这是结果git reflog show
:
edbfd0d HEAD@{0}: commit: Import code from development environment.
da39602 HEAD@{1}: checkout: moving from master to development
我所做的是:
git reset HEAD@{1}
这并不能解决问题,它只会撤消最后一次提交,并且覆盖的文件git pull
仍然不会回来。如果有帮助,服务器上的 git 版本是 1.7.1,而我的本地机器上是 1.8.2.1。难怪他们的行为不同。
--
经过进一步研究,我发现git pull
服务器中的行为与我本地开发机器不同。似乎在服务器中git pull
自动合并,而在我的本地开发中告诉我有些文件可能会在合并时被覆盖。
这会导致服务器中的文件自动使用git pull
未跟踪文件的现有文件上的修订较少的版本,而在我的本地开发中,我可以添加修改后的文件并使用更新的版本。