[解決済み】「git remote add ...」と「git push origin master」とは何ですか?
質問
よくあることですが、Gitと Ruby on Rails はまるで魔法のように見えます。 Ruby on Rails 3 チュートリアルの最初の章です。 で、Gitについて書かれています。
git remote add origin [email protected]:peter/first_app.git
git push origin master
そして、それが何であるかについてあまり多くを語らず、分岐について話し始めると、かなり "it just works" と書いてあります。 ネットで検索してみると
git remote add
は、次のような "短い名前" を追加することです。
origin
また、URLの別名のようなもので、任意の名前にすることもできます。
そして
origin
はリモートリポジトリが指し示す通常のパスです(
http://git-scm.com/book/en/Git-Basics-Working-with-Remotes
の下にある "リモートリポジトリの追加")を参照してください。
では、なぜURLは
git://[email protected]/peter/first_app.git
でなく、他の構文で -- それはどんな構文なのでしょうか? なぜ
.git
? を使わないようにしてみました。
.git
を末尾につけると、それもうまくいきます。 もし
.git
他に何があるのでしょうか? その
git
で
[email protected]
は、Gitサーバーのユーザーアカウントであるようですね。
また、なぜこんなに冗長な表現で
git push origin master
? デフォルトはオリジンとマスターではダメなのでしょうか? ということがわかりました。
origin master
が必要ですが、ちょっとした編集とコミットの後、次に
git push
が必要なだけです。
origin master
). どなたか詳しい方、教えてください。
説明のない魔法をたくさん使っているように感じることもあれば...、使っている本人が自信満々で、理由を聞かれても説明できず、"そういうものです"といった感じで答えることもあります。 時には、とても実用的で現実的なこともあります。 実用的であることは悪いことではありませんが、何が起こっているのかわからないほど実用的ではないのでしょう。
どのように解決するのか?
GitはUnixのようなものです。ユーザー・フレンドリーですが、仲間にはうるさいです。シェルのパイプラインと同じくらい強力で、ユーザー・フレンドリーなのです。
とはいえ、一度そのパラダイムとコンセプトを理解すれば、Unixのコマンドラインツールに期待するような、禅のような明快さがあるのです。オンラインで入手可能な多くの優れたGitチュートリアルの一つを読むために、時間を取ることを考慮すべきです。その プロGit の本から始めると良いでしょう。
最初の質問にお答えします。
-
とは何ですか?
git remote add ...
?ご存知のように、Gitは分散型バージョン管理システムです。ほとんどの操作はローカルで行われます。外の世界と通信するために、Gitはいわゆる リモコンです。 . これらは、あなたのローカルディスク上のリポジトリとは別のものであり、以下のことが可能です。 プッシュ に変更する(他の人が見ることができるようにする)か、または プル から取得します (他の人の変更を取得できるようになります)。コマンドは
git remote add origin [email protected]:peter/first_app.git
という新しいリモートを作成します。origin
にある[email protected]:peter/first_app.git
. このようにすると、プッシュコマンドで、プッシュ先を オリジン は、URL全体を入力する代わりに -
とは
git push origin master
?という名前のローカルブランチにあるコミットをプッシュするコマンドです。 マスター という名前のリモートに オリジン となります。これが実行されると、最後に オリジン はリモートリポジトリに送られ、他の人はそこでそれらを見ることができるようになります。
さて、トランスポートについて(つまり、どのような
git://
)を意味します。リモートリポジトリのURLは多くの種類があります(
file://
,
https://
など)。Git は、トランスポートが提供する認証メカニズムに依存して、パーミッションやその他を処理するだけです。つまり
file://
のURLでは、Unixファイルのパーミッションになるなど。のような
git://
スキームは、Gitのチェンジセットを送信するために最適化された独自の内部トランスポートプロトコルを使用するようにGitに要求しています。正確な URL については、GitHub の Git サーバーの設定によってそうなっているのです。
さて、冗長性です。あなたが入力したコマンドは一般的なものです。というブランチを作成することができます。 主人 というブランチのローカルミラーです。 フー というリモートの バー となります。Gitで言えば、これは マスター トラック バー/フー . 初めてクローンを作成したとき、このブランチは マスター というリモート オリジン (クローン元)のマスターを追跡するようにローカルのマスターを設定します。
これが設定されると、単純に次のように言うことができます。
git push
で実行されます。必要な場合はもっと長いコマンドも用意されています(例.
git push
は公式の公開リポジトリにプッシュするかもしれないし
git push review master
は、あなたのチームがコードのレビューに使用する別のリモートにプッシュするために使用することができます)。トラッキングブランチにするためには
--set-upstream
オプションの
git branch
コマンドを使用します。
Gitは(これまで使ってきた他のアプリケーションと違って)内側から理解した方が良いと感じていました。データがどのように保存され、リポジトリの中で管理されているかを理解すれば、コマンドとそれが何をするものなのかが明確になります。多くのGitユーザーの間にエリート主義があることは同意しますが、私も昔はUnixユーザーにそれを感じました。幸運を祈ります。
関連
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git ですべてのリモートブランチをクローンする方法
-
[解決済み] Git でブランチからコミットを削除する
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み】ブランチを指定せずにgit pushした場合のデフォルトの動作
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】マージ後のコミットでGitエラー - fatal: マージ中に部分コミットができない
-
[解決済み】なぜ「git commit」は私の変更を保存しないのですか?
-
[解決済み】「オリジン/マスターへのプッシュが拒否されました」というエラーが常に発生するのはなぜですか?
-
[解決済み】GitHubで空のブランチを作成する
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push some refs to .......
-
[解決済み】Git Push Error: リポジトリデータベースにオブジェクトを追加する権限が不足しています。
-
[解決済み] GIT_DISCOVERY_ACROSS_FILESYSTEM が設定されていない。
-
[解決済み] TortoiseGitで「git did not exit cleanly (exit code 128)」というエラーを解決するには?[クローズド]
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] Gitのエラー「object file ... is empty」はどうすれば直せますか?