2010年11月23日火曜日

【翻訳】あなたの知らないGit Tips

Mislav Marohnićさんの "A few git tips you didn't know about" を翻訳しました。
元記事はこちら: http://mislav.uniqpath.com/2010/07/git-tips/
(翻訳の公開は本人より許諾済みです)

翻訳の間違い等があれば遠慮なくご指摘ください。

あなたの知らないGit Tips


 Git  version 1.7.2 
OS X Homebrew  brew install git


git log 

$ git log --oneline --decorate
7466000 (HEAD, mislav/master, mislav) fix test that fails if current dir is not "hub"
494a414 fix cherry-pick of a commit URL
4277848 (origin/master, origin/HEAD, master) whoops
d270fae bugfix: git init -g
9307af3 test deps
8ccc17e http://github.com/defunkt/hub/contributors
64bb19c bugfix: variable name
546726a dont need you
3a8d7af (tag: v1.3.1) v1.3.1
197f429 (tag: v1.3.0) v1.3.0
a1e1a50 not important
3c6af16 magic `cherry-pick` supports GitHub commit URLs and "user@sha" notation


diff 

$ git diff --word-diff
# Returns a Boolean.
def command?(name)
  `type -t [-#{command}`-]{+#{name}`+}
  $?.success?
end

 git log -p  git show diff 使



 status 

$ git status -sb
## thibaudgg...thibaudgg/master [ahead 1, behind 2]
 M ext/fsevent/fsevent_watch.c
?? Makefile
?? SCEvents/
?? bin/fsevent_watch

git status  Git  status 



 push 

$ git push -u origin master
# "master" ブランチを "origin" リモートへプッシュして、さらに追跡させる

git pull  git push Git 

 git push  push "matching"  push 


$ git config --global push.default tracking
これで、まだ push する準備が整っていないブランチを誤って push することが避けられる。
20120307 Git 1.7.4.2 push.default  "tracking" "upstream"  "tracking" 使

20140919 Git 2.0 push.default  "simple" "simple"  push Git 

$ git checkout -t origin/feature
# "feature" ブランチを作成してチェックアウトし、
# "origin/feature" を追跡させる。

 git push 



master  rebase  merge 

# "master" ブランチ上にいるとき:
$ git checkout feature && git rebase @{-1} && git checkout @{-2} && git merge @{-1}
# "feature" を "master" へ rebase して、それを master へ merge する

"@{-n}" n"feature" "@{-1}"  "master" rebase "@{-1}"  rebase  "feature"  "@{-2}" 使 master 

 Björn Steinbrinkh 2 


$ git rebase HEAD feature && git rebase HEAD @{-2}

2Git1.7.3.2Twitter



pull  merge  rebase 

$ git pull --rebase
# 例) "master" ブランチ上にいるなら、 `git fetch origin` をしてから、
# `git rebase origin/master` を実行したのに等しい。

Git 1 git pull rebase 

--rebase  rebase 


# master 上で `git pull` するときは常に rebase を使う
$ git config branch.master.rebase true




# 全追跡ブランチで rebase を使う
$ git config --global branch.autosetuprebase always

2012037Git 1.7.9  pull.rebase  config  true  git pull  rebase  branch.master.rebase  false master  git pull  merge 


# 全追跡ブランチで rebase を使う・その2
$ git config --global pull.rebase true


ある変更がどのリリースの一部なのか見つける

$ git name-rev --name-only 50f3754
"tags/v2.3.8~6"
コミットの SHA-1 ハッシュはわかるのだが、そのコミットがプロジェクト履歴のどこに位置しているかわからないということは珍しくない。もしあなたが私に似ているなら、多分あなたはその変更があるリリースで発生したのか、それとも違うのかが知りたいだろう。そのコミットに対して git show を使えばコミットメッセージは見れるし、日付も差分も見られるのだが、それらはちっとも助けてはくれない――特に、コミットした日付と、それを成果物に適用した日付が必ずしも一致しないような時には。

name-rev コマンドはプロジェクトにおいてコミットと関係のあるタグを教えてくれる。上記の例は Ruby on Rails リポジトリから持ってきたものだ。この場合は "v2.3.8" とタグ付けされる6つ前にそのコミットが位置していることを教えてくれている――つまりこの変更は Rails 2.3.8 に存在していると確定できる。

このコマンドはさらに有用性がある。いくつかのコミットに言及するような議論に参加したとしよう:

このバグは e6cadd422b72ba9818cc2f3b22243a6aa754c9f8 で混入したものだが、私の記憶が確かなら 50f3754525c61e3ea84a407eb571617f2f39d6fe で修正されている。


上の文章をクリップボードにコピーして git name-rev へパイプで渡すと、文章中にあるコミットの SHA-1 ハッシュを認識してそれぞれにタグ情報を付加してくれる:

$ pbpaste | git name-rev --stdin
"このバグは e6cadd422b72ba9818cc2f3b22243a6aa754c9f8 (tags/v2.3.6~215) で混入したものだが、
私の記憶が確かなら 50f3754525c61e3ea84a407eb571617f2f39d6fe (tags/v2.3.8~6) で修正されている。"

 git help describe



$ git branch --contains 50f3754

"-a" 



# "feature" ブランチにいる場合に:
$ git cherry -v master
+ 497034f2 Listener.new now accepts a hash of options
- 2d0333ff cache the absolute images path for growl messages
+ e4406858 rename Listener#run to #start

cherry  cherry-pick 調便featuremaster "-"  "+" 



$ git show :/fix
# メッセージ中に "fix" を含む最後のコミットを表示

$ git show :/^Merge
# 最後のマージコミットを表示


 fetch 

$ git config remotes.default 'origin mislav staging'
$ git remote update
# リモートの "origin"、"mislav"、"staging" をfetch

remote update fetch 


$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup


$ git notes add
# 最後のコミットに注釈を追加するためにエディタが開く

Git  notes notes notes 



"hub" 


Hub  Github  Git  Github  hub 


Gitに関する翻訳記事はこちらもどうぞ: A successful Git branching model を翻訳しました


0 件のコメント:

コメントを投稿

フォロワー