相关疑难解决方法(0)

将现有的,未提交的工作移动到Git中的新分支

我开始研究一个新功能,经过一段时间的编码,我决定这个功能应该在它自己的分支上.

如何将现有的未提交更改移动到新分支并重置当前更改?

我想重置当前分支,同时保留新功能的现有工作.

git git-stash git-reset git-branch

2982
推荐指数
8
解决办法
61万
查看次数

Mercurial和Git有什么区别?

我一直在Windows上使用git一段时间(使用msysGit),我喜欢分布式源代码控制的想法.就在最近,我一直在关注Mercurial(hg),它看起来很有趣.但是,我无法解决hg和git之间的差异.

有没有人在git和hg之间进行并列比较?我很想知道hg和git的不同之处,而不必参加讨论.

git version-control comparison mercurial dvcs

727
推荐指数
16
解决办法
59万
查看次数

如何修复提交错误的Git分支?

我刚刚对错误的分支做了很好的提交.如何撤消我的主分支中的最后一次提交,然后进行相同的更改并将它们放入我的升级分支?

git git-commit

581
推荐指数
8
解决办法
13万
查看次数

拉动后将已提交(但未推送)的更改移动到新分支

我已经完成了相当多的工作("你的分支在37次提交之前超过了'origin/master'.")这真的应该进入它自己的分支而不是进入master.这些提交只存在于我的本地机器上,并没有被推到origin,但情况有点复杂,因为其他开发人员一直在推动origin/master,我已经撤消了这些更改.

如何追溯将我的37个本地提交移动到新分支?根据文档,似乎git rebase --onto my-new-branch master...origin/master应该这样做,但两者都只是给我错误"致命:需要单一修订". man git-rebase没有提供修改,rebase并且其示例没有这样做,所以我不知道如何解决此错误.

(请注意,这不是将现有的,未完成的工作移动到Git中的新分支如何将我的本地未提交的更改合并到另一个Git分支中的重复因为这些问题涉及本地工作树中未提交的更改,而不是具有的更改已在当地承诺.)

git

420
推荐指数
7
解决办法
14万
查看次数

如何移动某些提交基于git中的另一个分支?

情况:

  • 主人在X.
  • quickfix1是在X + 2提交

这样:

o-o-X (master HEAD)
     \
      q1a--q1b (quickfix1 HEAD)
Run Code Online (Sandbox Code Playgroud)

然后我开始研究quickfix2,但不小心将quickfix1作为源分支进行复制,而不是master.现在quickfix2处于X + 2提交+ 2相关提交.

o-o-X (master HEAD)
     \
      q1a--q1b (quickfix1 HEAD)
              \
               q2a--q2b (quickfix2 HEAD)
Run Code Online (Sandbox Code Playgroud)

现在我希望有一个quickfix2分支,但没有属于quickfix1的2次提交.

      q2a'--q2b' (quickfix2 HEAD)
     /
o-o-X (master HEAD)
     \ 
      q1a--q1b (quickfix1 HEAD)
Run Code Online (Sandbox Code Playgroud)

我尝试从quickfix2中的某个修订版创建补丁,但补丁不保留提交历史记录.有没有办法保存我的提交历史记录,但有一个分支没有更改quickfix1?

git patch commit

367
推荐指数
4
解决办法
20万
查看次数

如何轻松修复过去的提交?

我刚刚读过修改git过去提交中的单个文件,但不幸的是,接受的解决方案"重新排序"了提交,这不是我想要的.所以这是我的问题:

我偶尔会在处理(无关)功能时发现我的代码中存在错误.然后快速git blame揭示该错误已经被引入了一些提交之前(我提交了很多,所以通常它不是引入该错误的最新提交).此时,我通常这样做:

git stash                      # temporarily put my work aside
git rebase -i <bad_commit>~1   # rebase one step before the bad commit
                               # mark broken commit for editing
vim <affected_sources>         # fix the bug
git add <affected_sources>     # stage fixes
git commit -C <bad_commit>     # commit fixes using same log message as before
git rebase --continue          # base all later changes onto this
Run Code Online (Sandbox Code Playgroud)

