1. ホーム
  2. ギット

[解決済み】「git remote add ...」と「git push origin master」とは何ですか?

2022-03-28 09:01:39

質問

よくあることですが、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 の本から始めると良いでしょう。

最初の質問にお答えします。

  1. とは何ですか? git remote add ... ?

    ご存知のように、Gitは分散型バージョン管理システムです。ほとんどの操作はローカルで行われます。外の世界と通信するために、Gitはいわゆる リモコンです。 . これらは、あなたのローカルディスク上のリポジトリとは別のものであり、以下のことが可能です。 プッシュ に変更する(他の人が見ることができるようにする)か、または プル から取得します (他の人の変更を取得できるようになります)。コマンドは git remote add origin [email protected]:peter/first_app.git という新しいリモートを作成します。 origin にある [email protected]:peter/first_app.git . このようにすると、プッシュコマンドで、プッシュ先を オリジン は、URL全体を入力する代わりに

  2. とは 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ユーザーにそれを感じました。幸運を祈ります。