目錄
一、為什么需要git
二、git基本操作?
2.1、初始化git倉庫
?2.2、配置本地倉庫的name和email
2.3、認識工作區、暫存區、版本庫
三、git的實際操作
?3.1 提交文件
3.2? 查看git狀態以及具體的修改
3.3? git版本回退? ? git? reset
3.1 撤銷修改
四、git分支管理
4.1 理解分支
4.2 創建分支
4.3? 合并分支
4.4? 刪除分支
4.5? 合并沖突
4.6 合并分支的兩種模式:ff? 和? no-ff
4.7 分支策略
五、遠程操作
5.1 創建遠程倉庫
5.2? 克隆遠程倉庫
5.3 推送、拉取操作
一、為什么需要git
先來看看一個場景:老板讓你寫文件
?我們可以用到版本控制器:git
二、git基本操作?
2.1、初始化git倉庫
git? init
?2.2、配置本地倉庫的name和email
增加:
git? ?config? ?user.name? "XXX"? ? ? ? 也可在開頭加一個? --global ,表示在當前機器的所有倉庫上配置
git? ?config? ?user.email? "XXX"
刪除:
git? ?config? ?--unset? ? ?user.name? "XXX"? ??
2.3、認識工作區、暫存區、版本庫
先來創建一個ReadMe文件
思考:ReadMe文件是干什么的?
其實就是這個項目的說明書,比如項目目的、功能、使用方法等基本信息,它可以讓其他人一眼看懂項目,并為項目的使用和參與提供指導。它是項目開源和共享的重要組成部分。
圖解工作區、暫存區(索引區)、版本庫。
暫存區和版本庫當中存放的都是git對象庫的索引,其實也就是通過一個個git對象,能拿到不同的文件版本
三、git的實際操作
?3.1 提交文件
也可以有多個add,一次性commit?
git? log? 查看由近到遠的提交記錄
3.2? 查看git狀態以及具體的修改
git? status 查看哪些文件修改了
git? status只能查看文件有沒有修改,并不能查看具體的修改內容
使用? ?git? diff? 查看暫存區和工作區具體的修改
git? diff? HEAD? --? [filename]? 查看版本庫和工作區的差別
3.3? git版本回退? ? git? reset
本質是回退版本庫中的內容 ,工作區和暫存區回不回退取決于參數
HEAD說明:
我們這里能夠回退是因為我們拿到了 之前版本的 commit? id,假如沒有的話,我們就不能這樣子操作了
如果我們現在拿不到之前的commit? id,該怎么補救呢?
使用? git? reflog ,可以查看本地每次的提交命令
我們可以發現:版本回退的時候是非常快的,為什么呢?
3.1 撤銷修改
git? checkout? -- 【filename】撤銷工作區,暫存區和版本庫還得用到git? reset? 命令
情況一:只是撤銷工作區
我們可以使用 git? checkout? --? 【filename】? ?(切記加上 -- ,不加就是切換分支的命令了?)
情況二:撤銷工作區和暫存區
我們可以用? git? reset? --mixed HEAD^? 先只把暫存區回退,那么就回到了情況一,然后再用git? checkout;
當然,我們也可以直接用一步? git? reset --hard HEAD?就行了,但是不推薦,--hard力度太大了,回退整個倉庫
情況三:已經commit了,而且沒有push
撤銷的目的:不影響遠程倉庫的內容
四、git分支管理
4.1 理解分支
4.2 創建分支
git? branch? 【新分支名字】
我們再來使用git? tree 命令來看一下git的結構發生了變化沒有:
4.3? 合并分支
我們要想操作dev分支,就需要將HEAD指向dev分支,讓dev變成工作分支才行
使用? git? checkout? 【分支名字】 切換分支
我們在dev上進行提交并合并? 使用? git? merge? 合并
4.4? 刪除分支
使用? ?git? branch? -d? 【要刪除的分支名字】
4.5? 合并沖突
merge 沖突需要手動解決,并且再進行一次提交
4.6 合并分支的兩種模式:ff? 和? no-ff
模式一: Fast-forward
直接merge就是? ff模式,比較簡單,但是不能看出最新提交到底是merge進來的還是正常提交的
模式二:非 Fast-forward? ,在merge的時候再進行一次commit

4.7 分支策略
介紹分支管理要遵守的原則
master主分支要求比較穩定,dev分支是開發人員日常操作的代碼,還沒有經過測試驗證
五、遠程操作
我們之前的所有操作:分支也好,add,commit也好,都是在本地的倉庫進行的,并不能做到多人協助開發,想要多人開發,必須要進行遠程操作? ,也就是用到碼云(gitee)
5.1 創建遠程倉庫
5.2? 克隆遠程倉庫
1. 使用HTTPS協議:
這種比較簡單,直接就是git? clone? + 遠程倉庫的https地址就行了。拉下來之后就能看到我們這時候由fetch? 和? push的功能
2. 使用 SSH協議
這中就是用到本地的公匙,并且在gitee上去配置,這種主打一個安全(一般公司都是用的這種)
我們這時候需要去創建 SSH? Key
執行完命令之后就能看到? ? .ssh文件了
我們將id_rsa.pub 的內容配置到gitee上即可
配置完之后,我們就可以直接在本地的xshell上克隆遠端倉庫了
5.3 推送、拉取操作
我們先來看一下推送,也就是本地代碼 push到遠程
就是執行完commit之后 直接push就好了
拉取:
拉取的時候是有兩種操作的,一種是 git? pull? ,一種是? git? fetch,這兩種區別在于:
git? pull? 會自動執行 git? fetch拉取最新版本,然后自動執行git? merge 拉取分支合并到本地(有沖突就自己去解決),通過git? status 去查看會發現非常干凈
git? fetch 只是拉取最新版本,并不會自動合并?