LoginSignup
4
4

More than 5 years have passed since last update.

Git 覚え書(ほぼ自分用:時々更新)

Last updated at Posted at 2014-07-11

gitは日常的に使ってますが、使用頻度が低いコマンドはすぐ忘れてしまうので自分用のメモをここに残しています。
(時々更新予定)

プロジェクト作成

$ cd プロジェクトのdir
$ git init

ファイル追加

$ git add 追加したいファイル
$ git add .    # 全部追加できる

空のディレクトリは追加できないので、よくディレクトリに適当な.gitnoteなどの空ファイルを作るパターンが多いです。

ユーザ名とメールアドレスの設定関連

ユーザ名とメールアドレスはシステム全体で自動的に設定されるグローバルと、そのプロジェクトのみで使用できるローカルの二種類が設定可能。

多少面倒でもグローバルには誰が見ても当たりさわりのないものを設定しておいて、ローカルで個々のを設定しておくとあらぬ事故を防げてお得です。

# グローバル設定
$ git config --global user.name ユーザ名
$ git config --global user.email メールアドレス

# ローカル設定
$ git config --local user.name ユーザ名
$ git config --local user.email メールアドレス

# 確認
$ git config --list


gitに無視させたいファイルがある

.gitignoreファイルを作って、その中に無視させたいファイルを書けばOK。

.gitignore

*.o
out/

ワイルドカードも使用可能で、↑の例では、ほげほげ.oファイルすべてとoutディレクトリのみが無視される
(outディレクトリの中にあるファイルは無視されない)

プロジェクトごとにわざわざ書くのが面倒な場合は、以下に各言語のテンプレートがあるので、ここからテンプレートを持ってくると便利です。
https://github.com/github/gitignore

プロジェクトを.git抜きでエクスポートしたい

.git抜きでエクスポートする場合は以下のようにする

$ git archive --format=tar.gz ブランチorタグor番号 -o 出力ファイル名

# ↑の場合はカレントの位置を基準としたアーカイブを作成
# してしまうので、特定のディレクトリの中に収めたい場合はこれ

$ git archive --format=tar.gz -prefix=ディレクトリ名/ ブランチorタグor番号 -o 出力ファイル名

git checkout-indexも似たようなことができますが、使用方法を間違えると危ないのでよほどのことが無い限りgit archiveで運用したほうがいいです。

別のリポジトリの変更点を反映したい(変更履歴付きで)

まず、別のリポジトリの差分をgit format-patch でパッチを作る

$ git format-patch ブランチorタグor番号 

すると、00XX-xxxx.patchというファイルができるので、これらを反映したいリポジトリにコピーする。
その後、git am で適用するとOK

$ git am パッチファイル名 

失敗するとなにか言われるので、git am --abortとかすると取り消せる。
abortで取り消したあとで、patchファイルを編集して再度git amしてもいい。

プロキシ設定

イントラネットなどでプロキシが設定されていることは当たり前なので、外部に接続する時はやっておくと吉

$ git config --global http.proxy プロキシサーバのアドレス:ポート番号

github色々

ローカルで新規にリポジトリを作る場合は、Github上で新規に作ったあと以下のようにする。

$ cd プロジェクト名
$ git init
$ git config --local user.name ユーザ名
$ git config --local user.email メールアドレス
$ git config --local github.user githubユーザ名
$ git config --local github.token github APIキー
$ git remote add origin git@github.com:ユーザ名/リポジトリ名.git
$ git fetch
$ git checkout master

リモートへの反映は次のようにやる

$ git commit -a -m コミットメッセージ
$ git push origin master

(master以外を指定するとそのブランチがリモートにも作成される。既にある場合そのブランチがアップデートされる)

リモートからの反映は次のようにやる(remoteのbranchに注意)

$ git fetch
$ git merge origin/master

Windowsでgitgitしたい

windowsでGitしてブランチ作って管理したいと思うことってありませんか?
私はwindowsでしか動かないツールも扱うことが多いので、結構あります。

で、Windows上でのgitは、前は面倒だったり動作に問題がありましたが今は結構使えるようになってます。
GUI派はsourcetree落としておくと何かと便利。

gitで作ったプロジェクトがsambaで接続されたUNC形式なパスでも問題なく操作できて、クロス開発がやりやすいです。
日本語も化けないのは有能。

余談ですが、Visual Studio 2013ではgitが普通に使えるらしい。。
これはもうVSSなんか窓からなげすt。。。

2012は別途Extensionを入れるとOK

msysgit
http://msysgit.github.io/

