使用git reset --soft,标记提交,以便稍后将*下降*下降*

技术标签: Git.  git-reset.

寻找南瓜犯规,以便公开面对的项目没有毫无意义的提交消息,如“temp”或“temp123”。

我正在寻找一种使用方法 git reset --soft HEAD~5但是,而不是随机挑选第5号,我想回到Git日志,并找到与模式不匹配的所有提交,一旦我击中图案,我会停止模式。所以让我们说出我的 git log 提交消息看起来像:

temp123
fooGit
temp
fml
temp24
tmp69
tttoday
publish/release:xyz

所以我会挤压前7名最新的提交,但留下了“下面的一切” publish/release:xyz.

出于相当复杂的原因, git merge --squash 从公众面临的分支发布不会为我工作,因为我最终删除或重命名私有分支的项目中的一个项目,所以没有太多的合并冲突。在我尝试几种方式之后,在我看来,它最好推向公众面对的分支--f,而不是那种方式担心冲突。

我认为我的案件中更好的方法是南瓜,如此:

# on private "dev" branch
# make a bunch of changes, rename files, yadda yadda
git add . && git add -A && git commit -am "temp" &&
git checkout -b squash_branch  # we do squashing on this branch to be safer
git reset --soft head~15 # apparently this undoes commits for the last 15 commits
git commit -am "A serious commit message"
git push -u public master -f  # overwrite public master

这样,我从不必须解决公众面对的分支机构和私人开发分支机构之间的冲突,这可能是我的经验中的超级毫无意义和烦恼。

但是,我试图解决的问题与上面的第15次有关。我只是猜测有多少致力于“南瓜”。我宁愿知道南瓜的确切数字。

也许我可以做一个没有拟合某种模式的git提交消息的所有提交的壁球?所以当我运行南瓜时,我创建一个带有特定模式的提交消息,让我们说这是“XYZ”。我可以跑步吗? git reset --soft HEAD~(some git commit pattern matching to find the count)?

还有一个问题。做南瓜后(git reset --soft)在这一点上 squash_branch,我应该将该分支合并回私人 dev 分支?

看答案

可以 找到伯爵,但这有点危险,因为它将是 错号码 如果链中存在合并提交(这里未示出):

git rev-list --count HEAD^{/publish/release:xyz}..HEAD

符号 rev^{/文本} 意思是“从给定的开始 rev,搜索每个提交消息(一个la git log --grep)对于给定的 文本“。所以第一个表达式与提交相匹配 publish/release:xyz 在其提交的消息中。这 .. 语法然后使用该提交的ID 消除 该提交和早期从名称选择的提交集中提交 HEAD。这 --count 然后给我们一个剩余的提交计数。因此,如果您的图表如下所示:

...--o--*--o--o--o--o   <-- HEAD

在哪里 * 是犯罪的 文本 在其中,这种丢弃了提交 * 和其他另外的左提交,离开四个决赛 o 提交节点 HEAD 要点。这 --count 然后计算这四个提交和打印 4.

但总体而言,这是一个糟糕的策略。首先用一个标记点​​来更好 分支或标签名称。分支机构或标签名称标识提交 指着它。而不是试图找到提交 * 按模式,只要在制作它时标记它:

git tag xyz

现在你有这个:

     tag:xyz
        |
        v
...--o--*--o--o--o   <-- HEAD -> dev

xyz..HEAD 让你成为正确的提交,你可以 git reset --soft xyz 制作分支标签 dev 点回来 *:

     tag:xyz
        |
        v
...--o--*   <-- HEAD -> dev
         \
          o--o--o   [only findable via reflogs]

完成此操作后,只需删除标记。

(再次,你可以使用一个 分支或标签 姓名;使用你更喜欢的;我用标签说明了这个标签名称不是 应该 要移动,而分支名称 移动。他们搬家了 自动地事实上,每当你的时候 git checkout 分支然后制造提交或使用 git reset。标记名称指向一个特定的提交,只是留在那里。)


请注意,顺便说一下,您可以在创建标记时使用搜索符号:

git tag xyz HEAD^{/publish/release:xyz}

也就是说,你识别 哪个提交标记 创建标记名称时。 (实际上,分支名称也是如此。)然后你可以看到此标记 git log --decorate和图形观众喜欢 gitk 一般来说,您也有哪些标签。

(搜索和标记是一种更好地过渡的好方法,至少在理论上,习惯。)


智能推荐

git reset --hard | soft | mixed的区别

首先,理解git保存文件内容的3个区域概念。 工作区   工作区,顾名思义就是我们开发的时候就在工作区,当我们对文件有修改、新增的时候。通过git status查看文件状态如下:     就是文件在工作区发生了更改或者是增加了新的文件。通过git status之后红色文件提示的部分就是新增或发生更改的文件。 暂存区    这个部分就是执行过git add . 命令之后的文件所处的区域。通过git ...

