1、git 配置
git config --global user.name 'XXXX' //設(shè)置全局用戶名
git config--global user.email 'XXXXX' //設(shè)置全局用戶郵箱
2、git 基本操作(* 表示任意字符)
git init // 創(chuàng)建倉庫
git add * //將文件加入暫存區(qū)
git commit -m 'XXXXX' //將暫存區(qū)的文件提交到倉庫中
git status // 查看狀態(tài)
git diff (*) // 查看全部文件*(指定文件)的具體修改
git log // 查看歷史提交記錄
git cherry-pick <commit id> // 將指定的提交(commit)應(yīng)用于當(dāng)前分支。
git stash // 暫時(shí)將未提交的變化移除
git stash pop // 移入上次未提交且被移除的內(nèi)容
3、版本回退
git reset --hard HEAD^ //回退到上一個(gè)版本
git reset --hard HEAD^^ //回退到上上個(gè)版本
git reset --hard 'commit_id' //回退到指定版本號(hào)
git push --force // 遠(yuǎn)程分支回退
git reflog //查看想要回退的版本號(hào)
git reset HEAD * //對(duì)其已進(jìn)入暫存區(qū)的修改
git rever HEAD~3 // 丟棄最近的三個(gè)commit,把狀態(tài)恢復(fù)到最近的第四個(gè)commit,并且提交一個(gè)新的commit來記錄這次改變。
git rever -n master~5..master~2 //丟棄從最近的第五個(gè)commit(包含)到第二個(gè)(不包含),但是不自動(dòng)生成commit,這個(gè)revert僅僅修改working tree和index。
git rm //刪除文件
注意:reset與revert的區(qū)別
git rever :
(1) 是用一次新的commit來回滾之前的commit
(2) 是用一次逆向的commit '中和'之前的提交,因此日后合并老的branch時(shí),導(dǎo)致這部分改變不會(huì)再次出現(xiàn)
(3) 是HEAD繼續(xù)前進(jìn),只是新的commit的內(nèi)容和要revert的內(nèi)容正好相反,能夠抵消要被revert的內(nèi)容
git reset :
(1) 是直接刪除指定的commit
(2) 把某些commit在某個(gè)branch上刪除,因而和老的branch再次merge時(shí),這些被回滾的commit應(yīng)該還會(huì)被引入
(3) 是把HEAD向后移動(dòng)了一下
4、git分支管理
git branch //查看本地分支信息
git branch Dev //創(chuàng)建分支
git checkout dev //創(chuàng)建并進(jìn)入分支
git merge dev //合并分支到當(dāng)前分支
git merge --no-ff dev //禁止快進(jìn)式合并
git branch -D dev //刪除分支
git branch -r -D origin/dev //刪除遠(yuǎn)程分支
5、遠(yuǎn)程倉庫
git clone url //克隆遠(yuǎn)程倉庫到本地
git remote add origin url //添加遠(yuǎn)程倉庫
git push -u origin master //推送到遠(yuǎn)程分支(-u 將本地的master和遠(yuǎn)程的master關(guān)聯(lián)起來)
git fetch //獲取遠(yuǎn)程倉庫的更新到本地,但是不合并
git pull //獲取更新內(nèi)容后自動(dòng)合并
git remote //查看遠(yuǎn)程分支
6、建立本地分支與遠(yuǎn)程分支的關(guān)聯(lián)
git branch --set-upstream 'local_branch' origin/'remote_branch'
7、修改本地倉庫對(duì)應(yīng)的遠(yuǎn)程倉庫的地址
git remote 'set_url' origin url
8、 ==cherry-pick== 的用法
// 將指定的提交commitHash,應(yīng)用于當(dāng)前分支
git cherry-pick <commit id>
// 將feature分支的最近一次提交,轉(zhuǎn)移到當(dāng)前分支
git cherry-pick uat
注: git cherry-pick命令的參數(shù),不一定是提交的哈希值,分支名也是可以的,表示轉(zhuǎn)移該分支的最新提交
(1) 舉例來說,現(xiàn)有代碼倉庫有master
和uat
兩個(gè)分支:
a - b - c - d master
\
e - f - g uat
(2) 現(xiàn)將提交f
應(yīng)用到 master
分支
// 切換到 master 分支
git checkout master
// cherry-pick 操作
git cherry-pick f
// 此時(shí)代碼倉庫會(huì)變成
a - b - c - d - f master
\
e - f - g uat
(3) cherry-pick
支持一次轉(zhuǎn)移多個(gè)提交
// 將 A 和 B 兩個(gè)提交應(yīng)用到當(dāng)前分支
git cherry-pick <HashA> <HashB>