sourcetree
http://www.sourcetreeapp.com/download/

Visual Studio Tools for Git
http://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c

インストールの流れとしては
msysgit→sourcetreeの順番だけど、sourcetreeは内部的にgitを持ってるので、sourcetree単体でも問題ないかもしれません。

msysgitのインストール時にRun Git and included Unix tools from the Windows Command Promptを選択するとcmdでgitが普通に使えるようになるので何かと捗ります。

gitoliteでプライベートなGitサーバの管理

プライベートなGitサーバを作るときに結構便利

パッケージ導入

$ sudo apt-get install gitolite

Warinigが出ることがあるけど大丈夫

gitoliteユーザの作成

管理はgitoliteにやらせましょうということでユーザ作成

$ sudo adduser --system --disabled-password --shell /bin/sh --group gitolite --home /var/gitolite

home は別に /home/gitolite でも構わないみたいです。

管理者の設定

gitoliteを管理するユーザを設定します。
gitoliteはRSA公開鍵を使ってユーザ管理をやります。

なので、今使っているrsaの鍵とは違う鍵を使いたい場合は次のようにします。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa) ← ここに新しいファイル名を追記すること

で、新しく作った公開鍵の名前をid_rsa_admin_gitとすると。。

sudo -H -u gitolite gl-setup ~/.ssh/id_rsa_admin_git.pub

とするとOK
しばらくするとコンフィグ設定をするためにエディタが起動するけど、今はなにもしなくてそのままエディタを終われば良い。

sshのconfigを編集

sshのconfigを編集して先ほど設定したアドミン用の鍵を使わせるようにする。
~/.ssh/configを次のように編集

host my_gitserver
    user gitolite
    hostname 192.168.1.100(Gitサーバのホスト名かIP)
    port 22
    identityfile ~/.ssh/id_rsa_admin_git

終わったらCloneできるかどうか確認。

$ cd 適当なディレクトリ
$ git clone ssh://my_gitserver/testing

リポジトリの基本的な動作

このへんはほとんどgithub使う時と変わらない感じです。
sshのconfigにサーバ接続情報が書いていれば以下でOK

$ git clone ssh://my_gitserver/testing

リモードへの変更反映
console:
$ git push origin master

リモードからの変更を取得
console:
$ git pull

新しいユーザの追加

[ユーザ側]

管理者を作った時のように、sshの公開鍵を作成。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa) ← ここに新しいファイル名を追記すること

で、新しく作った公開鍵の名前をid_rsa_user_gitとして、~/.ssh/configを以下のようにする。

host linux_gitserver
    user gitolite
    hostname 192.168.1.100(Gitサーバのホスト名かIP)
    port 22
    identityfile ~/.ssh/id_rsa_user_git

終わったら、id_rsa_user_git.pub(公開鍵)をgitサーバの管理者に渡す。

[管理者側]

ユーザから公開鍵を受け取ったら、gitoliteにユーザの鍵を追加する必要があるのですが、gitoliteはgitでユーザ情報もかんりしているので、管理情報をgitからクローンしてきます。

git clone ssh://my_gitserver/gitolite-admin

これで、gitolite-admin以下に[conf]と[keydir]ができるので、keydirのほうにもらった公開鍵をコピーしてpushすればOK

cp もらった公開鍵 gitolite-admin/keydir/ユーザ名.pub
git add keydir/ユーザ名.pub
git commit -a -m "user add hogehoge"
git push
[ユーザ側]

管理者が追加したら、以下で確認。

$ cd  hogehoge
$ git clone ssh://linux_gitserver/testing

新しいリポジトリの作成

先ほど作ったgitolite-adminレポジトリのconfにある[gitolite.conf]を次のように追記すればOK。

repo    [新しいレポジトリ名]
                RW+             =       [許可したいユーザ名]

これをgit commit git push するだけでOK
ユーザ名はもらった公開鍵の.pubを抜いた名前となるので注意。

現在進行中のローカルリポジトリを丸々リモートに反映する

git remote add origin <SSHの位置>
git push origin --all

で全ブランチが反映されます。

gitoliteからリポジトリを削除する

gitolite-adminレポジトリのconfにある[gitolite.conf]にあるリポジトリの記述を削除したあとで、いつものように

git commit -a -m "delete xxx repo"
git push origin master

として反映すればとりあえず消えますが、gitoliteサーバにデータがまだ残ってるので、gitoliteサーバに入ってデータを削除する必要があります

sudp su - gitolite
cd repositories
rm -rf <消したいレポジトリ>.git
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4