我一直都是在一台机器上开发一个大项目,用github做版本控制,现在刚换了一台新机器,想在新机器上开发项目,不知道最佳实践是什么。
我在新机器上尝试的是:
git clone https://github.com/softtimur/project.git
在文件夹项目中,我做了
git checkout master
返回
Already on 'master'
Your branch is up-to-date with 'origin/master'.
然后,我想转到文件的先前版本:
git checkout 19b3644
我收到一条消息:
Note: checking out '19b3664'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at 19b3664... m=back to no lazyload and no toModifyBeforeSubmit
我的问题是不是关于如何修复detached Head
状态。我想知道我是否应该在这台新机器上创建一个新分支。我不需要从两台机器上编码,我可以制作新机器master
,而且我不再需要接触旧机器。
我总是很难理解 git...有人可以帮忙吗?
答案1
如果您确实要从一台机器切换到另一台机器,只需git clone
在您想要的任何标签/分支上完成工作并从那里恢复工作即可。您不一定需要新的分支,或者至少这与您更换机器无关,分支只是为了组织您的工作,所以这完全取决于您如何使用 git。
git 是一个分散的 VCS:您拥有的分支数量与您的存储库数量一样多master
,分支位于每个存储库,然后您可以将它们从一个存储库“链接”到另一个存储库。
警告但是:当您克隆 git 存储库以开始在其他地方工作时,您可能无法检索所有内容,因为某些本地内容未存储在存储库内(因此未分发),因此您需要格外小心,如果需要,请自行移动它。在这方面,您至少要考虑:工作树中的脏文件、存储、您的配置、您的钩子等。
更新根据您以下的评论:您的问题似乎与更换服务器无关。如果您想忘记(即完全忘记这些提交并且将来无法检索它们)一些提交并返回,19b3664
只需执行即可。您的主分支 HEAD 现在将再次位于此提交。再次:您将丢失在此提交之后的所有先前提交,因此请格外小心(或做好备份)。我建议改为执行git reset --hard 19b3664
以下操作:
git checkout master
git branch previous_work
git reset --hard 19b3664
最终结果是主分支回到这个特定的提交 ID,但之后您将始终拥有分支previous_work
(使用任何对您而言有意义的名称),以便您可以在需要时返回到该分支。