然而,这种情况经常发生,上述序列变得烦人.特别是'互动式底板'很无聊.上面的序列是否有任何快捷方式,这可以让我修改过去的任意提交和分阶段的更改?我完全清楚这会改变历史,但我经常犯错误,所以我真的很喜欢这样的事情.

vim <affected_sources>             # fix bug
git add -p <affected_sources>      # Mark …
Run Code Online (Sandbox Code Playgroud)

git rewrite

100
推荐指数
8
解决办法
5万
查看次数

将分支分支到新提交

(这个问题是相反这一个)

我该怎么做呢?

dev            C - D
             /
master A - B 
Run Code Online (Sandbox Code Playgroud)

这个?

dev                D
                 /
master A - B - C 
Run Code Online (Sandbox Code Playgroud)

我知道当我看到答案时我会踢自己,但目前我有点卡住了......

git

81
推荐指数
2
解决办法
9654
查看次数

使用git将提交从master移到分支上

我正在努力学习如何有效地使用Git,我想知道我应该如何(良好做法/不良做法?)解决以下案例:

假设我在master中有以下提交链:

  • 初始提交
  • 承诺1
  • 承诺2
  • 承诺3

然后我意识到在最后两次提交中完成的操作是完全错误的,我需要再次从Commit 1开始.问题:

  • 我该怎么办?
  • 我可以将Commit 2和3移动到一个单独的分支以备将来参考(毕竟它们并不是那么糟糕)并继续在master上使用Commit 1吗?

git commit git-reset git-branch

61
推荐指数
1
解决办法
2万
查看次数

Git - 移动推送到不同的分支

我的老板最近决定尝试一个"增加容量"的外包小组,因为我们修改现有的应用程序以添加新功能.尽管我担心他所选择的小组似乎并没有很好地沟通,也没有提出足够的问题来真正理解和有效,但我们还是和他们一起去了.

我们将它们设置为在我们的Git存储库(托管在GitHub上)上进行协作.我们为他们创建了一个分支(TheOutsourcedBranch,我们称之为),并要求他们在这个分支中完成所有工作.

此外,我们要求他们在每天结束时推送他们的提交,以便我们可以很好地了解他们的工作速度,以及(更重要的是)他们的代码有多好.

今天他们第一次推了推.五个提交,所有这些都是主人.我正在试图弄清楚如何将他们的提交从master转移到TheOutsourcedBranch,而不会丢失他们已经完成的工作(尽管从它的外观来看,无论如何我们都不得不扔掉它).

视觉参考 - 橙色点是他们的提交,灰色是我的.

橙点是他们的承诺,灰点是我的.

我知道有很多关于变基的问题(这可能是我在这里需要做的)但我很难弄清楚哪些适用于我的具体情况.如果重要的话,外包集团和我自己是现在唯一真正使用回购的人.

提前致谢!


编辑: 我可能已找到我正在寻找的内容:使用Git将最近的提交移动到新的分支

不过,我想检查一下我的理解.在本地,我创建了一个主要的分支(TheOutsourcedBranch),它将包含所有AH.然后我将主人重置为C.主人现在包含AC.

假设这是正确的,那对我(本地)来说没问题.但是,我需要做些什么才能"强制"远程存储库(GitHub)接受我对本地事件如何发挥作用的本地视图并丢弃其历史版本?

一旦这个问题发生了,我想我可以重新解决这个问题,使其更具通用性/信息性,并减少一些毛病 - 否则它可能是一个很好的删除候选人,我猜.

git github rebase git-rebase

40
推荐指数
1
解决办法
2万
查看次数

事后创建git分支?

我怀疑我的问题的答案是相当简单的,但我是一个git新手,我的头脑在阅读所有类似的SoF问题的答案时感到困惑,这些问题似乎并不是我的问题.

这是我的问题:

我在github有一个回购,有一个分支('master'),我一直在我的本地仓库工作.在某些时候,我停止将提交重新提交给github上的主人,因为我担心他们会破坏事情.所以现在我在本地仓库中有很多提交,我想要回到github.

然而,我宁愿在github('development')上创建一个新的分支,而不是推回到master,我将所有本地提交推回到该分支(只有在它们更好之后我才会合并回master.测试).

这样做的简单方法是什么?

git version-control branch github

39
推荐指数
1
解决办法
9236
查看次数