git merge untracked branch删除代码

时间:2018-03-13 16:03:56

标签: ruby-on-rails git

我正与git的团队合作,而我的本地未跟踪 production branch缺少团队成员的代码行。

master上的tracked分支是remote/origin/master,它会显示所有代码。

使用此命令,production的本地checkedout分支为remote/origin/production

git checkout production

完成development branch之后我做了:

git checkout production
git merge development

我部署到服务器然后

git checkout master
git merge development
git merge production
git push origin master

后来我发现production branch和服务器缺少一些代码行(master没问题)

我认为这可能是因为远程分支不是trackedgit checkout --track production

然后我发现git diff master..production没有显示差异,但是分析生产分支我可以找到commit相对于development分支的合并:

git show b17832a
commit b17832ae656f1bd43ebf837934f16b7d1f6efa33
Merge: a9bd850 0873d56
Merge branch 'development'

在这里我可以找到删除的代码行

git diff a9bd850..0873d56 file.rb
diff --git a/file.rb
index e0d1d1b..2343d92 100644
--- a/file.rb
+++ b/file.rb
@@ -49,12 +49,6 @@ angular.module('sp').directive 'spPlayer', [
some text and below I can find
- my missing line of code
- is showing here

如何修复生产分支并推动变更?我对master的承诺已经被推到了遥控器上。

1 个答案:

答案 0 :(得分:1)

你提到了:

  

后来我发现生产分支和服务器缺少一些代码行(虽然主人没问题)

使用production更新本地master,然后推送到远程production(来源/制作)。

$ git checkout production
$ git merge master
$ git push origin production

更新remote master(来源/主人)

$ git checkout master
$ git push origin master

N.B。实际上在OP的评论部分讨论了这个问题。