我刚刚对错误的分支做了很好的提交.如何撤消我的主分支中的最后一次提交,然后进行相同的更改并将它们放入我的升级分支?
当使用-p模式git add -p
或git stash -p
每个字母代表什么?
我猜y
是肯定的,n
不是.剩下的是什么?
[Y,N,Q,A,d,/,K,J,J,G,E,?]
我有几个分支机构,我会保留某些提交,我希望不时地将其应用于我的工作副本.最初我尝试过挑选但我不希望稍后在目标分支中进行提交.
所以我做了cherry-pick
+reset HEAD~1 --soft
是否有更简单的东西像樱桃采摘到工作副本?
我需要将一个分支中引入的更改应用到另一个分支.我可以用樱桃挑选来做到这一点.但是,在我的情况下,我想应用仅与一个文件相关的更改,我不需要挑选整个提交.怎么做?
我有一个从GitHub分叉的存储库,它对它做了一些修改.但是,在某个提交中,更改了一些文件,我想提交一个pull-request,将其他修改后的文件保留在请求之外.
拉请求合并所有提交,还是我需要做一些特殊的事情来隔离这个提交?
所以我有一个提交有一个有用的代码更改,但在另一个分支上.
我想在另一个分支中将此提交应用于我当前分支上的工作副本(而不是另一个提交).
这可能吗?我该怎么做?
以为我分享这个与我之前的问题有关,但具体到工作副本: git cherry选择一个提交到另一个分支
我已经在StackOverflow上看到了不同的帖子,它们解释了樱桃的选择,但是他们的代码中的注释对于什么是分支以及什么是目录并不是非常具体.示例git checkout A -- X Y
并没有告诉我太多.
基本上我想要这个:
featureA
断master
/tools/my-tool
分支从目录合并dev
到featureA
我正在尝试进行一些更改,但我不想在这个分支中提交它们,我只想在本地拥有它们。
为此,我正在使用
git cherry-pick <hash> --no-commit
Run Code Online (Sandbox Code Playgroud)
但是,这会自动将它们添加到舞台,然后,我必须使用手动重置它们
git reset HEAD <files>
Run Code Online (Sandbox Code Playgroud)
git 没有选项可以让cherry pick 不提交,也不添加到索引中吗?
就像是:
git cherry-pick <hash> --no-commit --no-stage
Run Code Online (Sandbox Code Playgroud)
我知道这个技巧会做我想要的,但我必须在提交中指定所有文件:
编辑
也试过这个,但它也被添加到索引中。
git checkout hash -- <list of files>
Run Code Online (Sandbox Code Playgroud)
而这些文件,可能不会共享相同的公共路径。我正在尝试使其自动化
在我们的项目中,我们试图接近"官方"git工作流程,如下所示:http: //www.kernel.org/pub/software/scm/git/docs/gitworkflows.html
我们使用a master
和next
branch,从我们的主题分支开始master
,定期进行测试集成next
,如果分支完成,我们将其合并到master
.
现在有时它会发生,有一些发展topic-X
.开发人员somefile.c
在那里创建并添加他的主题所需的代码.过了一会儿,另一个开发人员继续工作topic-Y
并发现,他还需要创建somefile.c
甚至需要该文件的某些部分topic-X
- 但不是完整的文件,因为它还包含仅与之相关的代码topic-X
.他可能还需要在该文件中添加其他代码.
如果topic-X
完成并合并master
,那将很容易:我们可以topic-Y
重新定义master
以使代码可用.但是,如果这两个主题仍然不完整呢?
因为topic-X
并且topic-Y
实际上是无关的,除了这个次要的共享代码之外,somefile.c
我们如何避免将它们相互合并并仍为开发人员提供共享部分somefile.c
?
如果我们只用相关部分创建一个新的somefile.c
in 副本topic-Y
,我们发现当我们测试集成时,我们会在以后遇到合并冲突next
.还有其他选择吗?
我职业生涯的大部分时间都在使用 Perforce,并且仍在习惯 git,所以我想我要么没有意识到我的场景与以下帖子中的场景不匹配,要么我错过了一些隐式步骤对于普通 git 用户来说是显而易见的,但对我来说却不是。
\n似乎每当我精挑细选时,我最终都会得到一个没有任何更改的分支(不过这是有道理的,因为它们已经致力于掌握,对吗?\xe2\x80\x94那么我如何创建这个“主题分支”我看到有人提到了?)现在我运行了几个我不完全理解的命令(例如git remote add ...
),并且还可能将原作者的存储库与我的分叉存储库互换,所以它变得很难说是否因为我弄乱了我的环境而无法正常工作。
@Omer 的回答效果很好。然后我做了一个
\ngit reset --hard HEAD\n
Run Code Online (Sandbox Code Playgroud)\n清理。原作者合并了 PR,我同步到它:
\ngit remote add upstream git://github.com/<author>/<repo>.git\ngit pull upstream master\n
Run Code Online (Sandbox Code Playgroud)\n 出于某种原因,我想放弃我的branch_A,但我有一些文件刚刚在branch_A中提交.我想将它们添加到branch_B.我怎样才能做到这一点?
git ×12
git-commit ×2
pull-request ×2
branch ×1
cherry-pick ×1
dependencies ×1
git-branch ×1
git-fork ×1
git-merge ×1
github ×1
merge ×1