在ubuntu 14.04上安裝
sudo apt-get install git
安裝用到的依賴或工具
sudo apt-get install git-doc git-svn git-email git-gui gitk
第一次使用前的配置
git config --global user.name "Elvin"
git config --global user.email "[email protected]"
創建一個倉庫(文件夾),並初始化倉庫
mkdir -p /home/elvin/git_test
cd /home/elvin/git_test
git init
創建或修改一個文件
sudo touch test.txt
把文件加入暫存區
git add test.txt
提交文件到現在的分支中
git commit -m "a first test file"
查看當前分支的日誌文件
git log
只顯示各提交版本的commit id
git log --pretty=oneline
回退到上一個版本
git reset --hard HEAD^
git reset --hard 3628164
查詢各版本號
git reflog
查詢上一個已提交版本與當前文件間的差別
git diff HEAD -- readme.txt
撤銷已修改的工作區文件到上一次暫存或者上一個版本
git checkout -- readme.txt
撤銷已放入暫存區文件到工作區
git reset HEAD readme.txt
對於add入暫存區的文件,若誤刪除了,要恢復也可以
git checkout -- readme.txt
若是真正需要刪除,刪除後需要
git rm readme.txt
git commit -m "remove readme.txt"
創建SSH Key
ssh-keygen -t rsa -C "[email protected]"
在用戶主目錄的.ssh目錄中,id_rsa爲私匙,id_ras.pub爲公匙
公匙內容貼到GitHub Account setting內的SSH Keys頁面中,完成SSH Key的關聯
關聯本地庫和遠程庫
git remote add origin [email protected]:elvinsys/git_test.git
把本地庫內容推送到遠程庫(前提是遠程庫爲空庫,此爲第一次本地推到遠程)
git push -u origin master
以後的推送方式直接用
git push origin master
從遠程庫克隆鏡像到本地
git clone [email protected]:elvinsys/git_test.git
(關於地址
https://github.com/elvinsys/git_test.git 爲https協議
[email protected]:elvinsys/git_test.git 爲ssh協議
(在win7-64bit的安裝和使用)
安裝包從https://git-for-windows.github.io 下載,下載後打開Git Bash進行操作
配置user.name和email,創建倉庫目錄,初始化倉庫
生成ssh key,ssh-keygen -t rsa -C "email(並不是遠程的email,而是本地的email"
在本地目錄下生成了兩個文件,爲XXX和XXX.pub,
把他們扔到~/.ssh裏,並改名爲id_rsa和id_rsa.pub(重要)
把id_rsa.pub的內容貼到github上就可以準備克隆拉數據了!
顯示分支
git branch
創建分支
git branch new-branch
刪除分支
git branch -d new-branch
強制刪除分支
git branch -D new-branch
切換分支
git checkout new-branch
創建並切換到剛創建的分支上(等同於 git branch new-branch 再 git checkout new-branch)
git branch -b new-branch
合併某分支到當前分支
git merge new-branch
對於產生的分支衝突(branch conflict)只能手動修改後才能正常合併
帶可視化圖形log命令
git log --graph --pretty=oneline --abbrev-commit
爲了避免Fast Forward模式所造成的分支信息丟失的情況,可以通過禁用ff模式來合併分支
git merge --no-ff -m "merge with no-ff" new-branch
在非正式版master分支的工作分支上開發途中,通過保存現場,可臨時切換到其他分支進行其他的工作
git stash
git checkout other-branch
當在其他分支工作完成後,可切回原先的分支,查看stash列表後,恢復現場,回覆後要刪除
git checkout now-branch
git stash list
git stash apply
git stash drop
(或者git stash pop,效果相等於先apply,然後自動drop)
(關於多人協作)
A君把master和dev兩個分支push上github
git push origin master
git push origin dev
B君要把dev從服務器上拉下拉,先把現在的工作分支另起一分支,刪掉原分支,再拉數據
git checkout -b dev_tmp
git branch -d dev
git fetch
git checkout -b dev origin/dev
修改後在push上github
對當前分支版本打新標籤
git tag v1.0
查看所有的標籤
git tag
對以往某個版本打新標籤,要先查到那個版本的commit id
git tag v1.0 62e6714
打標籤的同時,通過加入 -a -m 選項指定標籤名和說明文字
git tag -a v1.0 -m "merge two files"
跳到某標籤處,和查找commit id一樣
git reset --hard v1.0
推送某個標籤到遠程
git push origin v1.0
推送所有標籤到遠程
git push origin --tag
刪除本地標籤
git tag -d v1.0
刪除遠程標籤,要先刪除本地的
git tag -d v1.0
git push origin :refs/tags/v1.0
讓Git顯示顏色
git config --global color.ui true
讓Git忽略一些無需關注的文件,例如編譯後生成的中間文件,如:*.o
在工作去創建特殊文件.gitignore,把需要忽略的文件格式填進去。
(配置文件可從https://github.com/github/gitignore下載)
添加被.gitignore忽略的文件
git add -f test.o
檢查.gitignore中的規則
git check-ignore -v test.o
配置git status命令的別名爲git st
git config --global alias.st status