git遠隔倉庫の使用


http://progit.org/book/zh/
Pro Git
professional version control
  • Home
  •  
  • Book
  •  
  • ブログ
  •  
  • About
  •  
  • Support Us
  •  
  • GitHub
  •  
  • Twitter
  • This is an-progress translation. 
    To help translate the book,please fork the book  at GitHub and push your contributions.
    遠隔倉庫の使用
    どのGitプロジェクトの協力に参加するには、遠隔倉庫の管理方法を知る必要があります。遠隔倉庫とはネット上のプロジェクト倉庫を管理するもので、いくつかあるかもしれません。中には読んでください。また、書いてもいいです。他の人と協力して、あるプロジェクトを開発する時、これらの遠隔倉庫を管理して、データを押したり引いたりして、それぞれの仕事の進展を分かち合う必要があります。リモート倉庫の管理作業は、リモートライブラリの追加、廃棄されたリモートライブラリの削除、様々なリモートライブラリの分岐を管理し、これらの分岐を追跡するかどうかを定義することなどがあります。今回は遠隔倉庫の管理と使用について詳しく検討します。
    現在のリモートライブラリを表示します。
    現在の設定を確認するには、どのリモート倉庫がありますか?  git remote コマンドを使用すると、リモートライブラリごとに短い名前が表示されます。あるプロジェクトをクローンした後、少なくともオリジンというリモートライブラリが見られます。Gitはデフォルトでこの名前を使ってクローンの元の倉庫を識別します。
    $ git clone git://github.com/schacon/ticgit.git
    Initialized empty Git repository in /private/tmp/ticgit/.git/
    remote: Counting objects: 595, done.
    remote: Compressing objects: 100% (269/269), done.
    remote: Total 595 (delta 255), reused 589 (delta 253)
    Receiving objects: 100% (595/595), 73.31 KiB | 1 KiB/s, done.
    Resolving deltas: 100% (255/255), done.
    $ cd ticgit
    $ git remote 
    origin
    加えてもいいです  -v オプション(訳注:これは–verboseの略字で、イニシャルを取る)に対応するクローンアドレスを表示します。
    $ git remote -v
    origin	git://github.com/schacon/ticgit.git
    複数のリモート倉庫がある場合、このコマンドは全部リストされます。例えば私のGitプロジェクトでは、下記のように見えます。
    $ cd grit
    $ git remote -v
    bakkdoor  git://github.com/bakkdoor/grit.git
    cho45     git://github.com/cho45/grit.git
    defunkt   git://github.com/defunkt/grit.git
    koke      git://github.com/koke/grit.git
    origin    [email protected]:mojombo/grit.git
    このようにすれば、私はこれらのユーザーの倉庫から彼らの提出を地元に引き出すことができます。上に挙げた住所はorigginだけがSSH URLリンクを使っていますので、この倉庫だけがデータを押し上げられます。
    リモート倉庫を追加
    新しいリモート倉庫を追加するには、将来参照して実行するための簡単な名前を指定できます。  git remote add [shortname] [url]
    $ git remote
    origin
    $ git remote add pb git://github.com/paulboone/ticgit.git
    $ git remote -v
    origin	git://github.com/schacon/ticgit.git
    pb	git://github.com/paulboone/ticgit.git
    現在は文字列pbで対応する倉庫の住所を指すことができます。たとえば、Paulにあるすべての情報をつかむが、ローカル倉庫にない情報は、実行できます。  git fetch pb
    $ git fetch pb
    remote: Counting objects: 58, done.
    remote: Compressing objects: 100% (41/41), done.
    remote: Total 44 (delta 24), reused 1 (delta 0)
    Unpacking objects: 100% (44/44), done.
    From git://github.com/paulboone/ticgit
     * [new branch]      master     -> pb/master
     * [new branch]      ticgit     -> pb/ticgit
    現在、Paulの主幹分岐は完全に現地に訪問できました。対応する名前は?  pb/master、それを自分のある分岐に結合したり、この分岐に切り替えたりして、何か面白い更新がありますか?
    リモート倉庫からデータを取り込む
    前に見たように、次のコマンドでリモート倉庫からデータをローカルに取り込むことができます。
    $ git fetch [remote-name]
    このコマンドはリモート倉庫に行って、まだ持っていないデータを全部引き出します。運転が完了したら、ローカルでこの遠隔倉庫の中のすべての分岐にアクセスして、その中のある分岐をローカルに統合します。あるいはある分岐だけを取り出して、最後まで調べてください。(私たちは第三章でブランチの概念と操作について詳しく討論します。)
    リポジトリをクローンした場合、このコマンドは自動的にリポジトリをオリジンの名前に戻します。したがって、git fetch origin 前回のクローン以来、他の人がこのリモート倉庫にアップロードしたすべての更新(または前回のfetch以来の更新)を把握します。もう一つ重要なことは、fetchコマンドはリモートのデータをローカル倉庫に引くだけで、自動的に現在の作業分岐に統合されません。確実に準備してこそ、手動で統合できます。(説明:遠隔倉庫を作成して実行する必要があります。git remote add[倉庫名]、[倉庫url]、git fetch[リモート倉庫名]は、遠隔倉庫のデータをローカルに取り込むことができます。また、git merge remotes/[倉庫名]を使用します。/マスターはリモート倉庫をローカルの現在のbranchにmergeすることができます。このような分岐方式は独立した統合開発に適しています。つまり、それぞれの開発テストが完了したら統合します。例えば、AndroidのFramwarkとAP開発。
    「bareオプション」を使用して、git initを実行して空き倉庫を設定します。作業ディレクトリが含まれていない倉庫を初期化します。
    $cd/opt/git
    $mkdir project.git
    $cd project.git
    $git--bare init
    この時、Join、JosieまたはJessicaはそれを遠隔倉庫に追加して、ブランチを送り、最初のバージョンのプロジェクトを倉庫にアップロードします。)
    ある分岐が設定されている場合、ある遠端倉庫の分岐を追跡するために使用されます(次節及び第三章の内容を参照してください)。  git pull コマンドは自動的にデータを取り込み、リモート枝を自動的にローカル倉庫に統合します。日常の仕事の中でよく使われます。速くていいです。実は、デフォルトの場合  git clone コマンドは本質的にローカルマスター分岐を自動的に作成し、リモート倉庫のマスター分岐を追跡します。だから私たちは普通運行します。  git pullは、元のクローンの遠端倉庫からデータを取り込むことを目的として、作業ディレクトリに現在の分岐を統合する。
    データを遠隔倉庫に送ります。
    プロジェクトは一つの段階に進み、現在の成果を他の人と共有し、ローカル倉庫のデータを遠隔倉庫に送ることができます。このタスクを実現するコマンドは簡単です。  git push [remote-name] [branch-name]。ローカルマスターを分岐して送るなら  origin サーバ上(再度説明すると、デフォルトのmasterとorign名前が自動的に使われます)では、下記のコマンドが実行できます。
    $ git push origin master
    クローンされたサーバに書き込み権限があるか、または同じ時刻に他の人がデータを押していないかだけが、このコマンドが期限通りに完了します。あなたがデータを押す前に、他の人がいくつかの更新を押してくれたら、あなたのプッシュ操作は却下されます。まず彼らの更新を現地に持ってきて、自分のプロジェクトの中に入れてから、再度押すことができます。遠隔倉庫にデータを送ることについての詳細は第三章を参照してください。
    リモート倉庫の情報を確認します。
    私たちは命令を通すことができます。  git remote show [remote-name] クローニングされたoriginを参照してください。 倉庫、実行可能:
    $ git remote show origin
    * remote origin
      URL: git://github.com/schacon/ticgit.git
      Remote branch merged with 'git pull' while on branch master
        master
      Tracked remote branches
        master
        ticgit
    対応するクローンアドレスに加えて,多くの追加情報を与えた。それはあなたにフレンドリーに教えてくれます。マスターの支店であれば、git pullを使ってもいいです。 コマンドを使用して、データをローカルに取り込むことができます。また、トレース状態にあるすべての遠端分岐も示した。
    実際の使用過程において、git remote show 与えられた情報は、このようになり得る。
    $ git remote show origin
    * remote origin
      URL: [email protected]:defunkt/github.git
      Remote branch merged with 'git pull' while on branch issues
        issues
      Remote branch merged with 'git pull' while on branch master
        master
      New remote branches (next fetch will store in remotes/origin)
        caching
      Stale tracking branches (use 'git remote prune')
        libwalker
        walker2
      Tracked remote branches
        acl
        apiv2
        dashboard2
        issues
        master
        postgres
      Local branch pushed with 'git push'
        master:master
    それは私たちに運行を教えてくれます。  git push デフォルトで送る分岐は何ですか?また、どのような遠端分岐がまだローカルに同期されていないかを示しています。どのような遠端分岐がリモートサーバ上で削除されていますか?  git pull を選択すると、どの分岐が自動的に結合されますか?(このコマンドはローカルブランチとリモートリポジトリのブランチの対応関係も確認できます。)
    リモート倉庫の削除と名前の変更
    新版Gitで使用できます。  git remote rename コマンドは、リモート倉庫の短い名前を変更します。たとえば、  pb せいにする  paul、このように実行できます。
    $ git remote rename pb paul
    $ git remote
    origin
    paul
    なお、遠隔倉庫の名前変更は、対応する分岐名を変化させ、元の  pb/master 分岐は今paul/masterになりました。
    リモート倉庫サーバに移動したり、元のクローンミラーが使用されなくなったり、ある参加者がコードに貢献しなくなったりすると、対応するリモート倉庫を削除して実行できます。  git remote rm コマンド:
    $ git remote rm paul
    $ git remote
    origin
    prev |  next