0

私が働いている会社の 1 つのチーム チームは、git に問題があります。

  • 1 - dev1 が file.txt のコミットとプッシュに行を追加するとします。
  • 2 - 一方、dev2 は同じファイルで動作しますが、同じ行には触れません。
  • 3 - Dev2 はコミット、プル、プッシュします。
  • 4 - dev1 がステップ 1 の行をプルすると、どういうわけか行方不明になります。削除されました。(以下で詳細に説明するように、マージ コミット メッセージを編集するためにエディターを開くことができなかったというエラー メッセージが dev1 に表示されることがあります)

私はそのような問題を経験したことがないので、これは git のバグか何かではないと思います。問題はワークフローにあると本当に思います。dev2がプルされた後、file.txtが崇高なエディターによって更新されなかった可能性があると思いましたが、それは原因ではありません。

誰かが同様の問題を抱えていましたか?

編集:

私の git バージョンは 1.7.9.5 dev1 は 1.7.12.4 dev2 は 1.7.10.4 です

Dev1 はいくつかのプル マージ コードを報告しますが、エディターを開けなかったため失敗したと報告しています。プル後にコミット メッセージを編集するという話は聞いたことがなく、この投稿にたどり着きました。これは、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 プルに関連するすべてのハッシュです。最初の列は行数です

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
4

2 に答える 2

0

あなたがそれを説明する方法は、起こり得ません。

ステップ 3 が実際に次の場合に発生する可能性があります。

  • Dev2 のコミットとプッシュ
  • 「force」に言及している長いテキストでプッシュが失敗したというメッセージを取得します
  • dev2 は push -f を使用します

そして、何が起こるかは、テキストの長い未読部分で述べたとおりです。dev1 のコミットは忘却に送られます。

しかし、それは履歴から明らかなはずです。実際にプルがあった場合は、「バス停」と両方のコミットが表示されるはずです。

それが表示され、コンテンツが実際になくなっている場合は、マージ コミットで復帰が行われていることを確認する必要があります。これは、テキスト エディタのアーティファクトとして発生する可能性があり、ファイルが変更され、エディタが tyo reload を要求し、NO を伝え、最終的に古いバージョンを保存します。

マージが競合なしで自動になった場合、コミットでどのように管理されたかはまだ不明ですが、1 回の投機的な実行には十分な謎です。:)

于 2013-06-26T16:39:40.813 に答える
0

(編集の反映)

最後の情報は役に立ちますが、ミススタートが実際に役立つ場所を示しています。可能性の高いポイントを挙げてみましょう。

コミット 2e4fe3b5 D2 コミット 64459bb D1 コミット d6b221c D2 コミット 9b95d03 D1

Edit3 は、d6b221c で変更がまだ存在していることを示しているようです。その場合、差分 d6b221c..9b95d03 で元に戻す効果を確認する必要があり、Dev1 は「責任」があります。(それ以外の場合は、不足している情報を提供してください)

そのような場合、私は通常、マージ (またはその他の操作) をやり直すツールをテストします。9b95d03 が確認された場合は、その親の両方に一時ブランチを作成し、マージを依頼して、何が起こるかを確認することを意味します。

より一般的なメモとして、皆さんは 1 日で歴史を信じられないほど混乱させることに成功しました。戦術を切り替えることを強くお勧めします。問題のあるマージが発生しなくても、そうします。

履歴は完全に直線的に見えるはずです。ドンをやめて、主な働き方にgit pull切り替えてください。git pull --rebase少なくとも競合がない場合。特に、通常、パッチが完了したらすぐにプッシュする場合。(12 時間で 5 回のマージがそれを示しています)

于 2013-06-26T21:29:49.570 に答える