我想把我已经承诺掌握的最后几个提交移动到一个新的分支,然后在完成这些提交之前把主人带回去.不幸的是,我的Git-fu还不够强大,有什么帮助吗?
即我怎么能从这里走出来
master A - B - C - D - E
Run Code Online (Sandbox Code Playgroud)
这个?
newbranch C - D - E
/
master A - B
Run Code Online (Sandbox Code Playgroud) 我有以下存储库布局:
我想要实现的是从工作分支中挑选一系列提交并将其合并到集成分支中.我是git的新手,我无法弄清楚如何正确地做到这一点(在一次操作中不提取合并的樱桃选择提交范围)而不会弄乱存储库.关于这个的任何指针或想法?谢谢!
我知道如何解决这个问题:
user@host$ git pull
Updating 9386059..6e3ffde
error: Your local changes to the following files would be overwritten by merge:
foo.bar
Please, commit your changes or stash them before you can merge.
Aborting
Run Code Online (Sandbox Code Playgroud)
但是,是不是有办法让git pull做stash和pop舞蹈给我吗?
如果此命令具有不同的名称,则可以.
创建shell别名git stash; git pull; git stash pop是一种解决方案,但我寻找更好的解决方案.
我有一个从GitHub分叉的存储库,它对它做了一些修改.但是,在某个提交中,更改了一些文件,我想提交一个pull-request,将其他修改后的文件保留在请求之外.
拉请求合并所有提交,还是我需要做一些特殊的事情来隔离这个提交?
我有两个分支(和主人).分支2基于分支1是基于主.我已经提交了分支1进行审核,它有一些更改,我将其中一些更改重新编入历史记录并将结果合并到主数据中.
现在我需要在master上重新设置Branch 2以准备审查/合并.
问题是分支2仍然包含分支1的原始提交,它不再存在,因此git会混淆.我尝试使用rebase -i删除Branch 1的原始提交,但是Branch 2的提交不基于master-before-branch-1.
我需要做的是采取分支2,删除一些提交,并在一次操作中仅重新设置master上的剩余提交.但我只知道如何在两个不同的步骤中完成这两项操作.
我怎样才能将我的分支部分重新分支到另一个分支,删除所有不具有共同祖先的提交,除了我指定的那些(例如从HEAD~2起)?
这是当前状态:
master new branch 1
- - - - - - - - - - - | - - - - - - - - -
\
\ branch 1
\ _ _ _ _ _ _ _
\
\ branch 2
\ _ _ _ _ _ _ _
Run Code Online (Sandbox Code Playgroud)
我最终想要的是:
master new branch 1
- - - - - - - | - - - - - - - - …Run Code Online (Sandbox Code Playgroud) 假设我有以下场景:
o (master)
/ o--o (WIP1)
/ /
o--o--o--o--o--o (WIP2)
(X) \
o--o (WIP3)
Run Code Online (Sandbox Code Playgroud)
是否有一个git命令创建一个新的分支,以便它包含分支X后的子树?我想执行"大规模的反思",我希望三个WIP分支在主人身上重新定位.
我知道我可以用一些Bash脚本来做到这一点,但我想知道如何使用git命令.
假设我有两个分支,master并且new_feature
我应该在一个特定的功能上工作,我认为这个功能将是其中的一部分new_feature,我检查了specific_feature分支机构的new_feature分支,就像这样
git checkout -b specific_feature
Run Code Online (Sandbox Code Playgroud)
现在我在这个specific_feature分支中做了很多开发,并将upstream/new_feature它合并了几次以获得远程更改.
现在,我才知道,我specific_feature应该已经一发不可收拾的master不是new_feature.(new_feature分支尚未准备好被推送)
有没有办法可以把我的specific_feature分支和new_feature分支之间的差异,并将这些更改应用到新的分支说specific_feature_master(分支出主)?
我想对我的fork进行一些私有的修改.我该怎么做呢?
有一个问题在这里关于推动单个提交,答案是挑选您希望从私人分支推,并把它们主枝上的提交.但是,我想要更多的东西,在推动时忽略某个提交.
我有两个分支:
develop
myFeature
Run Code Online (Sandbox Code Playgroud)
我在开发时错误地做了一次提交,应该在myFeature上.
提交尚未被推送.
如何将此提交从开发转移到myFeature?
使用时git rebase --autostash,git会自动创建一个"autostash"提交,并在成功重组后重新应用它.
但是如果重定位被中止(例如,:cq当它是交互式rebase时在Vim中使用),autostash-commit可能最终会成为悬空提交.
Git 2.9.0
有没有办法将一组顺序提交从一个(本地)分支移动到另一个(本地)分支?我搜索了很多,仍然没有找到我想做的明确答案.
例如,说我有这个:
master A---B---C
\
feature-1 M---N---O---P---R---Q
而且我已经决定最后3次提交会更好:
master A---B---C
\
feature-1 M---N---O
\
f1-crazy-idea P---R---Q
我知道我可以做到这一点,它确实有效:
$ git log --graph --pretty=oneline (copying down sha-1 ID's of P, R, Q) $ git checkout feature-1 $ git reset --hard HEAD^^^ $ git checkout -b f1-crazy-idea $ git cherry-pick <P sha1> $ git cherry-pick <R sha1> $ git cherry-pick <Q sha1>
我希望有一个更简洁的方法来做这件事,可能还有git rebase,虽然我运气不好.
任何见解将不胜感激.
谢谢,
杰米
git ×11
rebase ×2
branch ×1
diff ×1
git-branch ×1
git-commit ×1
git-merge ×1
git-pull ×1
git-stash ×1
github ×1
pull-request ×1