Elaborate ## Repositories

This commit is contained in:
SI 2020-02-24 18:12:18 +09:00 committed by GitHub
parent 964d02f7f6
commit 7d9dd08625
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 16 deletions

View File

@ -149,9 +149,9 @@
## リポジトリ ## リポジトリ
### ローカルリポジトリを初期したい ### ローカルリポジトリを初期設定したい
既存のディレクトリを Git リポジトリとして初期化するには、次を実行します: 既存のディレクトリを Git リポジトリとして初期設定するには、次を実行します。
```sh ```sh
(my-folder) $ git init (my-folder) $ git init
@ -159,7 +159,7 @@
### リモートリポジトリをクローンしたい ### リモートリポジトリをクローンしたい
リモートリポジトリをクローン(コピー)したいときは、リポジトリの URL をコピーし、次を実行します リモートリポジトリをクローン(コピー)したいときは、リポジトリの URL をコピーし、次を実行します
```sh ```sh
$ git clone [url] $ git clone [url]
@ -168,7 +168,7 @@ $ git clone [url]
すると、リモートリポジトリと同名のフォルダにリポジトリの内容が保存されます。 すると、リモートリポジトリと同名のフォルダにリポジトリの内容が保存されます。
リモートリポジトリのあるサーバに接続できる必要があります。大抵の場合インターネット接続があれば大丈夫です。 リモートリポジトリのあるサーバに接続できる必要があります。大抵の場合インターネット接続があれば大丈夫です。
リモートリポジトリと異なる名前のフォルダにクローンしたいときは、次のようにします リモートリポジトリと異なる名前のフォルダにクローンしたいときは、次のようにします
```sh ```sh
$ git clone [url] name-of-new-folder $ git clone [url] name-of-new-folder
@ -180,23 +180,29 @@ $ git clone [url] name-of-new-folder
間違ったリポジトリをクローンしてしまったときは、`git clone` で作ったディレクトリを削除して、正しいリポジトリをクローンし直せばよいです。 間違ったリポジトリをクローンしてしまったときは、`git clone` で作ったディレクトリを削除して、正しいリポジトリをクローンし直せばよいです。
間違ったリポジトリを既存のローカルリポジトリの origin に設定してしまったときは、次のように origin の URL を変更しましょう 間違ったリポジトリを既存のローカルリポジトリの origin に設定してしまったときは、次のように origin の URL を変更しましょう
```sh ```sh
$ git remote set-url origin [url of the actual repo] $ git remote set-url origin [url of the actual repo]
``` ```
ほかの問題の場合[この StackOverflow トピック](https://stackoverflow.com/questions/2432764/how-to-change-the-uri-url-for-a-remote-git-repository#2432799)を参照してみてください。 ほかの問題は[この StackOverflow トピック](https://stackoverflow.com/questions/2432764/how-to-change-the-uri-url-for-a-remote-git-repository#2432799)を参照してください。
### 他の人のリポジトリにコードを書き加えたい ### 他の人のリポジトリにコードを書き加えたい
Git では、アクセス権がないと他の人のリポジトリに書き込むことはできません。GitHub は Git リポジトリのホスティングサービスであって Git 自体とは異なるものですが、GitHub でもやはり同様です。しかし、パッチによってコードを提案することができます。GitHub ならフォークとプルリクエストの機能がこれにあたります。 Git では、アクセス権がないかぎり他の人のリポジトリに書き込むことはできません。
GitHub は Git リポジトリのホスティングサービスであって Git 自体とは異なるものですが、GitHub でもやはり同様です。
しかし、パッチでコードを提案することができます。
GitHub ならフォークとプルリクエストの機能がこれにあたります。
まずはフォークについて説明しましょう。フォークはリポジトリのコピーです。Git 自体の機能ではないものの、GitHub, BitBucket, GitLab やその他のホスティングサービスにはこの機能があり、各サービスの UI を通して実行できます。 まずはフォークについて説明しましょう。
フォークはリポジトリのコピーです。
Git 自体の機能ではないものの、GitHub, BitBucket, GitLab やその他のホスティングサービスにはこの機能があり、各サービスの UI を通して実行できます。
#### プルリクエストでコードを提案するには #### プルリクエストでコードを提案するには
リポジトリをフォークしたら、ローカルマシンにクローンして編集しましょう。ちょっとした編集なら GitHub 上でもできるでしょうが、この文書は GitHub フライトルールではないので、ローカルで編集する方法を説明します。 リポジトリをフォークしたら、ローカルマシンにクローンして編集しましょう。
ちょっとした編集なら GitHub 上でもできるでしょうが、この文書は GitHub フライトルールではないので、ローカルで編集する方法を説明します。
```sh ```sh
# ssh を使う場合 # ssh を使う場合
@ -206,10 +212,12 @@ $ git clone git@github.com:k88hudson/git-flight-rules.git
$ git clone https://github.com/k88hudson/git-flight-rules.git $ git clone https://github.com/k88hudson/git-flight-rules.git
``` ```
できたディレクトリに `cd` で移動し、`git remote` を実行してください。リモートのリストが表示されるはずです。 できたディレクトリに `cd` で移動し、`git remote` を実行してください。
リモートのリストが表示されるはずです。
ただ、おそらく表示されるのは `k88hudson/git-flight-rules` を参照する `origin` だけなので、自分がフォークして作った方のリモートも用意する必要があります。 ただ、おそらく表示されるのは `k88hudson/git-flight-rules` を参照する `origin` だけなので、自分がフォークして作った方のリモートも用意する必要があります。
Git では、自分自身のリポジトリのリモートには `origin`、フォークした元のリポジトリは `upstream` と名付けるのが一般的です。これにならって、まず、リモート `origin` の名前を `upstream` に変更しましょう: Git では、自分自身のリポジトリのリモートは `origin`、フォークした元のリポジトリには `upstream` と名付けるのが一般的です。
これにならって、まず、リモート `origin` の名前を `upstream` に変更しましょう。
```sh ```sh
$ git remote rename origin upstream $ git remote rename origin upstream
@ -223,7 +231,7 @@ $ git remote rename origin upstream
$ git remote add origin git@github.com:YourName/git-flight-rules.git $ git remote add origin git@github.com:YourName/git-flight-rules.git
``` ```
この時点でリモートは二つです この時点でリモートは二つです
- `origin` は自分のリポジトリを参照しています。 - `origin` は自分のリポジトリを参照しています。
- `upstream` は元のリポジトリを参照しています。 - `upstream` は元のリポジトリを参照しています。
@ -231,14 +239,15 @@ $ git remote add origin git@github.com:YourName/git-flight-rules.git
`origin` は読み取り・書き込みの両方ができ、`upstream` は読み取り専用です。 `origin` は読み取り・書き込みの両方ができ、`upstream` は読み取り専用です。
編集が済んだら、編集内容を(通常はブランチ内から)リモート `origin` にプッシュしましょう。 編集が済んだら、編集内容を(通常はブランチ内から)リモート `origin` にプッシュしましょう。
ブランチ内にいる場合、次のように `--set-upstream` を使うと、次回から同じブランチからプッシュする際にリモートを指定せずに済みます ブランチ内にいる場合、次のように `--set-upstream` を使うと、次回から同じブランチからプッシュする際にリモートを指定せずに済みます
```sh ```sh
$ (feature/my-feature) git push --set-upstream origin feature/my-feature $ (feature/my-feature) git push --set-upstream origin feature/my-feature
``` ```
Git で CLI からプルリクエストを送る方法はありません([hub](http://github.com/github/hub) のようなツールを使えば別ですが)。 Git で CLI からプルリクエストを送る方法はありません([hub](http://github.com/github/hub) のようなツールを使えば別ですが)。
プルリクエストを送りたいときは、GitHubあるいは他のホスティングサービス上でプルリクエストを作成してください。元のリポジトリとフォークしたリポジトリを関連付けるのはホスティングサービスが自動的にしてくれます。 プルリクエストを送りたいときは、GitHubあるいは他のホスティングサービス上でプルリクエストを作成してください。
元のリポジトリとフォークしたリポジトリの紐付けはホスティングサービスが自動的にしてくれます。
プルリクエストの後、コードレビューのフィードバックに対応するのを忘れないようにしましょう。 プルリクエストの後、コードレビューのフィードバックに対応するのを忘れないようにしましょう。
@ -248,14 +257,15 @@ Git で CLI からプルリクエストを送る方法はありません([hub]
自分だけでなく他の人も共同作業していることを忘れないようにしてください。 自分だけでなく他の人も共同作業していることを忘れないようにしてください。
自分のフィーチャーブランチにいて、これを元のリポジトリに合わせて更新したい場合を想定します。 自分のフィーチャーブランチにいて、これを元のリポジトリに合わせて更新したい場合を想定します。
元のプロジェクトを参照するリモートは設定してありますか? まだなら今やってしまいましょう。通常はリモートの名前に `upstream` を使います: 元のプロジェクトを参照するリモートは設定してありますか? まだなら今やってしまいましょう。
通常はリモートの名前に `upstream` を使います。
```sh ```sh
$ (master) git remote add upstream <link-to-original-repository> $ (master) git remote add upstream <link-to-original-repository>
# $ (master) git remote add upstream git@github.com:k88hudson/git-flight-rules.git # $ (master) git remote add upstream git@github.com:k88hudson/git-flight-rules.git
``` ```
これで `upstream` から最新版をフェッチできるようになりました。 これで `upstream` から最新版を取得できるようになりました。
```sh ```sh
$ (master) git fetch upstream $ (master) git fetch upstream