リンク

シェルモードで git log すると見づらい

シェルモードで git log や git diff すると、

WARNING: terminal is not fully functional

という警告と共に一部のデータが表示され、ページングもやりづらい。 表示も見づらい。

これは、

git --no-pager log <filename>

というように、 --no-pager を付けてあげれば良い。

ほんとはもっと別の解がないかなあと思うけど。

あと、これをしとくと便利。

git config --global core.pager ''

リモートリポジトリに push するときの注意

次の状況を想定。

資産はローカルにあって、これをリモートのベアリポジトリで管理したい

作業はこうなる。

・ローカルの資産をgit管理にする
       git init
       (必要に応じて add と commit もしとく)
・リモートサーバ上にベアリポジトリを作る
       mkdir ~/git/app01.git
       cd ~/git/app01.git
       git init --bare --shared (共通利用するので --sharedつけてる)
・ローカルのリポジトリに、リモートのベアリポジトリを教える
       git remote add origin ssh://username:passwd@remote.server/home/user/git/app01.git
       (確認は git remote -v でできる)
・リモートへpushする(これからもずっとリモートへpushする場合)
       git push -u origin master

ここまでいけたら、あとは通常作業でのpush は git push だけで良い。

"-u" オプションは --set-upstream の省略形。

なお、git push -u origin master をしない場合、こんなエラーが出る。

$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to '/home/git/sampleapp.git'

共有リポジトリに push しようとするとエラーが出る(最初のpush)

こんなエラーが出た場合。 読んだら分かるけど、ディレクトリ/ファイルのパーミッションの問題なので、確認と対処を実施。

# git push -u origin master
Counting objects: 12, done.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (12/12), 4.70 KiB, done.
Total 12 (delta 0), reused 0 (delta 0)
error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To /home/git/mod.git
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to '/home/git/mod.git'

共有用のベアリポジトリを作る

app というアプリのリポジトリを作るとする。

よく使う手順なので、コマンドのみ載せる。

mkdir /home/username/git/app.git
cd /home/username/git/app.git
git --bare init --share
cd /home/app
git init
git add .
git commit -m 'init'
git remote add origin /home/username/git/app.git
git config branch.master.remote origin
git config branch.master.merge refs/heads/master

参照先リポジトリを確認する

git remote -v

リモートリポジトリの場合は次のように表示される。

$ git remote -v
origin  /home/user/git/html.git (fetch)
origin  /home/user/git/html.git (push)

これが、ローカルリポジトリ (./.git)を見ている場合は、何も出ない。

プロキシサーバを使う

git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080

確認は、

git config --list

認証が必要なプロキシの場合、ユーザ名を user、パスワードが password とすると、次のようにする。

git config --global http.proxy http://user:password@proxy.example.com:8080

なお、ユーザ名に '@' が含まれる場合は、エンコードして '%40' とする。 こんな感じ。

git config --global http.proxy http://user%40hoge.com:password@proxy.example.com:8080

長い。

リモートリポジトリの URL 変更

リモートサーバが変更になった場合などに使うんだろうけど、

そもそも remote add するときにタイプミスやリポジトリパスの 指定ミスなどでわりとよく使う。

git remote set-url origin (正しいURL)

SourceTree? でクローンに失敗する

Couldn't reserve space for cygwin's heap, Win32 error 0

などというエラーを吐いてしまう場合がある。

出るときもあれば出ないときもある。

原因は DLL のアドレス割り当ての問題らしい。

git や ssh が Win32 error 487: Couldn't reserve space for cygwin's heap, Win32 error 0 で実行できない場合の対処

このブログの内容に従い、コマンドプロンプトから、

cd "C:\Program Files (x86)\Git\bin"
rebase -b 0x30000000 msys-1.0.dll

としたら解決した。

リモートリポジトリのブランチを表示

リモートリポジトリにはいくつかのブランチが作られているだけの状態で、ローカルで

git branch

とやると、今チェックアウトしているブランチが出てくるだけ。

これは、

git branch -a

とする。

消したファイルを復活させる

ローカルの変更を戻したい場合もこれ。

git checkout -f <filename>

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS