githubでよく使われる2つの動作モード


最近army 8735と一緒に彼のコードを維持して、最近コード管理githubがうるさいので、ちょうどgit hubにコードを置いて管理して、ついでにgithubの仕事のモードを理解して、この文章を書いてgithubでコードを管理するいくつかの方式を総括します.
文章が始まる前にGITを少し紹介する必要があると思います.
Git---The stupid content tracker、バカコンテンツトラッカー.では、どのように理解しますか.gitはまずバージョン管理ツールであり、これはよく使われるCVS、Subversionと同じであり、異なるのは、分散バージョン制御ライブラリで管理されていることです.Gitの速度は非常に速く、ブランチを簡単に作成することができ、大きなプロジェクトに非常に適しています.コード統合追跡能力に優れています.また、バージョンライブラリを管理するための小さなツールもたくさんあります.ここではgitの動作原理を深く議論することを試みず,gitの相対的な利点とgitで何ができるかを紹介するつもりである.現在のjquery、淘宝のkissy、白度のTangramは自分のコードをgithubに管理しています.ここはオープンソース基地のように、誰もが自分が参加したいプロジェクトに貢献できるコードです.これはgithubで提供されている2つのコラボレーションモード(Collabortive Development Models):1、The Fork+Pull Model(ブランチプッシュモード)2、The Shared Repository Model(共有倉庫モード)の最初のモードは、見知らぬ人の貢献コードとして非常に有用であり、後述する.
第一歩環境
(環境をインストールしgithubにsshキーを設定した場合は、これらの内容をスキップできます)
現在gitはmac linux(言うまでもなく)winのインストールパッケージを備えています
gitで作業を開始する前に、機械にgitの環境があることを確認しなければなりません.
winでのgitインストール
http://help.github.com/win-git-installation/
Macでのgitインストール
http://help.github.com/mac-git-installation/
linuxでのgitインストール
http://help.github.com/linux-git-installation/
git環境をインストールした後、簡単な構成が必要です.
gitコマンドラインを開き、コードを配置するディレクトリに進みます.
git init//git初期化の入力

git config --global user.name=xxx
git config --global user.email=xxx

mac下等号をスペースに置換
gitは匿名コミットを許可しないため、ユーザー名とemailを設定します.
この時点でgitローカルはすでに動作していますが、サーバと通信するには、もう一つのステップがあります.
ステップ2リモート接続
Generating SSH keysはssh鍵を生成する
この时あなたはすでに1つのgithubのアカウントがあることを望んで、keyはバインドするので、なくて1つ申請します
鍵はルートディレクトリにあるはずです.ssh下、だから

$ cd ~/.ssh
//  emai       email
$ ssh-keygen -t rsa -C "[email protected]"
    ,          
$ ls
config  id_rsa  id_rsa.pub  known_hosts

そしてgithubにログイン
github=》account setting=》ssh public keys=》add public key
contentにrsaを記入する.pubの内容は、スペースが多くないように気をつけて保存すればOKです
最終パス
$ ssh [email protected]通信できるかどうかをテストします
最初のリンクで得られた結果が
参照
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
ERROR: Hi tekkub! You've successfully authenticated, but GitHub does not provide shell access
Connection to github.com closed.
githubにつながっていることを証明します
第3歩は仕事の簡単な双方向操作を開始します
githubからコードを取得する方法を説明することができます.githubを参照していると、jqueryのコードに興味があることに気づきました.そして、彼のバグを見つけました.このとき、修正したいことはどうすればいいですか.
最初のパターンからお話ししましょう
The Fork+Pull Modelブランチプッシュモード
コードライブラリをブラウズしている間にgithubの右上隅にある小さなボタンforkを見つけることができます.これは分岐の意味です.押すと、自分のホームページにこの同名のライブラリが生成され、このライブラリが分岐したライブラリであることがわかります.
githubがブランチしたライブラリにはssh httpとread onlyの3つのアドレスが生成されています
最初の2つに編集権限があります.この時terminalを開きます.
//           down   
$ git clone https://[email protected]/qbaty/jquery.git

このときはローカルで修正することができます.もちろんgithubで直接修正することもできます.buildならファイルを変更しましたxmlというファイル

// git      build.xml    
$ git add build.xml

//               
$ git commit -m "add something"

//           git    ,    github     
$ git push origin master

このセクションでは、sshキーを生成するときに設定したパスワードを入力する必要があります.設定がなければ空です.
terminal表示が完了するとgithub上のコードライブラリをリフレッシュし、変更がサーバに更新されていることがわかります.
コードライブラリのトップページに戻ると、右上隅にpull requestボタンがあります.コードの変更をjqueryに更新したい場合は、そのボタンを押すとsent pull requestページにジャンプし、提出した内容の主な機能を説明するフォームがあります.sent pull requestを押すと、コードライブラリ管理者はこの要求を受け取ることができ、コードを審査した後、この部分をメインコードにマージします.
もしあなたがコード管理者で、他の人send pull requestがあなたにあげたとき、あなたはあなたのコードライブラリのトップページでこの要求を受け入れて、それからあなたは他の人の変更を合併することを決定します
この時merge pull requestが必要です
一般的には2つの方法があります.
Fetch and Merge

//     master      
$ git checkout master

// git             
$ git remote add xxx git://github.com/xxx/jquery.git

//    
$ git fetch xxx
$ git merge xxx/jquery.js

//          
$ git push origin master

Patch and Apply
各pull requestにはpatch urlが生成され、git amコマンドで変更を適用できます.

$ git checkout master

//         
$ curl http://github.com/github/jobs/pull/25.patch | git am
$ git push origin master


これが簡単なfork+pull request modelのブランチとマージプロセスです.
githubのブランチ競合マージについては、まだ深く理解されていませんが、現在は手動マージしか知られていません.
その強みはfork queneですべてのブランチを表示し、任意のブランチとマージすることができることです.これはまだ研究できることがたくさんあるはずですが、ここではレンガを投げて玉を引くだけです.間違いがあれば許してください.githubを試してほしいです.オープンソースの力は本当に強いからです.