- 全局用戶信息配置:
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
注意:git config命令的--global參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置
- 初始化git倉庫:
$ git init
例:目錄不含中文名
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
- 添加文件到工作區:可添加多個
$ git add <filename>
例:
$ git add readme.txt
$ git add help.txt
...
- 提交到git倉庫:
$ git commit -m <message>
例:-m後面輸入的是本次提交的說明
$ git commit -m "添加了兩個文件."
- 查看提交的歷史記錄:
# 查看commit歷史記錄(不包括reset和已刪除的commit記錄)
$ git log
# 簡化輸出信息
$ git log --pretty=oneline
# 查看所有commit的歷史記錄(包括已刪除的commit和reset的記錄)
$ git reflog
- 版本回退:
# 根據commit id回退到具體版本(id可以只寫前幾位)
$ git reset --hard commit_id
# 退回到上一版本
$ git reset --hard HEAD^
# 退回到上上個版本
$ git reset --hard HEAD^^
# 退回到當前版本之前的指定個數版本
$ git reset --hard HEAD~100
- 查看工作區狀態:
$ git status
- 文件對比:
# 查看工作區文件和版本庫裏面最新版本的區別
$ git diff HEAD -- <filename>
- 撤銷修改:
git checkout -- <filename>
- 刪除工作區文件:與add使用方法相同
$ git rm <filename>
- 添加遠程倉庫:
git remote add origin git@server-name:path/repo-name.git
- 推送到遠程倉庫:
# 第一次推送 加上 -u
$ git push -u origin master
# 後續推送
$ git push origin master
- 克隆遠程倉庫:
$ git clone git@server-name:path/repo-name.git
- 分支管理:
#查看分支 當前分支前有*號
$ git branch
# 創建分支
$ git branch <name>
#切換分支
$ git checkout <name>
# 創建並切換分支
$ git checkout -b <name>
# 合併分支到當前分支
$ git merge <name> #刪除分支後,會丟掉分支信息
# 禁用Fast forward模式會產生一個新的commit
--no-ff:表示禁用Fast forward
-m:添加說明
$ git merge --no-ff -m "merge with no-ff" <name> #刪除分支後不會丟失分支信息
# 刪除分支
$ git branch -d <name>
#強行刪除未合併分支
git branch -D <name>
- 修改管理:
# 存儲所有未提交的修改
$ git stash
#查看stash
$ git stash list
# 恢復未提交修改
$ git stash apply
# 刪除stash
$ git stash drop
#恢復未提交修改並刪除stash 效果同apply+drop
$ git stash pop
多人協作相關:
# 查看遠程倉庫信息
$ git remote #簡單信息
$ git remote -v #詳細信息
# 推送到遠程倉庫
name:分支名稱
master:主分支
dev:開發分支
$ git push origin <name>
# 創建遠程倉庫的dev分支到本地
$ git checkout -b dev origin/dev
# 指定本地dev分支與遠程倉庫dev分支的鏈接
$ git branch --set-upstream-to=origin/dev dev
- 變基:
# 開始rebase
$ git rebase
# 衝突解決完後繼續rebase
$ git rebase --continue
# 停止rebase,回到rebase開始前的狀態
$ git rebase --abort
- 標籤管理:
# 查看標籤
$ git tag
# 查看帶說明的標籤
$ git show <name>
# 添加標籤
$ git tag <name>
# 添加帶說明標籤
$ git tag -a <name> -m "xxx"
# 添加歷史標籤
$ git log --pretty=oneline --abbrev-commit # 獲取歷史提交記錄
$ git tag <name> commit_id #爲歷史提交添加標籤
# 添加帶說明的歷史標籤
$ git tag -a <name> -m "xxx" commit_id
- 忽略特殊文件:
在Git工作區的根目錄下創建一個特殊的.gitignore文件
常見忽略文件:傳送門
文件文件原則:
忽略操作系統自動生成的文件:比如縮略圖等
忽略編譯生成的中間文件、可執行文件等:如Java編譯產生的.class文件
忽略帶有敏感信息的配置文件:比如存放口令的配置文件