安裝
在本機安裝git客戶端逻淌,下載地址:https://git-scm.com/downloads惜纸,根據(jù)本機的操作系統(tǒng)選擇git版本。
本地倉庫
本地倉庫又叫本地版本庫忍饰,即被git管理起來的本地目錄贪嫂,在此目錄下有名為 .git
的隱藏目錄。git 能夠跟蹤此目錄中所有文件的修改艾蓝、刪除力崇,以便追蹤歷史或還原版本。
一赢织、創(chuàng)建本地倉庫
- 打開目錄亮靴,單擊鼠標右鍵,點擊
Git Bash Here
- 在 git bash 命令行中輸入
git init
于置,回車茧吊,提示Initialized empty Git repository in C:/xx/.git/
- 當前目錄下生成
.git
隱藏目錄,本地倉庫創(chuàng)建成功
二八毯、工作區(qū)
在本地倉庫中搓侄,我們能夠看到的就是工作區(qū)
三、暫存區(qū)
暫存區(qū)保存的是從工作區(qū)提交的內容话速,通過 git add .
或 git add filename
命令來完成提交讶踪。既然是暫時存放,最終會通過 git commit -m "v1.0"
命令泊交,將暫存區(qū)的內容提交為本地倉庫的一個版本乳讥。
git ls-files 顯示暫存區(qū)中的文件
git ls-files -s 顯示文件對應的Blob對象柱查,通過Blob對象可查看文件內容
git ls-files -s file
git cat-file -p Blob對象名稱 通過Blob對象查看文件內容
git rm --cached file 將文件從暫存區(qū)中移除
四、版本區(qū)
git log 查看本地當前分支commit日志
git log --stat 查看每個commit的差異
git log | grep "msg" 查看本地當前分支包含“msg”的commit日志
git log BranchName | grep "msg" 查看本地指定分支包含“msg”的commit日志
git show commitId 查看commit內容
git show BranchName commitId 查看本地指定分支commit內容
git log origin/BranchName | grep "msg" 查看遠程指定分支包含“msg”的commit日志
五云石、查看各區(qū)不同
git status 查看工作區(qū)和暫存區(qū)的狀態(tài)
git diff 查看工作區(qū)和暫存區(qū)的不同
git diff --staged 查看暫存區(qū)和版本區(qū)的不同
git diff HEAD -- file 查看工作區(qū)與版本區(qū)不同
遠程倉庫
GitHub是一個面向開源及私有軟件項目的托管平臺唉工,Gitlab是企業(yè)內部搭建的代碼倉庫。
一汹忠、本地倉庫和遠程倉庫進行關聯(lián)
執(zhí)行以下命令可將本地倉庫與遠程倉庫進行關聯(lián)
git remote add origin http://xxx/zwopen/season.git
git remote add origin ssh://git@xxx/zwopen/season.git
關聯(lián)后遇到的問題:執(zhí)行
git pull origin master
失敗酵紫,提示:fatal: refusing to merge unrelated histories
原因:雖然本地倉庫和遠程倉庫進行了關聯(lián),但仍是兩個獨立的倉庫
解決:執(zhí)行git pull origin master --allow-unrelated-history
错维,合并兩個獨立的倉庫即可
git push <遠程主機名> <本地分支名>:<遠程分支名>
git push origin master:master # 將本地倉庫推送到遠程倉庫
二奖地、克隆遠程倉庫
上面提到的先創(chuàng)建本地倉庫,再把本地倉庫和遠程倉庫關聯(lián)的方式赋焕,在實際開發(fā)中很少用到参歹,更多是先克隆遠程倉庫。
git clone http://xxx/QA/qa.git
三隆判、推送遠程分支
git push --set-upstream origin yourname
版本回退
git checkout . 還原工作區(qū)所有文件的修改
git checkout -- file 還原工作區(qū)指定文件的修改
注意:
文件未提交到暫存區(qū)犬庇,git checkout
撤銷修改回到和版本庫一樣的狀態(tài)
文件已提交到暫存區(qū)且又做了修改,git checkoug
撤銷修改回到添加到暫存區(qū)后的狀態(tài)
git reset HEAD^ 暫存區(qū)和版本區(qū)還原到上一次commit節(jié)點侨嘀,所有差異存入工作區(qū)
git reset --hard HEAD 擦除工作區(qū)和暫存區(qū)所有修改
git reset --hard branch 將HEAD指向其他分支
git reset --soft HEAD 工作區(qū)不變臭挽,撤銷版本區(qū)所產(chǎn)生的差異存入暫存區(qū)
git reflog 查看所有分支的所有操作記錄(包括已經(jīng)被刪除的 commit 記錄和 reset 的操作)
git reset --hard commitId 通過git reflog找到reset的commitId,再用git reset恢復之前撤銷的內容
git reset --hard 標簽名
分支管理
git checkout -b dev 創(chuàng)建并切換到新分支
git merge dev 把dev合并到當前分支
git branch 查看本地分支
git branch -a 查看本地和遠程所有分支
git branch -r 查看遠程分支
git branch -d 分支名 刪除分支
標簽管理
git tag
git tag 標簽名
git tag commitId 標簽名
git config
git config --list
git config --local -l
git config --global -l
git config --system -l
git config --local -e 編輯倉庫級別配置文件
git config --global -e 編輯用戶級別配置文件
git config --system -e 編輯系統(tǒng)級別配置文件
參考文章
http://www.reibang.com/p/c2ec5f06cf1a
https://www.liaoxuefeng.com/wiki/896043488029600
https://baijiahao.baidu.com/s?id=1623254575291831567&wfr=spider&for=pc