我想选择特定的提交集来挑选到新分支。
main-branch
* commit8
* commit7
* commit6
* commit5
* commit4
* commit3
* commit2
* commit1
Run Code Online (Sandbox Code Playgroud)
我只想创建一个包含选定提交的发布分支。
release-branch
* commit7
* commit6
* commit4
* commit2
* commit1
Run Code Online (Sandbox Code Playgroud)
是否可以为所需的提交关联一个标签,并编写一个脚本来用特定标签挑选提交?
我正在尝试使用 删除提交列表git rebase -i HEAD~19。我过去曾成功地使用过此方法,但是当我尝试运行然后退出vim而不进行任何更改(:q!)时,我收到此错误:
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git cherry-pick --skip'
interactive rebase in progress; onto dd0b851
Run Code Online (Sandbox Code Playgroud)
我不是在挑选,也不知道为什么我会遇到要跳过的错误。
我给你一个简单的问题GIT大师:
在GIT手册页中,我有这个
man git-cherry-pick
...
git-cherry-pick - Apply the changes introduced by some existing commits
...
Run Code Online (Sandbox Code Playgroud)
我的疑问是:当我选择提交到另一个分支时,此提交被移动到另一个分支或复制(应用于两个分支)?
我正在开发一个带有Master分支的项目,当然:P和多个发布分支随着时间的推移而创建.我正在使用的版本控件是Git,我正在寻找一种方法,将一个版本分支中的错误修复(例如)应用于其他版本,如果可能的话.即..
--------------------------Master
| | |__v3
| |__v2
|___v1
|____bugfix
Run Code Online (Sandbox Code Playgroud)
如果我修复了v1中发现的bug,并且需要在v2和v3中应用相同的修复(并且只修复),有没有办法可以在Git中方便地执行此操作?
我是Git的新手,但我认为我可能能够奇瑞 - 选择提交并应用它,但我想知道分支是否需要在层次结构中直接相关?是否有可能从v1下的'bugfix'到v2和v3进行挑选或修改?(或v3到v2等)Afaik,rebase将重播所有提交,所以我认为樱桃选择是我正在寻找的,但我不确定如何实现这一目标.帖子我看到从孩子到父母分支的樱桃挑选.是我试图做的可能吗?
干杯.
我试图通过rebase/cherry-pick删除最后两次提交.调用后git rebase HEAD^^^ -i,我只留下必要的承诺(把一切都达到HEAD^^,所以我下降HEAD^和HEAD).
在git push我看到以下内容之后:
! [rejected] dev -> dev (non-fast-forward)
error: failed to push some refs to 'git@bitbucket.org:XXXXXX/YYYYYYYYY.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)
但git pull只是快速前锋和前HEAD提交.所以,我最终得到了我的开始.我究竟做错了什么?
我有一个本地工作流程
例如,一种方法可以做到这一点:
git checkout local
git checkout -b 123-my-feature
git rebase -i master
Run Code Online (Sandbox Code Playgroud)
在交互式 rebase 编辑器中,删除消息不以 #123 开头的所有提交。这留下了一个特性分支 123-my-feature,它只包含来自问题 #123 的提交。
稍后,在分支 123-my-feature 已经存在之后,如果消息以 #123 开头,则还需要选择/复制本地上的后续提交到 123-my-feature 分支。这也可以通过交互式 rebase 或单独的cherry-picks 实现。但是过程很繁琐。
有没有办法用cherry-pick来做到这一点,并通过提交消息自动过滤?
例如
git checkout master
git checkout -b 123-my-feature
git cherry-pick master..local --commit-message-begins-with="#123"
Run Code Online (Sandbox Code Playgroud)
或者甚至是一个交互式的cherry-pick,我可以在其中手动删除不以“#123”开头的提交。
如果有另一个命令可以实现这一点,为什么不呢。不一定非得挑剔。
我需要挑选一系列提交,但是失败了,因为在这个范围内,我合并了一些分支。是否可以做到没有冲突?
我在为工作找到正确的 git 命令时遇到了一些问题。
我工作的地方目前正在切换源代码控制(TFVC -> Git)。但是,TFVC 中的旧版本仍然需要不时修复错误。
我通过使用一些 PowerShell 脚本创建构建来处理这个问题,以确保我的“tfvc-merge”分支包含这些更改。
所以这就是我之后所做的。
我试着把它画出来。所以基本上,拉取请求中的空提交将在我的绘图中具有 1 和 2 的父项。
我一直在四处寻找,几个小时没有找到正确的方法来做到这一点。因此,如果有一个提示可以为我指明正确的方向,那就太好了。提前致谢。
注意:这是我身边的错误.我挑选了父哈希.请参阅本update节.
原始问题:
我vmu_hw_test在分支"test_imu"中有一个文件,其变化类似于下面所示
if( g_imu_spi.readFromFifo() == 0)
{
//Find local maxima and minima event
g_imu_spi.compute_event();
//compute the euler
g_imu_spi.compute_euler();
//From the average values compute the max
//g_imu_spi.compute_Max();
g_imu_spi.compute_Max(buffer);
}
Run Code Online (Sandbox Code Playgroud)
该if提交中引入了声明和删除评论.
和master分支有
//Find local maxima and minima event
g_imu_spi.compute_event();
//compute the euler
g_imu_spi.compute_euler();
//From the average values compute the max
g_imu_spi.compute_Max(buffer);
Run Code Online (Sandbox Code Playgroud)
问题
1.正如我所读到的,cherry-pick只需进行一次提交更改并应用它.如果分支不同(在提交历史记录中)是否有问题
2.微软文档说不要挑选.樱桃挑选是不好的做法?
3.为什么樱桃选择失败?(更新:没有.)
Git Diff
对于最新的提交test_imu.c
diff --git a/Src/vmu_hw_test.c b/Src/vmu_hw_test.c
index 14b0a67..1954d64 100644 …Run Code Online (Sandbox Code Playgroud) 我有一个暂存分支,在其中我对某个功能进行了一些提交,而我需要从master分支进行这些提交。我尝试使用来从master分支中签出一个分支git checkout -b branch_name,然后使用
进行了我想要从登台分支中挑选的第一笔提交
git cherry-pick hash。出于某种原因,与樱桃采摘有冲突,但是该冲突包括从先前提交到樱桃采摘的更改,为什么呢?
我们刚刚从Subversion切换到Git.
今天早上出现的问题是我们挑选了一个从一个分支到主人的提交,所以maser会有bug修复.然后我们将master合并回分支.
当我们尝试编译时,所选择的提交中的所有添加都在代码中两次.
樱桃挑选的提交包括添加几行代码,最后在代码中两次.幸运的是,它们是完整的函数,所以它抛出了编译器错误.
从未提出过冲突.
我们如何避免这种情况.这是一个主要问题.
谢谢.
我有两个分支主和主干。
我在本地创建了另一个分支,git checkout -b new_branch origin/master用于在该分支中获取主代码。
我在这个新分支中添加了一些更改并推送为:
git add --all
git commit -m "my custom message"
git push origin new_branch
Run Code Online (Sandbox Code Playgroud)
现在我只需要在我的主干分支中合并这个提交 id 更改(在分支 new_branch 中)。
我知道git cherry-pick。任何人都可以确认以下程序是否正确:
第 1 步:我必须使用git checkout trunk
第 2 步切换到主干分支:现在使用git cherry-pick MY_COMMIT_ID
第 3 步合并提交 ID :现在使用git push origin trunk
第 4 步将这些更改推送到主干:现在git pull origin trunk在远程服务器中使用
悬崖笔记版本
git cherry-pick ABC..XYZ。我想ABC被包含在我对当前分支的提交中。我必须先参考提交ABC吗?长版
master,Apple和NewApple。Apple建立在一个非常旧的版本上,master但只适用于十几个文件,这些文件是在文件夹中实现的,其余文件master并未真正触及。Apple有提交ABC,BCD和XYZ。这些是Apple. 请注意BCD和XYZ. These commits were NEVER commited tomaster`之间大约有 10 次提交NewApple,它是从master具有较新提交的较新版本分拆出来的。Apple到NewApple像这样git cherry-pick ABC..XYZABC没有包含在内。在它之后的所有东西都XYZ被放到了NewApple.ABC不引用Apple. 恐怕如果我这样做了,我将无法获得所有提交,Apple或者它会尝试在master新版本的 master 之上随机合并较旧的提交。cherry-pick ×13
git ×13
rebase ×3
git-commit ×2
branch ×1
commit ×1
duplication ×1
git-add ×1
git-branch ×1
git-rebase ×1
github ×1
merge ×1