2012年7月3日

git 常用指令

實在是常常忘記指令,還是記一下好了

Config

讓 console output 有顏色:
git config --global color.ui true
設定 alias:
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.log1 'log --pretty=oneline'
列出所有 config:
git config --global -l
git config -l

Repository

如果是遠端已經有個 repo 你要抓下來:
git clone [repo_address] [local_dir_name]
如果你要在 local 起始一個 repo:
git init
如果是拿來給大家 push 的 repo 建議設成 base:
git init --bare --shared
local 起始的 repo 想 push 到遠端去備份的話要起碼要加一個 remote repo address:
git remote add origin [repo_address]
git push -u origin master
修改 remote repo address:
git remote set-url origin [repo_address]

Commit

把某個 file 推進 staging area:
git add [file_path]
把某個 file 拿出 staging area:
git reset [file_path]
把所有 tracking 的 files 推進 staging area:
git add -u
清空 staging area:
git reset head
commit staging area:
git commit -m '[comment]'
如果你 comment 寫錯了要修正:
git commit --amend -m '[comment]'
commit 完可以用 git log 查看紀錄,每一筆紀錄都有個 hash 值作為識別。
如果有需要的話也可以把特定的紀錄加個 tag:
git tag [tag_name] [comment_hash]
這樣以後要看這筆紀錄就下 git show [tag_name]。 tag 預設是不會隨著 git push 上傳到遠端的,想這麼做要自己來:
git push origin [tag_name]
如果你要把本機上所有的 tag 都丟上去:
git push origin --tags

See Log

看前面十筆 log
git log1 -10
看某個 branch 的前面十筆 log
git log1 -10 [branch_name]
看 server 上的 log
git fetch
git log1 -10 origin/master
看單筆 log 的內容
git show [commit_hash]

Branch / Checkout

查看現在有哪些 branch:
git branch
切換 branch(切換之前 staging area 要清空):
git checkout [branch_name]
開一個新的 branch:
git branch [branch_name]
或著也可以開完就順便切過去:
git checkout -b [branch_name]
改 branch 名字:
git branch -m [old_name] [new_name]
砍掉 branch:
git branch -d [branch_name]
branch 要 merge 的時候先切到你要保留的那個 branch(通常是 master):
git checkout master
然後下 merger 就會合成一筆。當然如果有 conflict 就要去解才會過就是了。
git merge [branch_name]
git branch 強大在你可以選擇好幾種 merge 方式,上面是預設的 straight merge,會有兩邊完整的 commit 紀錄外加一筆 merge 的紀錄。如果你覺得你中間亂七八糟 testing 的 commit log 不需要留下來,你也可以選擇用 squashed commit:
git merge --squash [branch_name]
這樣就只會有一筆 merge 的 log。
或者你根本只是 branch 出來做一做就發現不可行,可是中間過程有搞出某個你很得意的產物想單獨把這玩意兒 merge 回去行不行?當然行,這叫 cherry-pick,可以單獨 merge 某一筆 commit:
git cherry-pick [commit_hash]
甚至如果你想 pick 好多筆再一次 commit,每次 cherry-pick 多帶個 -n 就只會進 staging area 而等你自己下 commit。

沒有留言:

張貼留言