首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git reflog。这是一种适当的使用吗?

git reflog。这是一种适当的使用吗?
EN

Stack Overflow用户
提问于 2011-03-30 22:44:13
回答 3查看 263关注 0票数 0

目前这只是一个假设,但我希望将其付诸实践。

我有一个模板,我开始我所有的网络项目。我目前正在使用github来存储主模板,并在每次构建项目时进行简单的克隆。

问题是,随着我做越来越多的项目,我有一些在模板中有用的功能,但使用我当前的工作流程将它们放入其中是很棘手的。

我的建议是在每个项目开始时从github中提取模板,并沿着本地分支构建项目。当我遇到一些我认为在主模板中有用的东西时,我切换到主分支,在那里实现更改,提交到github,然后使用reflog将这些更改带到当前的本地项目状态。

这有什么意义吗?我是不是(很可能)完全忽略了reflog的要点?

非常感谢

EN

回答 3

Stack Overflow用户

发布于 2011-03-30 22:52:12

在我看来,reflog是git中最丑陋的工具之一--我不会使用它,除非我意外地破坏了我自己的一个更改,并且没有其他方法可以获得它。

鉴于你提议的工作流程,我建议你在本地分支中进行所有的编码,如果你最终为模板编写了一些有用的代码,只需切换到master并精挑细选你想要引入的单个提交。

http://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html

票数 3
EN

Stack Overflow用户

发布于 2011-03-30 23:02:27

简单地说,这将改写历史。如果你使用github,这个将会给你带来痛苦。如前所述,reflog不是一个经常使用的工具。

在您的情况下,完全没有理由使用reflog。您可以使用相同的工作流程来执行此操作。假设您正在处理my_local_project分支,并且您想要对模板进行一些更改。然后你就可以这样做:

代码语言:javascript
复制
git checkout master
# Hackety, hackety, make the change in your template
git checkout my_local_project
git merge master

现在,您对master分支所做的所有更改都将以干净的方式合并到my_local_project中。

如果您将项目放在与模板不同的存储库中,这甚至可以工作(只需稍加修改)。

票数 3
EN

Stack Overflow用户

发布于 2011-03-31 07:25:40

老实说,我仍然不知道您所说的“使用reflog将这些更改带到当前的本地项目状态”是什么意思。reflog仅显示给定ref的过去位置。您仍然需要合并/rebase/cherry-pick才能真正将这些更改“带到”其他任何地方。一般来说,合并是最优雅的方式。

例如:

代码语言:javascript
复制
git clone template local-project
cd local-project
git remote rename origin template-origin
# make changes and commit them
git add ...; git commit

# suppose changes have been made in the template (work as normal there)
# back in local-project, merge the template's master branch:
git pull template master

一点也不复杂。只需将分支与您想要的更改合并。这可能是显而易见的,但请确保您永远不要从另一种方式-从本地项目到模板。

当然,在适当的时候摆弄你的遥控器。你可能想要为local-project创建一个新的“源”,指向它的中心(例如,github托管的)存储库,对template也是如此。如果愿意,您还可以将local-project中的远程模板指向中央模板存储库,而不是本地克隆。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5487884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档