Git Merge无法正常工作

时间:2014-02-04 00:29:00

标签: git

我对Git比较陌生,我在合并一个分支时挂了,我和我的主分支一起创建了一个文件。这是我在终端输入的内容:

chris@chris:~/GasGuruWebApp$ git branch
  08cdec3bcd62e683f250f9bb1471312f19d01e40
* master
chris@chris:~/GasGuruWebApp$ git checkout 08cdec3bcd62e683f250f9bb1471312f19d01e40 
Switched to branch '08cdec3bcd62e683f250f9bb1471312f19d01e40'
chris@chris:~/GasGuruWebApp$ git add app/views/allcomplications.scala.html
chris@chris:~/GasGuruWebApp$ git commit -am "added complications"
# On branch 08cdec3bcd62e683f250f9bb1471312f19d01e40
nothing to commit, working directory clean
chris@chris:~/GasGuruWebApp$ git push -u origin 08cdec3bcd62e683f250f9bb1471312f19d01e40 
host's password: 
Branch 08cdec3bcd62e683f250f9bb1471312f19d01e40 set up to track remote branch 08cdec3bcd62e683f250f9bb1471312f19d01e40 from origin.
Everything up-to-date
chris@chris-870Z5E-880Z5E-680Z5E:~/GasGuruWebApp$ git checkout master
Switched to branch 'master'
chris@chris:~/GasGuruWebApp$ git merge 08cdec3bcd62e683f250f9bb1471312f19d01e40 
Already up-to-date.
chris@chris:~/GasGuruWebApp$ ls app/views/
complicationform.scala.html  index.scala.html  interactive.scala.html  main.scala.html  newvitalsign.scala.html  patientmonitor.scala.html  vitalsignform.scala.html

正如你所看到的,我认为我在分支'08cdec3bcd62e683f250f9bb1471312f19d01e40'上添加的文件不存在。

非常感谢任何见解。

2 个答案:

答案 0 :(得分:3)

08cdec3bcd62e683f250f9bb1471312f19d01e40通常是指提交,而不是分支。如果此提交是在不同的分支上进行的,请尝试:

git cherry-pick 08cdec3bcd62e683f250f9bb1471312f19d01e40

看起来你可能已经自己命名了一个分支,我建议使用更人性化的名称。

也可以签出旧提交,根据该状态创建分支:

git checkout (hash)
git checkout -b newBranchName
git add (files)
git commit -m "did stuff"

当您需要开始处理旧版本而不涉及最近的提交时,这会更有用。

答案 1 :(得分:1)

您创建了一个也恰好是提交ID的分支:

  

chris @ chris:〜/ GasGuruWebApp $ git checkout 08cdec3bcd62e683f250f9bb1471312f19d01e40      切换到分支'08cdec3bcd62e683f250f9bb1471312f19d01e40'

但是当你运行git merge 08cdec3bcd62e683f250f9bb1471312f19d01e40时,它会将其解析为提交ID 08cdec3bcd62e683f250f9bb1471312f19d01e40,然后再将其解析为分支名称。

因此,您收到“已经是最新”的消息,因为您的历史记录中已存在该提交ID。

解决方案是使用与提交ID不重叠的更具描述性的分支名称。