Github与早期版本合并



一个队友分支实现一个新函数并将其与主分支合并,然后其他人的版本覆盖了他的版本。

从那以后,我们在项目中增加了一些东西,不能只是恢复,但我们需要他的工作。

有没有办法与以前的版本合并?
基本上,如何在主分支中与早期版本合并?

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

git cat-file -p COMMIT:PATH

然后从那里复制代码

只需使用git cherry-pick

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

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

如果分支有多个提交,您也可以在一个命令中挑选它们。

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

  • git fetch origin--> 或者使用存储库名称更改源。
  • git checkout -b newBranch--> 为了安全起见,我正在创建一个新分支。
  • git reset --hard origin/branchInServer--> 现在新分支应该完全按原样更改 branchInServer。
  • git log --pretty=format:"%h | %an | %ad | %s" --date=iso --graph -30--> 打印分支中的最后 30 次提交,包括图形、日期、注释等。在这里它应该打印你朋友的提交和覆盖的提交(如果需要,更改 30(
  • git branch | grep "^*"--> 确保分支。

现在,只要认为这是您的输出

* 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(在覆盖之前重置为提交(

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

注意:
如果您不知道要输入多少计数才能获得带有朋友提交的 git 日志,请执行此操作。git log --pretty=format:"%h | %an | %ad | %s" --date=iso --graph | grep "Frend'sName"

最新更新