ラベル git の投稿を表示しています。 すべての投稿を表示
ラベル git の投稿を表示しています。 すべての投稿を表示

gitで特定の行範囲の変更を追跡する

-L開始行,終了行:ファイル名オプションを使えばよい 例
git log -L 4,11:.screenrc

GitHubに公開鍵を登録していないユーザーにsuして、ssh経由でpushやpull、cloneをする

ここでは、以下の条件でcloneする例を以下に示す。

githubに公開鍵を登録してるユーザー:foo
suするユーザー: root
$ sudo -E su
-Eをする理由はSSH_AUTH_SOCK環境変数を引き継いでssh-agentによる自動パスフレーズ入力をするため。これは必ずしも必須ではない。
あとは、次のような.ssh/configを作成すれば、gitでgithubからcloneするときにfooとして操作が行われる。
Host github.com
  user foo
  identityfile /home/foo/.ssh/id_rsa

MacOSのgitでinvalid action developer pathのエラーの対処

gitを使うと以下のエラーが表示された。
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
解決方法は、以下のコマンドを実行
xcode-select --install

El capitanでgitがエラーになる場合の対処

$ git
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
gitを使うと上記のようなエラーが出る場合、次のコマンドを実行する。
xcode-select --install

gitで内部的に呼ばれるsshを別のユーザーとして実行する

この例では、ユーザーfooとしてsshを実行します。
1. ラッパースクリプトを作成。ここではssh-as-fooとしてます。
#!/bin/sh
ssh -lfoo -i/home/foo/.ssh/id_dsa "$@"
2. GIT_SSH環境変数に、上記のスクリプトを指定。
$ GIT_SSH=ssh-as-foo git pull

rootで一般ユーザーのsshキーペアを使ってgit cloneする

例:青字の部分を適宜変更。
# SSH_AUTH_SOCK=/run/user/1000/keyring/ssh git clone ssh://user@host/hoge/foo foo

branch is currently checked outと表示されてgit pushが失敗した時の対応

git pushで以下のようなエラーになる場合があります。
 ! [remote rejected] master -> master (branch is currently checked out)
リモートで、次のように設定することで解決できます。
$ git config --bool core.bare true

sshでgit repositoryをcloneする例

remote.hostでsshが8080ポートで待ち受け。MyProjectというレポジトリをfooというuserでログインしてクローンする。
$ git clone ssh://foo@remote.host:8080/home/foo/repos/MyProject

Linux上でGit repositoryの内容をグラフィカルに表示するgitg

Linuxデスクトップ上で使えるGitのGUIクライアントを探していたが、gitgというのがよさげ。
GTK+アプリなので、私のデスクトップ環境XFce(GTK+ベース)との親和性もよい。

https://wiki.gnome.org/Apps/Gitg/#Screenshots

なお、これを探す時に利用したサイトは以下。他のいつかのクライアントも紹介されている。

http://git-scm.com/download/gui/linux

git logをlessに渡しても色つきで表示する

最近のgit diffは、色つきで差分を表示します。しかし、パイプでlessに渡すと色がつきません。常に色を表示するには下記のようにします。
git diff --color=always | less -r

Gitで特定のコミットの差分を見る

git show コマンドを使えばよい。引数にはコミットハッシュ。もちろんHEADやHEAD^も使える。
$ git show 23343dbc

git diffで追加・削除の行数だけ取得する。

--shortstatをつければよい。
$ git diff 8044225f2 --shortstat
ファイル単位なら、--stat。
$ git diff 8044225f2 --stat
 book/src/abc.c    |  74 +++++++++++++++++++++++++++++++++++++++++----
 book/src/page.c   |  16 +++++++++---
 book/test/foo.c   | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 3 files changed, 198 insertions(+), 12 deletions(-)