Git

提供: sha.ngri.la
移動先: 案内検索

単体で使うとき

  1. 最初に使うとき
    $ git init
    $ git add .
    $ git commit -a -m "message"
    
  2. 2回目以降
    $ git add .
    $ git commit -a -m "message"
    

共有リポジトリ

サーバ側の準備

$ mkdir fooo.git
$ cd fooo.git
$ git init --bare --shared=true

他のサイトを見ると"$ sudo git init --bare --shared=true"と書いてあるけど、私の場合sudo使わないとうまくいった。なんでだろう?

ローカル側の準備

$ git init
$ git remote add origin ssh://username@sha.ngri.la/home/username/fooo.git 
$ git add .
$ git commit -a -m "initial import"
$ git push origin master
  • git remote add origin のときにサーバでのusernameを入れておかないとローカルのユーザ名で認証しようとするのでログインできなかった。

他のマシンの準備

$ mkdir fooo
$ cd fooo
$ git init
$ git remote add origin ssh://username@sha.ngri.la/home/username/fooo.git 
$ git add .
$ git commit -a -m "initial import"
$ git pull origin master

Link

ローカルの変更を元に戻す

特定のファイルを戻すとき

$ git checkout ファイル名

全て元に戻すとき

$ git checkout .

link

.gitignore

git add .で登録してしまったファイルを、.gitignoreに書いても同期されてしまう。このときは、

$ git rm --cached -f config/database.yml

ファイルも削除してしまいたい場合は、

$ git rm -f foo.html

エラー

fatal: unable to stat 'filename': No such file or directory

ファイルを削除した後にgit add .したときにエラーが出たので、その対応。

$ git rm "path/to/filename"
$ git add .
$ git commit -am 'my commit'

link

fatal: the remote end hung up unexpectedly

client_loop: send disconnect: Broken pipe
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly

のとき git gc --aggressive で解決した。