使用前需要先安裝git

cd /usr/ports/devel/git
make install clean

基本操作

git config --global color.ui true #開啟顏色,使git內容不會只有單一白色
git config --global user.name "johnsonlu" #設定名稱
git config --global user.email "johnsonlu@email.com" #設定信箱
git config --global core.editor "vim" #設定預設編輯器
#預設push的設定
#matching:代表自動push出所有與remote端branch相同名稱的branch
#simple:只push當前所在的branch
git config --global push.default <matching or simple>

git init #初始化git
git add filename #新增檔案
git add -p filename #新增檔案部份片段程式(進去內部後可以使用s再細分,也可以用e針對每一行處理,把不需要進這次commit的行數用#字號註解)
git add modifyfile #新增修改過的檔案
git add -u #只新增修改過的檔案,新增的檔案不加入

git rm filename #刪除檔案(原始檔案一併刪除)
git rm --cache filename #刪除檔案(不刪除原始檔案)
git mv filename new-filename #修改檔案

git status #看目前檔案的狀態

git commit
git commit -m "commit message" #增加註解
git commit -a #將所有修改過得檔案都 commit,但是新增的檔案還是要先add
git commit -a -v # -v 可以看到檔案哪些內容有被更改
git commit --amend #修改上次commit訊息
git commit --amend <file1> <file2> #將檔案加入上一次commit
git commit --amend --reset-author #將上次commit的作者資訊更新

git diff #查看git server上有哪些資料不同
git diff master #查看與master有哪些資料不同
git diff --stat #查看哪些檔案不同(只顯示答案)

git branch #列出目前有多少branch
git branch -a #列出所有branch
git branch test-branch #產生新的branch
git branch test-branch master #由master產生新的branch
git branch -d test-branch #刪除branch
git branch -D test-branch #強制刪除branch

git checkout branch-name #切換到branch-name
git checkout master #切換到master
git checkout -b test-branch master #從master建立新的branch,並同時切換過去
git checkout <commit_hash> -b test #切換到某次commit並建立新的branch
git checkout --track origin/branch #取得remote branch

git push git@github.com:test/test.git #傳上github(origin/master)
git push git@github.com:test/test.git branch #將branch傳上git server((origin/master))
git push git@github.com:johnson4932/test.git :branch #將git server上的branch刪除(以github為例,上傳與刪除差別在於冒號)
git push <origin> --delete <branch> #另一種刪除線上branch的方法
git pull git@github.com:test/test.git #將該專案的檔案從git server拉下來merge(以github為例)
git clone git@github.com:test/test.git #將該專案資料夾從git server clone一份出來(以github為例)
git clone git@github.com:test/test.git --branch <branch> #clone branch

git merge test-branch #將test-branch merge 到現在的branch

git log --stat #可以看到commit紀錄
git log --author account #可看到該accout的log
git log --graph --oneline --all #顯示git樹狀結構

#復原
git checkout <deleteing_commit>^ -- <file_path> #還原已經commit刪除的檔案
ex: git checkout b05128e3ebd4f38c317f066d679aee21c7d3af65^ -- config/ldap-sample.php

git checkout -- <file_path> #將還沒add但已修改的檔案還原
git reset HEAD <file_path> #將已經add還沒commit的檔案還原
git reset HEAD^ #將最後一次commit釋放掉
git reset <commit_hash> #釋放commit到特定版本
git revert HEAD #回到上一次commit版本(會做一次commit)

另外有個可以取代直接git log的好東西,叫做tig,算是git log的瀏覽介面
可以直接下tig指令查看log

FreeBSD安裝

cd /usr/ports/devel/tig
make install clean
Categories: Git