Git pull恢复提交,也许是工作流程

时间:2013-06-26 16:25:34

标签: git version-control

我工作的公司中的一个团队正在使用git遇到麻烦。

  • 1 - 向dev1广告说一行到file.txt提交和推送。
  • 2 - 同时dev2适用于同一个文件,但不要触及相同的行。
  • 3 - Dev2提交,拉动和推动。
  • 4 - 当dev1在步骤1中拉线时,某种程度上缺失了。它被删除了。 (有时dev1会看到一条错误消息,指出无法打开编辑器来编辑合并提交消息,详见下文详述)

我不认为这是一个git bug或者什么,因为我从来没有遇到过这样的问题。我真的认为问题出在工作流程中。我认为可能是在dev2拉出后,sublime编辑器没有刷新file.txt,但这不是原因。

有人有类似的问题吗?

编辑:

我的git版本是1.7.9.5 dev1是1.7.12.4 dev2是1.7.10.4

Dev1报告了一些拉合并代码但由于编辑器无法打开而失败。我从来没有听说过拉动后编辑提交消息,这导致我this post,这说明versopm 1.7.10+打开编辑器提供合并消息后拉动。 这会导致问题吗?

编辑2

另外,dev1 git config是

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
   url = url
   fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
   remote = origin
   merge = refs/heads/master
[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path =
[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true

编辑3

提交哈希是与dev1 pull相关的所有哈希值导致的问题。 第一列是行数

git ld | nl | grep -e 9b95d03 -e 53d397d -e d6b221c -e fd73722 -e d4ae4c1 -e 2e4fe3b -e 63ac034 -e 7b20cd0 -e 81b6bf4 -e 087583c

 4  9b95d03 | 4 hours ago | Merge branch 'master' of git:repo | [dev1] ######## pulls and bazinga! Line gone.
 5  53d397d | 4 hours ago | fake msg | [dev1]
 8  d6b221c | 5 hours ago | Merge branch 'master' of git:repo | [dev2]
 9  fd73722 | 5 hours ago | fake msg | [dev1]
10  d4ae4c1 | 5 hours ago | fake msg | [dev2]  ######### line removed. [dev2] sweares he wasn't working near that feature 
16  2e4fe3b | 18 hours ago | Merge branch 'master' of git:repo | [dev2]
17  63ac034 | 18 hours ago | Merge branch 'master' of git:repo | [dev2]
18  7b20cd0 | 18 hours ago | add shadow | [dev1]
19  81b6bf4 | 18 hours ago | ajustes | [dev2]
20  087583c | 19 hours ago | add widget blog | [dev1] ######## line added

编辑4

# git log --graph --ancestry-path 087583c..9b95d03 -- assets/styles/site.css

*   commit 9b95d03ccbfbcc21269c703f07e30c4b03517d00
|\  Merge: fd73722 d6b221c
| | Author: Dev1
| | Date:   Wed Jun 26 11:19:46 2013 -0300
| | 
| |     Merge branch 'master' of git:repo
| |     
| *   commit d6b221c96c227f7577f8322d77fe56537f1a86df
| |\  Merge: d4ae4c1 fd73722
| |/  Author: Dev2
|/|   Date:   Wed Jun 26 09:53:07 2013 -0300
| |   
| |       Merge branch 'master' of git:repo
| |   
| * commit d4ae4c1c21ae1b904cf6609331459c0eca7bb774
| | Author: Dev2
| | Date:   Wed Jun 26 09:51:04 2013 -0300
| | 
| |     acabamentos resp
| |   
* | commit fd73722b1c5a9045e5de2e5fb5fc50334f66b75a
| | Author: Dev1
| | Date:   Wed Jun 26 09:51:25 2013 -0300
| | 
| |     fix menu sabotado
| |   
* | commit 787b77d2e513c9358be0d077ad37860d244c1373
| | Author: Dev1
| | Date:   Wed Jun 26 09:39:32 2013 -0300
| | 
| |     devolucao de código sabotado
| |   
* | commit cfa4b113d668a12ee784a13dc488887c7a7a59c5
| | Author: Dev1
| | Date:   Tue Jun 25 21:01:45 2013 -0300
| | 
| |     fix menus
| |   
* | commit 8037155ae0ae0089bc589a4fc7071fba825546c5
| | Author: Dev1
| | Date:   Tue Jun 25 20:45:41 2013 -0300
| | 
| |     acabamentos fix
| |     
* |   commit 64459bb5dc0284ea103c739464798f0da0e704a9
|\ \  Merge: af2f520 2e4fe3b
| |/  Author: Dev1
| |   Date:   Tue Jun 25 20:38:24 2013 -0300
| |   
| |       Merge branch 'master' of git:repo
| |     
| *   commit 2e4fe3b5a8f7efe2d6f3b15403e964134c888c7b
| |\  Merge: 63ac034 7b20cd0
| | | Author: Dev2
| | | Date:   Tue Jun 25 20:31:51 2013 -0300
| | | 
| | |     Merge branch 'master' of git:repo
| | |    
| * | commit 63ac0340faabc9defe4a45f65aeccaf3e5aba8b9
|  /  Merge: 81b6bf4 087583c
| |   Author: Dev2
| |   Date:   Tue Jun 25 20:30:57 2013 -0300
| |   
| |       Merge branch 'master' of git:repo
| |   
* | commit af2f5200269e2f3fa22ec911a14149357a8e3810
|/  Author: Dev1
|   Date:   Tue Jun 25 20:38:18 2013 -0300
|   
|       fix
|  
* commit 7b20cd0b44fddc6b594546f6d75049d1c4522119
  Author: Dev1
  Date:   Tue Jun 25 20:30:54 2013 -0300

      add shadow

2 个答案:

答案 0 :(得分:0)

你描述它的方式是不可能发生的。

如果第3步真的可能会发生:

  • Dev2提交并推送
  • 收到推文失败的消息,长篇文章提到'force'
  • dev2使用push -f

正如在文本的长未读部分中所说的那样 - dev1的提交被发送到遗忘。

但是,从历史来看,这一点必须是明显的,如果实际上有一个拉动,你必须看到一个“公共汽车站”并且两个都提交。

如果您看到它并且内容确实消失了,您必须在合并提交中看到恢复。它可能发生在文本编辑器工件,文件被更改,编辑询问tyo重新加载,告诉NO,然后最终保存旧版本。

如果合并在没有冲突的情况下自动进行,那么仍然不清楚它是如何在提交中管理的,但是对于一次投机运行来说有足够的谜团。 :)

答案 1 :(得分:0)

(反思编辑)

最后一个信息很有用,但是指示错过开始的确有助于。 让我挑选出可能的观点:

提交2e4fe3b5 D2 提交64459bb D1 提交d6b221c D2 提交9b95d03 D1

Edit3似乎表明在d6b221c处仍然存在变化。如果是这样,你必须在diff d6b221c..9b95d03中看到恢复效果,Dev1是“责怪”。 (否则提供遗漏的信息)

在这种情况下,我通常会测试重做合并(或任何操作)的工具。 如果确认了9b95d03,则意味着在其父节点上创建临时分支并请求合并,然后查看会发生什么。

作为一个更一般的说明,你们成功地在一天内创造了令人难以置信的历史混乱。我认真建议你改变战术。即使遇到没有问题的合并,我也会这么做。

您的历史应该看起来完全线性。只需停止加密git pull,然后切换到git pull --rebase和主要工作方式。至少在没有冲突的时候。特别是如果您通常在完成后正确推送补丁。 (5小时合并12小时表明)