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 --sharedlocal 起始的 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 headcommit 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
看前面十筆 loggit 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。
沒有留言:
張貼留言