yan's Handicraft

作成したフリーソフトを公開
Home » PC/システム開発 » Archive by category 'git'

忘れたくないGitコマンド

2月 1st, 2014 Posted in git, PC/システム開発

よく使うの機会があるのに、すぐに忘れてしまうGitコマンド。
忘れない自信がないので、まとめてメモっておくことにします。


特定のブランチのみを clone する

git clone -b hogefoo_branch  --single-branch  git@github.com:hogeFooUserName/foo_prj.git
  • これで clone すれば、リモートリポジトリがどれだけブランチだれけでも、
    ローカルリポジトリでは pull して push するだけのお手軽な環境になる。

リモートリブランチを取得して、ローカルブランチを作成する

git checkout -b hogefoo-branch origin/hogefoo-branch

コミット間の変更ファイルの一覧を出力する

git --stat  
  • ローカルリボジトリと、他のブランチと、差分があるファイルの一覧は以下のような感じで
git --stat hogefoo_branch
  • リモートにしかブランチがない場合は、いったんローカル fetch から 一覧取得する
git fech origin hogefoo_branch  <-- リモートリポジトリ origin の hogefoo_branch ブランチを取得  
git --stat hogefoo_branch
  • カレントディレクトリの変更状況は、一応書いておくと以下。(これはいつも使うので、私は忘れません)
git status

HEAD のブランチの張替

git symbolic-ref HEAD refs/heads/hogefoo-branch`
  • 私の場合は、たまに使いたくなる。
    普通に clone してで最初にカレントブランチになるものがこれで変えられる。

リモートの名前を変更する

git remote origin  hoge_remote
  • 普通に clone するとリモートリポジトリの別名は、origin になるが、
    それを変えたい場合に使う。
    ローカルリポジトリを、複数のリモートリポジトリを紐づけるときなどで使う。

リモートを追加する

git remote add foofoo_remote   git@github.com:FooFooUserName/foo_prj.git`
  • これも、ローカルリポジトリを、複数のリモートリポジトリを紐づけるときなどで使う。

リモートブランチを消す

git push :hogefoo_branch
  • いらなくなった個人リポジトリを消すときなどに使う。
    個人リボジトリ、コミットし過ぎて、 base となるブランチから作り直したくなったりした場合に使う。
  • 何にもないローカルブランチを、リモートの hogefoo_branch に push する。
    だから消えるということらしい。

    • git push localhoge:hogefoo_branch は、ローカル localhoge ブランチを リモートの hogefoo_branch ブランチとして pushする
      という意味なので、上のやり方で、リモートブランチが消える。 「3.5 Git のブランチ機能 - リモートブランチ
      にのっている。

WinMerge を Windows のGitシェルのdiffツールに使う

6月 6th, 2013 Posted in git, PC/システム開発

Windows環境で、git diff したときに WinMerge で比較できるようにした時のメモ。 (GitForWindowsのシェルを使用することを前提)

手順

  • extDiff.sh に以下の内容を書いて、パスを通したディレクトリに配置する
#!/bin/sh

