目錄
基本概念:
add之前是工作區,add之後是暫存區,commit之後是本地倉庫
pull拉取遠程倉庫,push 推送到遠程倉庫
初始化倉庫:
$git init 初始化一個目錄,並創建一個.git目錄
提交代碼:
$git add <filename>,把修改文件添加到暫存區
$git commit -m '提交日誌信息' 把暫存區的內容提交到本地倉庫
$git commit -a -m '信息' 上面兩步一起執行, 只對已在分支上的文件有效
查看創庫變化:
$git status 查看倉庫狀態
$git diff <filename> 查看未提交修改,
$git diff HEAD --<filename> 查看工作區與版本庫的所有修改
$git log 查看提交日誌 $ git log --pretty=oneline 單行顯示
版本回退和前進:
$git reset --hard <版本號> ,如果是HEAD^ 回退一步,也可以回退多步HEAD~100
$git reflog 查看歷史操作,可以得到被回退得版本號 是git log辦不到得
丟掉修改:
$git checkout -- <filename> 可一丟掉工作區得修改 。撤銷該文件得最後一次工作區操作
如果要丟帶暫存區 必須先 git reset HEAD <filrname> 回退add操作,再執行checkout操作
如果已經commit,那就只有進行版本回退了
文件刪除:
方式一:手動刪除然後 git add 就行了
方式二:直接$git rm <filrname> 就行
兩種方式都需要commit操作,才能提交到本地倉庫
遠程倉庫:
$ssh-keygen -t rsa -C "email" 創建SHH Key 密鑰, 在用戶目錄會生成.shh目錄,需要使用是id_rsa.pub文件的公鑰
$git clone <倉庫地址> 克隆遠程倉庫到當前目錄
$git remote add origin <倉庫地址> 本地倉庫與遠程倉庫關聯
$git push -u origin master 推送本地倉庫到遠程,第一次要使用 -u
地址使用區別,git協議比https協議快
創建合併分支:
$git pull origin dev 拉去遠程dev分支並切換過去
$git checkout -b branch-name origin/branch-name
$git branch 參看分支 當前分支會帶*
$git branch dev 創建dev分支
$git push origin dev 第一次提交本地創建的分支
$git checkout -b dev 創建dev分支並切換到dev
$git checkout master 切換到master分支
$git switch -c dev 創建dev分支並切換到dev switch 2.23版之後纔有 使用git --version 查看版本
$git switch master 切換到master分支
$git merge dev 把dev分支合併到當前分支
$git branch -d dev 刪除本地dev分支
$git push origin --delete test 刪除遠程test分支
$git rebase 把本地未鋪設的分叉提交歷史整理成直線
解決衝突:
解決思路,修改衝突文件保留自己需要的
$git add 提交修改
$git commit -m '提交信息'
Bug分支(工作現場):
$git stash 保存工作區並隱藏,爲了不營銷切換分支
$git stash list 查看工作現場
$git stash apply stash@{0} 恢復工作現場
$git stash drop 刪除stash
$git stash pop 恢復工作現場並 刪除stash
多人協作:
$git remote -v 查看遠程庫信息 網址
$git push origin <name> 推送指定分支到遠程
多人協作處理衝突思路:
1.git pull 拉下代碼 正常處理衝突
2.任何再push (如果命令失敗根據提示執行命令)
標籤管理:
$git tag <name> [commitid] 創建新標籤 標籤是打在commit節點上 和分支無關; 用-a
指定標籤名,-m
指定說明文字
$git tag -a v0.1 -m "version 0.1 released" 1094adb
$git tag 查看tag
$git show <tagname> 查看tag描述
$git tag -d <name> 刪除tag
$git push origin <tagname> 推送tag到遠程
$git push origin --tags 推送全部
$git push origin :refs/tags/tagname 刪除遠程tag
.gitignore配置規則
在倉庫根目錄下新建該文件
配置語法(pattern規則)
- 以 / 開頭表示根目錄,防止遞歸
- 以 / 結尾表示指定目錄
- 以 ! 開頭表示不過濾(跟蹤)此項配置匹配到的文件或目錄
- 以 # 開頭表示註釋,如需轉義在前面加斜槓,/#
- 配置規則可以使用標準的glob模式匹配(glob模式是指shell所使用的簡化了的正則表達式)
- * 通配符,多字符通配
- **表示匹配任意中間目錄如,a/**/z 表示可以匹配a/z、a/s/z或 a/a/s/z 等
- ? 通配符,單字符通配
- [] 可以匹配任何一個在方括號中的字符, 如*.[ac] 表示匹配任何以 .a 或者 .c 結尾的文件,如果[]中有短劃線 - 分割兩個字符,則表示所有兩個字符範圍內的都可以匹配如 [0-9]