Show page source of Git_Howto #114163

[[PageNavi(NavigationList)]]

= Gitの使い方

OSDNの[https://osdn.net/git/ Git]リポジトリはWebインターフェイスからコミット情報やファイルの内容をブラウズできます。

Git コマンドやツールを使ってアクセスする場合は、HTTP 及び Gitプロトコル(ポート9418)で読み込み、
HTTPS および SSH 経由で読み書き双方のアクセスができます。

== Gitリポジトリの内容を読み込む
プロジェクトにGitリポジトリがある場合は、プロジェクトの「ソースコード」タブにそのGitリポジトリが表示されています。そこをクリックするとWebインターフェイスから閲覧できます。
また、「ソースコード」-「ガイドと履歴」を選択すると、そのプロジェクトが用意しているリポジトリすべてが閲覧できるので、そこから選択していく方法もあります。

コマンドなどで、任意のプロジェクトのソースを取得したい場合は、次のように実行します。
(注意: この方法で clone した場合、そのまま origin に push 出来ません。
'''あなたが開発者の場合は「開発者向けアクセス」の所に表示されている
{{{<ログイン名>@git.osdn.net:/gitroot/...}}} を使ってください'''。)

{{{
git clone git://git.osdn.net/gitroot/<プロジェクト名>/<リポジトリ名>
}}}


== Gitリポジトリに書き込む
プロジェクトメンバーはGitリポジトリへの書き込み権限があります。

=== 1 SSH環境を整える
ホスト鍵のfingerprintは以下の通りです。

||Protocol||Fingerprint||
||SSH version 2 (RSA)||SHA256:uKMD1XyGiRCd6QyzCpvlJ5ME79d939Z1Frdua9uZEUE[[BR]]MD5:b7:78:67:21:63:ef:c2:a8:af:88:6c:a6:98:a7:06:75||
||SSH version 2 (EDCSA)||SHA256:9K7tpuAFYBPZdA0DhEJGTGbzDU63vXHVYdtgf7sEArc[[BR]]MD5:1c:3b:fe:2d:67:69:02:85:4b:79:64:c8:b5:bc:1e:9b||
||SSH version 2 (ED25519)||SHA256:Zvhg5QZkdPGUR7tOa+xG3txNwFTZCWpOhJKVMAs8H04[[BR]]MD5:e9:bb:c8:97:b5:f1:f6:d6:5a:17:a8:ab:65:2e:ed:6b||

[https://osdn.net/account/ アカウント管理]で、ssh公開鍵を登録します。ssh protocol version 2 (rsa,edcsa,ed25519)の鍵が利用できます。ペーストする際に、必ず1つの鍵が1行におさまるようにしてください。そうしないと、鍵が正確にコピーされません。

登録された鍵は、数分で有効になります。

=== 2 Gitリポジトリの新規作成
Gitリポジトリを作成するには、プロジェクトメニューの「ソースコード」-「Git管理」のページを開きます。このページで「新規Gitレポジトリを作成」をクリックし、
 * リポジトリ名(英数字)
 * 概要(テキスト、日本語可)
を入力してください。続いて[新規Gitリポジトリを作成]ボタンを押すと、Gitリポジトリが作成されます。作成には数分ほどかかります。

=== 3 ローカルリポジトリでの準備
手元のGitリポジトリでは、メールアドレスを設定しておいてください。現在、Gitリポジトリへの書き込みを登録メールアドレス(ログイン名@users.osdn.me)で記録しています。
{{{
git config --global user.email <登録されたメールアドレス>
}}}
「--global」オプションはGit環境全体に影響するので、特定のリポジトリだけを登録する場合は、そのリポジトリディレクトリ内に移動し、「--global」オプションなしで実行してください。その場合、設定内容は、.git/configに、
{{{
[user]
	email = <ログイン名>@users.osdn.me
}}}
のような書式で記述されます。

==== 3-1 ほかのリポジトリからの移行
ほかのリポジトリの内容をOSDNに登録する場合は、まずローカルにリポジトリを作成しておきます。
{{{
git clone git://<別のリポジトリ>
}}}
「--global」オプションでuser.emailを設定していない場合は、そのリポジトリ内に移動し、上記のようなコマンドでuser.emailを設定しておきます。

=== 4 Gitリポジトリに書き込む
準備ができたら作成したGitリポジトリに書き込みます。

最初に SSH 経由で clone している場合は、単に
{{{
git push
}}}

とするだけで OSDN に更新内容が送られます。

もし、その他の場所から clone したり、手元で新規に作成したレポジトリの内容を送信したい場合は
「ソースコード」-「ガイドと履歴」のページに「SSHを使った開発者向けアクセス」という欄にあるコマンド例を参照してください。
こにアクセスに必要な情報が記載されています。

たとえばpushで書きこむ場合は、以下のようになります。
{{{
git push <ログイン名>@git.osdn.net:/gitroot/<プロジェクト名>/<リポジトリ名>
}}}

なお、新規作成時(Gitリポジトリが空の場合)は、ブランチ名が登録されていないので、
上記のままでは書き込みができません。
「--mirror」オプションをつけて実行するか、masterなどのブランチ名をつけて実行します。
{{{
git push <ログイン名>@git.osdn.net:/gitroot/<プロジェクト名>/<リポジトリ名> master
}}}

==== 4-1 長い git URL を省略する

一度

{{{
git remote add osdn <ログイン名>@git.osdn.net:/gitroot/<プロジェクト名>/<リポジトリ名>
}}}

として remote のリストに登録すれば、次回からは

{{{
git push osdn
}}}

だけで送信できます。

== !GitHub のリポジトリからの移行の例
具体的な例として!GitHub のリポジトリをOSDNのプロジェクトにに取り込む方法を挙げておきます。

説明のために以下の状態を前提とします。

 * 予めOSDNにプロジェクトを作成してある (以下例として project_example とする)
 * 予め!GitHubからローカルに対象リポジトリをcloneしてある(ローカルのレポジトリのパスを /home/foo/GITHUB_REPO1 とする)

=== プロジェクトに新規リポジトリを作成する
まだ何もないカラのリポジトリが必要なので、プロジェクトに新規にGitリポジトリを作成します。
以下のような(プロジェクトのソースコードメニューにリンクがある)Git管理ページの'''新規リポジトリ作成'''ボタンをクリックしてリポジトリを新規登録します。
登録後、リポジトリが実際に作成されるまで最大数分程度かかります。

 !https://osdn.net/projects/project_example/git/admin/

以下リポジトリ名は example1 とします。

=== 作成したリポジトリのアクセスURLを確認する
リポジトリが作成されたら リポジトリビューアのページを開いて、リポジトリのアクセスURLを確認します。

 !https://osdn.net/projects/project_example/scm/git/example1/

右上にある SSH ボタンをおして SSH 経由でアクセスできる URL をコピーしておきます(HTTPS 経由でも書き込みはできますが SSH の利用を推奨します)
URL は以下のような形式です。

 YOUR_ACCOUNT@git.osdn.net:/gitroot/project_example/example1.git

===  OSDN のリポジトリへの書き込み
!GitHub からローカルにcloneしてあるGitリポジトリを上記のOSDN git リポジトリに以下のようなコマンドで書き込みます(カレント
ブランチを push する例です。カレントブランチ以外を push する場合は ブランチ名を コマンド最後に付加してください)

{{{
cd /home/foo/GITHUB_REPO1
git push YOUR_ACCOUNT@git.osdn.net:/gitroot/project_example/example1.git
}}}

上記コマンドで OSDNのリポジトリに push が行えます。ただし、上記のコマンドですと、毎回長いURLをそのまま指定しないといけないため、
何度も push を行う場合操作が煩雑になりますので、以下のように remote のショートカット名を登録しておくと便利です。

{{{
git remote add osdn YOUR_ACCOUNT@git.osdn.net:/gitroot/project_example/example1.git
}}}

remote 名を追加しておくと以下のようなコマンドでpushできるようになります

{{{
git push osdn
}}}

また、 ローカルに clone してきたリポジトリの場合特に変更していなければ origin という名前で clone 元のリポジトリが設定されており、
この remote がディフォルトの push 先として設定されています。git push 時に remote を指定していない場合には このディフォルトの
remote に push が行われます。

先程設定した osdn をディフォルトとして push 先にするするようであれば、以下のように push 時に -u オプションをつけて一度実行しておくと便利です。

{{{
git push -u osdn
}}}

これで ディフォルトの psuh 先が osdn に変更されますので、以後特にオプションをつけないで push した場合 osdn へ push が
行われます。

{{{
git push
}}}

== Windows上での注意
Windows上で、Git on MSysを利用する場合、このバイナリパッケージでは、以下の内容がシステムデフォルトとして設定されています。
{{{
core.symlinks=false
core.autocrlf=true
color.diff=auto
pack.packsizelimit=2g
}}}
「core.autocrlf=true」となっていると、リポジトリオブジェクトからファイル階層の構成時に、改行コードのLFはCRLFと置換されてしまいます。そのため、意図してLFを利用している場合は、commitの都度、変更されてしまうことになってしまいます。core.autocrlfを無効にするには、以下のコマンドなどを実行します。
{{{
git config --system core.autocrlf false
もしくは
git config --system --unset-all core.autocrlf
}}}

システム全体の設定を変更したくない場合は --system の変わりに --global を使うか、単にオプションを削除してください。

[[PageNavi(NavigationList)]]