git reset --hard --soft --mixed的区别?

介绍 网上看了好多,都是从原理入手,介绍HEAD、index、Working Copy、Flow等一堆名词往上怼,看得我云里雾里的,不如动手实践一下,看的更加清楚明了。 一、准备工作(初始状态) 1.创建版本库,进行了两次提交,每次提交两个文件。 2. 修改1.1,2.1并添加到暂存区,修改1.2,2.1保留在工作区,添加3.1,如下图: 参数一:–hard 执行 git reset ...

git reset --soft, mixed, hard的区别

git reset --soft 撤销最后一次的git commit, 返回的是上一次提交后的修改后的git add后的结果, git reset --mixed git reset的默认参数, 撤销最后一次的git commit和git add, 返回的是上一次提交后的修改后的还未git add后的结果。git reset --mixed相当于git reset --soft后加上git res...

Git reset命令的使用

Git reset命令的使用  weiweilong 关注  0.1 2017.03.29 16:21* 字数 673 阅读 13493评论 1喜欢 8 Git reset 命令有三个主要选项:git reset --soft; git reset --mixed; git reset --hard; git reset --soft 将...

git reset --hard --soft 与 git revert 的作用

1、git reset --hard --soft 与 git revert 的作用: 文件从暂存区回退到工作区 版本回退 2、git简单的分为三个区域 : 1、工作区(working directory) 2、暂缓区(stage index) 3、历史记录区(history) git reset --hard xxx hard (修改版本库,修改暂存区,修改工作区) –hard HE...

猜你喜欢

git使用教程8-pycharm 使用 Reset 回滚到某次 commit 提交

前言 当我们用 pycharm 提交代码的时候,每天都要 commit 提交的内容,有时候发现后面写的代码还不如前两天的稳定。 这时候想把代码回退到某次 commit 提交,可以使用git的 reset 功能实现。 reset 回滚有三种类型: Mixed 此为默认方式 回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响) soft 回...

git reset --soft驻颜术(恢复文件之前的状态)

前言 这是小明结婚生子后,老婆小红要整容的故事。 了解整容方案 回到过去,找到以前的样子:git reset --soft 整容成之前的样子:git checkout 回到未来:git reset --soft ps:这里 我理解成一次commit点,记录了当前索引的指向。 修改后,工作目录变化。git add后将修改索引指向(新文件/内容)。再次git commit后,将当前commit点与索引...

关于git reset中soft mixed hard的理解

1 soft:重置到指定的commit成功后的状态,而后面的commit内容和工作区的内容,将作为绿色内容-未提交 (1) (2)reset到测试1 (3)测试1后的内容显示为绿色   2 mixed:完全保留工作区,彻底清除暂存区 3 hard:重置到指定commit后的数据,后面的commit以及工作区的内容将被清空 (1) (2)reset hard...

The Design of Everyday Things 读书笔记

  近日抽闲读了老师推荐已久的这部设计史上的著作——唐纳德诺曼的The Design of Everyday Things,中文译名是《设计心理学》,全套共四部,我读了第一部,总的感觉就一个词——恍然大悟!被作者的细心以及擅于思考所折服,他能够抓住生活中很多人习以为常的不方便和小错误,从而解释糟糕的设计可能带给我们的麻烦甚至灾难。...

博客,记录一点一滴,终将汇聚成星辰大海

博客,记录一点一滴,终将汇聚成星辰大海 目录 写博客的好处: 要怎么写博客: 写博客的好处: 【1】我认为写博客能充当自己的资料库,你能随时翻阅你之前学的所有东西,你是否有这样的经历,明明自己之前学过这方面的内容,而且还挺熟悉,但怎么都记不起来具体细节,这时候你的资料库就能最快帮你回忆起你学的东西。 【2】把自己学到的经验,分享出来,自己之前踩到的所有坑都记录下来,当读者读你的博客时,就能少走一些...

问答精选

Applying stats.percentileofscore to every row by column

df= I need a new column with the percentile score for each element with respect to the column. The final answer should look like this. I want the output of the stats.percentileofscore() function to be...

C - Creating node with multiple children by function - segmentation fault

I want to create tree with multiple children and create every node with a function. Here is my structure for node: And here is my function to create new node (with four children): When I run this func...

How to get all secrets in one call Azure key vault

I am using sample code explain here https://github.com/Azure-Samples/app-service-msi-keyvault-dotnet but they only explained how can we get single secrete not list of secrete. so to get all secrete I'...

increase eclipse IDE font size

I am using Eclipse I would like to increase the font size of the IDE, not just the font of the editor. Is there any way I can do that? I haven't been able to find a solution for this yet. you can try ...

Generating Guid by database automatically

It regards Entity Framework 6 but maybe it isn’t related to the version. I have some class which has Guid Id but by inheritance. Right now I would like to change this model to auto generate Id b...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答