1

Windows 7 の Git - git バージョン 1.7.3.1.msysgit.0。

私の会社では、Git リポジトリ (重要な場合は GitHub) に複数のプロジェクトがあります。

それらのいくつかについては、ローカル追跡ブランチ (例: git push -u origin mybranch、または) を作成するときに、それぞれ&を使用--set-upstream origin/mybranchしてそのブランチにプルおよびプッシュすることができ、すべて正常に動作します。git pullgit push

しかし、他のケース (他のプロジェクト) では、同じシナリオを試すときに ( git pull) をプルできますが、プッシュするときにオリジンとブランチを指定する必要がありますgit push origin mybranch。実行するだけgit pushで、目的の変更が反映されておらず、反映されていないにもかかわらず、「すべてが最新」が返されます。

以下は、それぞれ動作するリポジトリと動作しないリポジトリのgit remote show origin&からの出力です。cat .git/config

私は2つのことに気づきます:

  1. p1_branch が機能するものでは、リモートの show 出力にプッシュとプルの両方のエントリが表示されます。ただし、そうでないものについては、p2_branch にはプル エントリしかありません。しかし、それがなぜなのかわかりません。それらは同じ方法で設定されました。

  2. 1 つはマージするように設定され、もう 1 つはリベースするように設定されています。動作しないリポジトリで実行git config branch.master.rebase trueしましたが、他のリポジトリでは動作しません。それがこの違いを説明していると思いますが、それがこの問題を引き起こす可能性があるかどうかはわかりません。

作品 (project1):

$ git remote show origin
* リモート原点
  取得 URL: git@github.com:MyCompany/project1.git
  プッシュ URL: git@github.com:MyCompany/project1.git
  HEAD ブランチ: マスター
  リモート ブランチ:
    マスター追跡
    p1_branch 追跡
  「git pull」用に構成されたローカル ブランチ:
    マスターがリモート マスターとマージする
    p1_branch がリモート p1_branch とマージ
  「git push」用に構成されたローカル参照:
    マスターがマスターにプッシュ (最新)
    p1_branch が p1_branch にプッシュ (最新)

$ 猫 .git/config
[芯]
        -- 両方のリポジトリで同じ --
【リモート「オリジン」】
        フェッチ = +refs/heads/*:refs/remotes/origin/*
        URL = git@github.com:MyCompany/project1.git
[ブランチ「マスター」]
        リモート = 原点
        マージ = refs/heads/master
[ブランチ "p1_branch"]
        リモート = 原点
        マージ = refs/heads/p1_branch

動作しません (project2):

$ git remote show origin
* リモート原点
  取得 URL: git@github.com:MyCompany/project2.git
  プッシュ URL: git@github.com:MyCompany/project2.git
  HEAD ブランチ: マスター
  リモート ブランチ:
    -- 追跡されたブランチ エントリの束をカット --
    マスター追跡
    ...
    p2_branch 追跡
    ...
  「git pull」用に構成されたローカル ブランチ:
    マスターはリモート マスターにリベースします
    p2_branch はリモート p2_branch にリベースします
  「git push」用に構成されたローカル参照:
    マスターがマスターにプッシュ (最新)        

$ 猫 .git/config
[芯]
        -- 両方のリポジトリで同じ --
【リモート「オリジン」】
        フェッチ = +refs/heads/*:refs/remotes/origin/*
        URL = git@github.com:MyCompany/project2.git
[ブランチ「マスター」]
        リモート = 原点
        マージ = refs/heads/master
        リベース = true
[サブモジュール ...]
        -- サブモジュールの束をカット --
[マージ]
        競合スタイル = diff3
[ブランチ]
        autosetuprebase = 常に
[ブランチ「p2_branch」]
        リモート = 原点
        マージ = refs/heads/p2_branch
        リベース = true
4

0 に答える 0