3131


作業開始前に全てのリモートブランチやタグを完全に同期し、トラッキングしているローカルブランチも`fast-
forward`できる範囲で同期したいのですが、`git pull --all --prune --ff-
only`を実行しようとすると以下のエラーが出てしまいます。

[code]

    $ git --version
    git version 2.2.1
    
    $ git pull --all --prune --ff-only
    error: unknown option `ff-only'
    usage: git fetch [<options>] [<repository> [<refspec>...]]
       or: git fetch [<options>] <group>
       or: git fetch --multiple [<options>] [(<repository> | <group>)...]
       or: git fetch --all [<options>]
    
        -v, --verbose         be more verbose
        ...
    
[/code]

やりたいことは、

  * 全てのリモートリポジトリについて、リモートブランチとタグを、削除も含めて完全に同期する
  * 全てのローカルブランチについて、追跡しているブランチが`fast-forward`でマージ可能ならマージして同期する
  * リモートブランチの移動・削除以外について安全（ローカルブランチの削除や破壊的移動が起きない）

です。これを正しく行うにはどうしたら良いでしょうか？ できるだけ簡潔に実行したいです。


CC BY-SA 3.0
2015-01-05T05:21:30.120
3100
2015-01-17T05:57:37.707
2015-01-17T05:57:37.707
2988
2988
question
git
全てのリモートリポジトリをfast-forward可能な範囲で同期したい


エラーを見る限り、オプションスイッチが廃止されたのではないでしょうか。 Git2.0以降ではコンフィグの設定でFast forward
onlyの設定ができるようです。

  * <http://qiita.com/massa142/items/16868ed6657831d69411>


CC BY-SA 3.0
2015-01-05T05:27:21.777
3101
2015-01-05T05:27:21.777
452
3100
answer


やりたいことを実現するための回答ではありませんが、pull は fetch のオプションより merge
のオプションを先に指定する必要があります。なので、次のようにするととりあえずコマンドは通るようになります。

[code]

    git pull --ff-only --all --prune
    
[/code]

ただ、これでも

> 全てのローカルブランチについて、追跡しているブランチがfast-forwardでマージ可能ならマージして同期する

を実現することはできないと思います。チェックアウトせずにローカルブランチへマージすることはできなかったように思うので。


CC BY-SA 3.0
2015-01-05T11:17:02.970
3131
2015-01-05T11:25:37.737
2015-01-05T11:25:37.737
2494
2494
3100
answer