git的操作流程
git init //初始化,把目錄變成倉庫
git add fileName //把文件添加到暫存區(qū)預(yù)備上傳
git commit -m 'infor' //把暫存區(qū)的文件提交到當(dāng)前分支 并且添加上傳說明比如'add 2 files'
git status //查看倉庫當(dāng)前狀態(tài)會告訴我什么文件被修改了
git diff //顧名思義就是查看每次修改的difference只是提交前修改的
git log //查看歷史記錄
git reset --hard HEAD~版本號 //回退版本 HEAD指向當(dāng)前版本
//如果不寫 HEAD就可以在版本里歷史中穿梭(可能會出現(xiàn)退出不了的情況這個時候按q)
git reflog //可以查看每一次命令記錄(可以查看版本號)
git reset --hard 版本號 //退回到一個版本(利用版本號)
git checkout -- fileName //可以把暫存區(qū)的內(nèi)容會退到上一次add操作的內(nèi)容或者上一次commit之后的內(nèi)容
工作區(qū)和版本區(qū)
工作區(qū)指的是代碼區(qū),版本庫指的是.git目錄
git add命令實(shí)際上就是把要提交的所有修改放到暫存區(qū)(Stage),然后,執(zhí)行g(shù)it commit就可以一次性把暫存區(qū)的所有修改提交到分支。
git commit只負(fù)責(zé)把暫存區(qū)的修改提交了。
添加遠(yuǎn)程庫如github中的庫
首先要在github上增加一個ssh key秘鑰來確定身份
打開git bash 輸入
ssh-keygen -t rsa -c "注冊郵箱" //創(chuàng)建SSH Key
//然后在用戶主目錄/.ssh/下有兩個文件,id_rsa是私鑰id_rsa.pub是公鑰
start ~/.ssh/id_rsa.pub //來獲取公鑰
//登錄github 打開ssh key頁面 新增一個ssh key
ssh -T git@github.com //如果出現(xiàn)success則表示成功
遠(yuǎn)端github能夠與本地建立連接后就可以把本地內(nèi)容推送到遠(yuǎn)程github
git remote add origin githttps://github.com/csq121605366/my-resume.git
//上面的命令是增加一個庫在github上, origin是新建庫的名字
git push -u origin master //第一次推送 -u是關(guān)聯(lián)分支和master
git push origin master //以后推送的命令
git clone github倉庫地址
//克隆一個本地庫
分支管理
git branch //查看分支
git checkout -b name //創(chuàng)建分支并切換 -b表示創(chuàng)建并切換相當(dāng)于下面兩條命令
git branch name //創(chuàng)建分支
git checkout name //切換到分支(常用)
git merge name //合并dev分支到master上
git branch -d name //刪除dev分支(-D為強(qiáng)制刪除分支,有時候分支沒有合并就要被刪除 這個時候用)
git merge --no-ff -m "info" name
//合并分支時,加上--no-ff參數(shù)就可以用普通模式合并,合并后的歷史有分支,能看出來曾經(jīng)做過合并,而fast forward合并就看不出來曾經(jīng)做過合并。
BUG分支
git stash //存儲當(dāng)前工作區(qū)
git stash list //查看當(dāng)前工作區(qū)的暫存區(qū)列表
git status //查看狀態(tài)
git checkout master //轉(zhuǎn)移到問題區(qū)解決問題
git checkout dev //返回工作區(qū)繼續(xù)完成工作
git stash apply stash@{num} //回復(fù)工作區(qū)(但是不刪除存儲的臨時內(nèi)容)
git stash drop stash@{num} //刪除暫存區(qū)
git stash pop //回復(fù)工作區(qū)同時把stash內(nèi)容刪除
多人協(xié)作
git remote //查看遠(yuǎn)程庫的信息
git remote -v //查看更詳細(xì)的信息
git push origin master //把master主線推送到origin遠(yuǎn)程庫中當(dāng)然也可以推送其他分支
git clone 倉庫地址 //可以將遠(yuǎn)程庫克隆到本地
//克隆到本地的內(nèi)容默認(rèn)情況下只能看到masetr分支
git checkout -b dev origin/dev
//就可以創(chuàng)建遠(yuǎn)端origin的dev分支到本地
//當(dāng)git的push操作出現(xiàn)問題,就是出現(xiàn)沖突的時候
git pull //先把最新的提交從origin/dev 抓取下來,然后本地合并,解決沖突,再推送
git branch --set-upstream 本地分支名 遠(yuǎn)端庫名/遠(yuǎn)端分支名
//上面的操作時將遠(yuǎn)端庫的分支與本地建立聯(lián)系
創(chuàng)建標(biāo)簽
git tag v1.0 //創(chuàng)建標(biāo)簽
git tag //查看標(biāo)簽
git log --pretty=oneline --abbrev-commit //查看commit提交歷史
git tag 版本號 對應(yīng)的commit id如下
git tag v1.0 6224937
//還可以創(chuàng)建帶說明的標(biāo)簽
git tag -a v1.0 -m "version:1.0" 6224937
git show v1.0 //查看說明
git tag -d v1.0 //刪除標(biāo)簽
git push origin v1.0 //推送某個標(biāo)簽到遠(yuǎn)程
git push origin --tags //一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽
//刪除遠(yuǎn)程庫的tag信息
//首先刪除本地的tag信息
git tag -d v1.0
//然后從遠(yuǎn)程刪除,刪除命令也是push
git push origin :refs/tags/v1.0
配置別名
為了方便快捷的操作
git config --global alias.st status //將status縮寫為st
git config --global alias.unstage 'reset HEAD'
//將展示log信息縮寫為lg
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"