# If there are seven arguments, new file and old file will be passed to an argument. 
[ $# -eq 7 ] && /c/<WinMergeのインストールディレクトリ>/WinMergeU "$2" "$5"
  • コマンド git config --global diff.external extDiff.sh を実行

参考

Gitblit で Git サーバを構築する

5月 28th, 2013 Posted in git, PC/システム開発 Tags: ,

ブログ 「イマドキのIDE事情 第154回 簡単デプロイ!「Gitblit」で共有Gitサーバを手軽に構築 」 で、Gitblit というものが紹介されていましたのでやってみました。

バイナリの入手

  1. Gitblitの本家サイトhttp://gitblit.com/ の「Download Gitblit GO」 をクリックして ダウンロードサイトへ遷移し、zip圧縮されたバイナリを入手します。 (2013-5-28 時点のバージョンは gitblit-1.2.1.zip )
    「Gitblit GO」は Jetty を内蔵していて、単独で動作するようです
  2. gitblit-?.?.?.zip を適当なディレクトリに解凍して、配置します
  3. <Gitblit の配置ディレクトリ>/data/gitblit.propertiesserver.httpPort = の設定を修正します。
    今回は、 server.httpPort = 8080 を設定してみました。 ( 参考:Gitblitの本家のsetup )
  4. 今回は、Windows環境で試したので <Gitblit の配置ディレクトリ>\gitblit.cmd をコマンドプロンプトで実行します。
    ( シェル実行用の gitblit も存在してます。Linux ならそちら )
  5. http://localhost:8080/ にアクセスします。(ポート番号は上で設定したものになります)
    すると、Gitリポジトリ一覧のWeb画面が表示されます。
  6. 「リポジトリ作成」をクリックし、「名前」にリポジトリを入力して、「保存」ボタンを押下すると、 gitリポジトリの出来上がりです。
    • リポジトリをローカルにクローンするには git clone http://localhost:8080/git/<リポジトリ名>.git でできます

感想

  • 参照元の記事では、「Gitblit War」をTomcat に乗せる方法を説明されていましたが、
    「Gitblit GO」はTomcatをセットアップする必要もなく、すごく簡単です。

Gitでグラフィカルなmergeツールを使用するメモ

3月 1st, 2012 Posted in git, PC/システム開発, 作業メモ
    git diff

とかする時に、CUI のdiff結果ではイメージしにくいので
GUIのdiffツールで参照や修正ができるようにします

使用するソフトウエア

  • Git
  • Meld (Diffビューア、ファイル比較およびマージ)
  • “gtk2-engines-pixbuf”
    • 下のような警告がでたので、それを回避するためにインストール

      「Gtk-WARNING **: module_path にはテーマ・エンジンがありません: “pixmap”,」

環境

  • Ubuntu 11.10

手順

  1. 『Ubuntuソフトウエアセンター』で
    • Git , Meld , gtk2-engines-pixbuf をインストールする
  2. PATH が通ったディレクトリに以下の内容の “extDiff.sh” を作成する

    #!/bin/sh
    
    # If there are seven arguments, new file and old file will be passed to an argument. 
    [ $# -eq 7 ] && meld "$2" "$5"
    
  3. “~/.gitqconfig”を編集して以下を追加する

    [merge]
      tool = extMerge
    [mergetool "extMerge"]
      cmd = meld "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
      trustExitCode = false
    [diff]
      external = extDiff.sh
    

Gitの使い方メモ

2月 29th, 2012 Posted in git, PC/システム開発, 作業メモ

SSH用の公開鍵、秘密鍵のペアを作成する

ssh-keygen -t rsa -C "name@hoge.foo.com"
  • “name@hoge.foo.com” の部分は自分のメールアドレスにする
  • このコマンドの後、色々と対話的に入力を求められる。それなりに入力

git の設定(全体)

git config --global user.name "好きな名前を何か"
 git config --global user.email "empty@foo.foo"
 git config --global color.ui auto
 git config --global core.editor 'vim -c "set fenc=utf-8"'
 git config --global core.autocrlf false

この設定内容は、 “~/.gitconfig” に反映されます。

改行の自動変換をしたい場合は、 “git config –global core.autocrlf true” を設定します。

公開されている git リポジトリを、ローカルにコピーする

 git clone [url] 
  • 今回は自分のgithubのリポジトリをコピーするので下のようにした git clone git@github.com:yangiYA/y_s_util.git これにより、リモートのgitリポジトリが、ローカルリポジトリにコピー(clone)されます

ローカルリポジトリの設定状態を確認する コピーされた gitリポジトリ(y_s_util)の設定を確認すると、以下のようになっています

cat y_s_util/.git/config

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@github.com:yangiYA/y_s_util.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

私がハマった点

git remote add [リポジトリの短縮名] [リモートのリポジトリurl] とかすると、
“[cloneしたローカルリポジトリのパス]/.git/config” にその情報が 保存されるということがよく分かっておらず、混乱してしまいました。