Github与早期版本合并

时间:2017-07-15 02:50:43

标签: git github branching-and-merging

队友分支实施新功能并将其与主分支合并,然后其他人的版本覆盖了他的。

从那时起,我们已经为项目添加了几件东西而且无法恢复,但我们需要他的工作。

有没有办法与以前的版本合并?
基本上,我如何与Master Branch中的早期版本合并?

3 个答案:

答案 0 :(得分:0)

只需使用git cherry-pick

git checkout master
git cherry-pick <old-commit-sha1>

这将重新应用该提交引入的更改到当前的HEAD。

如果分支有几个提交,you can cherry-pick them in one command too

答案 1 :(得分:0)

如果您知道commitID(哈希码),那么它很简单。只需在他的回答中使用@VonC建议的git cherry-pick。您可以按照以下方式实现它。

  • git fetch origin - &gt;或者使用您的回购品名称更改原产地。
  • git checkout -b newBranch - &gt;我正在建立一个新的安全分支。
  • git reset --hard origin/branchInServer - &gt;现在,新分支应该完全按原样更改branchInServer。
  • git log --pretty=format:"%h | %an | %ad | %s" --date=iso --graph -30 - &gt;要在你的分支中打印最后30个提交,包括图形,日期,评论等。这里应该打印你朋友的提交和覆盖提交(如果需要,可以更改30)
  • git branch | grep "^*" - &gt;确保分支。

现在,只是认为这是你的输出

* 1112 User1 "last commit in this branch"
* 2234 User2 "second last commit"
* 3344 User3 "OVERWRITTEN commit"
* 4455 User4 "some commit between"
* 0101 Friend1 "Friends commit"
* 5577 User5 "some commit before"
* 9911 User5 "some commit before"

如果这是您期望的输出,请执行以下操作。

  • git reset --hard 4455(在重写前重置为提交)

OR

  • git reset --hard 9911(重置为之前的任何提交和挑选 你的)
  • git cherry-pick 0101

注意:
如果您不知道要在朋友的提交中获取git日志的数量,请执行此操作。 git log --pretty=format:"%h | %an | %ad | %s" --date=iso --graph | grep "Frend'sName"

答案 2 :(得分:0)

您可以在合并命令之前获取文件内容

git cat-file -p COMMIT:PATH

然后从那里复制代码