Git使用總結
一 前言
本文是參考和學習了網上資料之後的總結,不當之處希望大家及時指正。
1、 Git教程
2、 Git官方文檔
二 安裝Git
1、 Linux
CentOS
yum install git
Ubuntu
apt-get install git
2、 Mac OS
兩種方法:
安裝homebrew,然後通過homebrew安裝Git,具體方法請參考homebrew的文檔:http://brew.sh/。
從AppStore安裝Xcode,Xcode集成了Git,不過默認沒有安裝,你需要運行Xcode。
選擇菜單“Xcode”->“Preferences”,在彈出窗口中找到“Downloads”,
選擇“Command Line Tools”,點“Install”就可以完成安裝了。
3、 Windows
下載安裝git shell,或者github客戶端。
設置用戶名和郵箱:
git config --global user.name "you_name" #設置全局用戶名
git config --global user.email "[email protected]" #設置全局郵箱
三、 Git使用
1、 創建本地倉庫
初始化所在目錄爲本地Git倉庫,該目錄可以不爲空(建議使用空目錄)。
git init
2、 添加文件到本地倉庫(倉庫即版本庫)
git add file [file1 file2 ...] # 添加文件file到暫存區stage
git add -f file [file1 file2 ...] # 強制添加file到stage(可用於添加忽略文件)
git commit -m "操作說明" # 把stage中的內容提交到倉庫
可以多次add,一次commit,此時所有的add的說明是一樣的。
可以一次add,一次commit,此時每個add都有自己的說明。
3、 時光穿梭機
- 查看狀態
git status # 查看倉庫當前狀態
- 查看差異
git diff [file] # 查看工作區和暫存區中[file]的差異
git diff --cached [file] # 查看暫存區和倉庫中[file文件]的差異
git diff HEAD -- [file] # 查看工作區和倉庫中[file]的差異
- 查看歷史
git log # 查看commit歷史信息
git log -1 # 查看最後一次commit信息
git log --pretty=oneline # 單行模式顯示
--graph # 用圖形顯示分支合併歷史
--abbrev-commit # 簡寫commit_id
git reflog # 查看所有操作記錄,包括回退,刪除
- 版本切換
git reset --hard HEAD^ # 回到上一版本
git reset --hard HEAD^^ # 回到上上版本
git reset --hard commit_id # 切換到commit_id(可以是簡寫的)指定的版本。
- 撤銷修改
git checkout -- [file] # 撤銷對工作區的修改(沒有執行add時)
git reset HEAD [file] # 撤銷對暫存區的修改(執行add,但沒執行commit時)
執行了commit,可以先使用上一步的版本回退。
刪除文件
shell命令刪除工作區文件,然後提交
rm file
git add file
git commit -m "說明"
git命令刪除工作區和暫存區文件,然後提交
git rm file
git commit -m "說明"
4、 遠程倉庫
- 在本地創建SSH Key
ssh-keygen -t rsa -C "[email protected]"
Linux下默認生成的 id_rsa 和 id_ras.pub 文件在 ~/.ssh/ 目錄下。
把 id_ras.pub 文件中的內容複製到,並添加到遠程倉庫(Git服務器)中,進行用戶註冊。
- 添加遠程倉庫
git remote add origin git@git-server-name:path/repo-name.git # 添加遠程庫
git remote # 查看遠程庫
git remote -v # 顯示遠程庫詳細信息
git remote add 的origin,是給遠程倉庫起的名字,可任寫。
- 推送並關聯遠程庫
git push -u origin master # 把本地倉庫的分支推送並關聯到遠程倉庫
其中,origin是添加遠程倉庫時指定的名字,與git remote add時一致。
master是分支名稱,master是主分支。
* 除第一次關聯外,之後push不需要 -u 選項 *
* 添加遠程倉庫後,第一次執行clone或者push時有報警信息,是提醒添加了一條對SSH信任的信息,請你確認是否有誤 *
- 從遠處倉庫克隆
git clone git@git-server-name:your-path/repo-name.git ## 克隆遠程倉庫到本地當前目錄
git pull # 拉取遠程庫內容到當前git倉庫目錄
5、 分支管理
git branch branch-name ## 創建分支branch-name
git checkout branch-name ## 切換到分支branch-name
git checkout -b branch-name ## 創建並切換到branch-name
git branch ## 查看所有分支
git branch -d branch-name ## 刪除分支branch-name
git branch --set-upstream branch-local branch-remote ##關聯本地branch-local到遠程倉庫branch-remote
git merge branch-name ## 合併分支branch-name
git merge branch-name --no-ff ## 禁用Fast-forward快速合併
git merge --no-ff -m "說明" branch-name ## 合併分支並添加說明
git stash ## 保存當前工作現場
git stash list ## 查看保存的列表
git stash apply ## 恢復stash中保存的工作現場
git stash pop ## 恢復並刪除stash
git stash drop ## 刪除stash
git branch -D branch-name ## 強制刪除分支(用於刪除未合併的分支)
git merge 使用–no-ff 選項,刪除分支後,可以記錄分支合併的歷史。
分支管理策略
如上圖,
① 一般主分支master用來發布版本,保證master分支非常穩定。
② dev分支用來進行開發,不斷迭代,保證可以編譯通過。
③ 每個人都有自己的分支,用來保存自己工作,保證自己代碼不丟失,同時也保證了dev分支能正常編譯,不影響其他開發者工作。Bug分支
先保存自己的工作區現場,然後從需要修復bug的分支(如master)建立一個自己的分支,進行bug修改,修改完後合併到master,最後恢復自己的工作區,繼續工作。
Feture分支
與Bug分支類似。添加新功能時,新建分支,完成新功能的添加。
多人協作
先從dev分支上pull拉取最新代碼,有衝突先解決衝突,最後再合併push到遠程倉庫。
6、 標籤管理
打標籤,可以記錄每次發佈版本對應的代碼的位置。
git tag ## 查看現有標籤
git tag v1.0 ## 給當前分支最新commit打標籤
git tag v0.9 commit_id ## 給指定的commit_id打標籤
git tag -a v0.1 -m "標籤說明" commit_id ## 給標籤添加說明
git tag -s v0.1 -m "標籤說明" commit_id ## 用gpg私鑰給標籤簽名
git tag -d v0.1 ## 刪除標籤v1.0
git show v0.2 ## 顯示標籤v0.2的信息
git push origin v1.0 ## 推送標籤v1.0到遠程倉庫origin
git push origin --tags ## 推送所有未推送的標籤到遠程庫origin
git push origin :refs/tags/v1.0 ## 刪除遠程倉庫中的標籤v1.0(先刪除本地,再使用該命令刪除)
7、 使用GitHub
GitHub開源協作社區, 世界級公用Git服務器。
- fork 已有項目,生成自己的分支;
- clone 在本地clone自己分支上的代碼,進行修改;
- pull request,修改完後commit,push到自己的分支,然後pull request 到源項目中,等待源項目作者合併到項目或者關閉。如果原作者是自己,則自己決定是否合併。
8、 自定義Git
- 設置配置參數
git config --list ## 查看git全局配置參數
git config --global user.name "you_name" #設置全局用戶名
git config --global user.email "[email protected]" #設置全局郵箱
git config --global color.ui true #設置全局顏色顯示
git config --global alias.<alias_name> <'command_name'> #設置別名
- 忽略特殊文件
在當前Git工作區目錄創建 .gitignore 文件,
內容舉例,如下:
#Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
#Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
#My configurations:
db.ini
deploy_key_rsa
有文件file不能add,被Git服務器忽略時,查看忽略該文件的規則:
git check-ignore -v <file> #查看忽略該文件的規則
可以使用 git add -f 選項進行強制添加。
- 配置別名列表
git config --global alias.confg 'config --global'
git confg alias.st status
git confg alias.co checkout
git confg alias.ci commit
git confg alias.br branch
git confg alias.unstage 'reset HEAD'
git confg alias.last 'log -1'
git confg alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %
- 搭建Git服務器
搭建教程:搭建Git服務器
Completed!
請開始你的表演!!~~