Gitでマージを早送りできないのはなぜですか?を使用して強制しようとすると--ff-only
、「致命的:早送りできません。中止します」というメッセージが表示されます。には大きな利点があることに気づきましたがmerge --no-ff
、なぜ今できないのか戸惑ってい--ff-only
ます。
6 に答える
git pull --rebase
。他のソリューションとは異なり、宛先ブランチの名前を知る必要はありません。
アップストリームブランチが設定されていない場合は、試してくださいgit pull origin <branch> --rebase
(コメントの@Rickへのクレジット)
ブランチは、マージしようとしているブランチに直接基づいていません。たとえば、ブランチにない宛先ブランチに別のコミットが追加されました。したがって、早送りすることはできません(早送りでは、ブランチに宛先ブランチが完全に含まれている必要があるため)。
宛先ブランチ(git rebase <destination branch>
)の上にブランチをリベースして、コミットが早送りされるようにコミットをやり直すか、通常のマージを行うことができます。
- もしも
git pull
トリックを実行しません。現在の変更と、元のブランチのプルから生じる変更の両方をマージする場合は、次のようにします。-
git merge origin/BRANCH_NAME
- その後、マージの競合がある場合はそれを解決し、その日に実行します。
git pull --no-ff
->--no-ffで早送りをオフにします
これは、早送りのみのオプションを有効にしているためです。ここで重要なのは、ブランチからプルするとローカルgitにマージコミットが作成され、早送りのみのオプションではプル時にマージコミットを作成できないということです。
大規模なチームの場合、多くの場合、プルからのコミットごとに、競合のリベースと解決を行うことになります。
gitlocalconfigファイルからff=only行を削除することをお勧めします。
$ cd to-my-project-root-dir
$ nano .git / config
[pull]
ff = only // remove this line
rebase = false
git pull origin master
ローカルブランチでを実行しているときにこれを取得した場合は.gitconfig
、メモ帳(通常はC:\ Users \ Mynameに隠されています)で開き、これらの2行を追加します
[pull]
ff = no
設定を保存してgit pull origin master
再試行してください