我想在我挑选到仓库之前确认 SHA 是否是由其他人挑选的?如何查明某人是否已经挑选了 SHA?
假设我在 master 中做了很多改变。但是,我想挑选出所有不在 branch:release-5 中的东西到它上面。
我需要挑选一系列提交,但是失败了,因为在这个范围内,我合并了一些分支。是否可以做到没有冲突?
我有两个具有类似架构的存储库:
repo1:
- file1
- file2 *(this file is non-existent in repo2)
- folder
- file3
- file4
- file5
Run Code Online (Sandbox Code Playgroud)
和
repo2:
- file1
- folder
- file3
- file4
- file5
Run Code Online (Sandbox Code Playgroud)
Repo1 对 repo2 来说是远程的:
git remote add repo1 http://repo1.git
Run Code Online (Sandbox Code Playgroud)
我需要挑选从 repo1 到 repo2 的提交
git cherry-pick <commit_repo1>
Run Code Online (Sandbox Code Playgroud)
通常一切正常。但是,如果我想对不存在的文件进行挑选更改,我就会遇到问题。
变化如下:
folder/file4 | 9 ---------
folder/file5 | 5 -----
file1 | 5 -----
file2 | 5 -----
4 files changed, 24 deletions(-)
Run Code Online (Sandbox Code Playgroud)
最后:Cherry-pick 合并从不存在的文件更改为 file3。仅用于删除更改
如果需要的文件不存在,有人知道如何避免将更改合并到错误的文件中吗?
尝试:
git cherry-pick --strategy-option …Run Code Online (Sandbox Code Playgroud) 我创建了一个名为'experimental'的分支.我切换到该分支并在那里进行2次提交.那么,如果我可以将实验的后续提交(2次提交中的第2次)合并到主分支中?
谢谢.
我对提交A中的文件进行了一些更改,然后我错误地解除了更改并继续在提交B和C中进行更改.
我希望提交A中的更改在我的文件中,但B和C中的更改也不应丢失.
假设我的分支现在在C.
我不想
$ git checkout --patch
Run Code Online (Sandbox Code Playgroud)
因为我希望文件包含我在B和C中所做的更改,并且从提交A中检出文件将在索引和工作树中重写该文件.
我不能做一个挑选,因为提交A是一个合并提交(存储库有两个贡献者,我删除了我的导师在我合并之后在后续提交中错误地做出的更改)我可能最终会得到一个如果我指定任何一个父母,那就太乱
除了手动复制文件中我想要的更改外,还有其他方法可以实现吗?
我看到有之间的连接rebase和cherry-pick一系列的提交。
我没有找到任何文章/教程来解释当一个人尝试cherry-pick多次提交时究竟发生了什么。
一些问题(我能想到的)是:
CHERRY_PICK_HEAD参考?git cherry-pick 2^..4,git 执行的操作序列是什么以及git 使用的提交之间diff究竟是什么?git cherry-pick 1..8,git 会做什么?作为标题,git cherry-pick origin/master意味着什么?这条指令如何运作?
从远程更新当前本地主分支(即从远程获取数据并与本地文件合并)时,我们可以使用以下选项:
git pull origin mastergit fetch origin master; git merge origin/mastergit fetch origin master; git rebase origin/mastergit fetch origin master; git cherry-pick origin/master但我无法理解git cherry-pick origin/master,也无法找到解释.
如果有人可以提供帮助,请先谢谢.
注意:我很好奇以下事情...当我git fetch origin master; git cherry-pick origin/master用来尝试从远程更新当前的本地主分支时,此操作会比较先前的提交并将不同的部分作为已修改的文件,因此我可以使用一个提交来包含这些修改部分.它是如何工作的?