8

'topic'というブランチをチェックアウトしました。私はまだトピックに取り組んでいますが、現在マスターブランチにある変更を含めたいと思います。だから私はこれをしました:

$ git checkout topic
$ git rebase master

その後、ファイルのマージ競合が発生しましたxyz.txt。そこで、ファイルを自分の望むものに変更し、gitで追加して、実行しましたgit rebase --continue

しかし、すぐに、同じファイルでマージの競合が発生しました。ファイルを再度修正しましたが、今回はgit reabase --skip続行する必要がありました。

ただし、同じファイルでまったく同じマージの競合が発生します。これはどのように起こっていますか?

編集:

以前は、この目的を達成するためにマスターをトピックブランチにマージしていました。それから私はリベースについて学びました。だから、それはそれと関係があると思います。


これが3回目のコミット直前のgitの状態です

$ git status
# Not currently on any branch.
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both modified:      xyz.java
#
no changes added to commit (use "git add" and/or "git commit -a")

$ git ls-files -u
100644 cbf74a88604dd4ee0afe89d7aac1d179ce75e92c 1       xyz.java
100644 52841c2b4b6cc055251d533d5b83441d1329b412 2       xyz.java
100644 c45e7c6b979ec1e20b7dd70b38698193ea235abd 3       xyz.java

$ git log --graph --pretty=format:%d HEAD master topic
*  (HEAD)
*
*  (master)
*
*
*
*
*
*
*
*
| *  (topic)
| *
| |\
| |/
|/|
* |
| *
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
| *
| *
| *
| |\
| |/
|/|
* |
* |
* |
|\ \
| * |
* | |
|/ /
| *
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
| *
| *
| *
| *
| *
| |\
| |/
|/|
* |
| *
| |\
| |/
|/|
* |
| *
| *
| *
| *
|/
*
*
4

2 に答える 2

5

git rebase --interactiveGitが履歴をリベースする方法を検証してみてください。基本コミットの上に指定された順序で適用されるコミットのリストがありますmaster

例:

pick 12345678 # This will be the first commit of your rebased topic branch
pick deadbeef
pick ffffffff
pick 01010101 # This will be HEAD after the successful rebase

時々、Gitは、コミットがブランチで本当に新しいのか、それともmaster異なる祖先を持つ(からの)既存のコミットなのかを知りません。テキストファイルからコミットを削除することで、コミットをスキップできます。

これで競合がすぐに解決されない場合は、2つのブランチ間に実際の競合があります。必ずファイルをマージし、を使用してステージングしてgit addください。その後、必ず使用git rebase --continueして先に進んでください。git rebase --skipここで役立つことが正確にわからない場合は使用しないでください。(--skip現在の競合するコミットを無視し、次のコミットを適用しようとします。これにより、後でさらに不可解な競合が発生する可能性があります)。

于 2013-01-14T15:45:48.233 に答える
0

これがどのように問題を引き起こすのか正確にはわかりませんが、問題は以前にリベースではなくマージしていたという事実から生じていると確信しています。しかし、まだプッシュしていないtopicので、リベースプロセス全体を実行します。

于 2013-01-14T15:33:31.747 に答える