下載
git下載地址:https://git-scm.com/downloads
TortoiseGit(圖形化工具)下載地址:https://tortoisegit.org/download/
認識git結構
工作區:存放代碼的地方
暫存區:臨時存儲,將工作區的代碼讓git知道,通過git add將代碼放到暫存區
本地庫:將暫存區的代碼提交到本地庫,就會生成對應的歷史版本,這個代碼就無法刪除
遠程庫:將本地庫的代碼推送到遠程庫
git常用的命令
git config --global user.name 用戶名? ? ? ? ? ? ? ?設置用戶名
git config --global user.email 郵箱? ? ? ? ? ? ? ? ? ?設置用戶郵箱
git init? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?初始化本地庫
git status? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查看本地庫狀態
git add 文件名? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 添加到暫存區
git commit -m " 日志信息" 文件名? ? ? ? ? ? ? ? ? ? 提交到本地庫
git reflog? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??查看歷史記錄
git reset --hard 版本號? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?版本穿梭
git命令行操作
git在安裝好之后,右擊鼠標,會出現Open Git Bash here,這里是打開本地的git命令行終端的位置。
設置用戶名和郵箱的作用是,之后再向服務提交數據的時候,標注作者,在每一個版本的提交信息中可以查看到。
其中 --global 是?個可選項。如果使?了該選項,表?這臺機器上所有的 Git 倉庫都會使?這個配置。如果你希望在不同倉庫中使?不同的 name 或 e-mail ,可以不要 --global 選項,但要注意的是,執?命令時必須要在倉庫?。
在這里設置好用戶的名稱和郵箱之后,使用cat ~/.gitconfig可以查看本地的作者名稱和郵箱信息。
初始化本地倉庫
使用git init的作用是獲取當前目錄的管理權。
首先,我們在當前文件夾下進行上圖操作,顯示當前文件夾下影藏文件。這個時候,當前文件夾是沒有隱藏的文件的。
然后我們在命令行終端執行git init
可以看見,這里出現了.git的隱藏文件夾。.git文件夾是Git跟蹤管理倉庫的,不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫破壞了。
查看本地庫狀態
git status
在當前目錄下,創建文件
然后再次查看本地庫狀態
這里的紅色,表示工作區存在文件,但是git從未追蹤過這個文件。
添加暫存區
git add 文件名
使用git add將文件添加至暫存區之后,讓后再次查看本地庫狀態,這個文件就變成了綠色。
提交本地庫
git commit -m " 日志信息" 文件名
使用git commit -m '日志信息'命令之后,再查看本地庫的狀態,綠色的文件消失了。使用git reflog查看提交的日志信息,使用git log查看完整的提交日志信息。
git命令行完整操作
修改當前文件內容
查看本地庫狀態
git追蹤到工作區的文件修改,將該文件標紅。
將文件添加到暫存區
文件有紅色變為綠色
將文件提交到本地庫,查看本地庫狀態,工作區文件就處理好了
歷史版本
查看歷史版本
git?reflog?查看版本信息
git?log?查看版本詳細信息
版本回退
git?reset?–hard?版本號
Git 切換版本, 底層其實是移動的 HEAD 指針。
git分支操作
分支操作命令
git branch 分支名? ? ? ? ??? ? ? ? ??創建分支
git branch -v? ? ? ? ? ? ? ? ? ? ? ??? ? 查看分支
git checkout 分支名? ? ? ? ? ? ??? ?切換分支
git merge 分支名? ? ? ? ? ? ? ??? ? ?把指定的分支合并到當前分支上
查看分支
git branch -v? ? ? ? ? ? ? ? ? ? ? ??? ? 查看分支
當前只有主分支。
創建分支
git branch 分支名? ? ? ? ??? ? ? ? ??創建分支
創建分支,再使用git branch -v查看分支,如上。現在有了兩條分支,且工作分支還是在主分支上,主分支顯示為綠色。
切換分支
git checkout 分支名? ? ? ? ? ? ??? ?切換分支
現在分支已經切換到了branchTest上了,對應分支也變成了綠色了。
修改文件內容如下
git檢查本地庫狀態
可以看見,在剛剛新建的分支上,檢查到工作區上有修改的文件。
將修改的文件添加至暫存區,在提交到本地庫中。
合并分支
git merge 分支名? ? ? ? ? ? ? ??? ? ?把指定的分支合并到當前分支上
這里將在master分支上合并branchTest分支。
切回master分支上
再合并branchTest分支
現在再查看test.txt文件的內容,如下
沖突
產生沖突
沖突產生的表現: 后面狀態為 MERGING
沖突產生的原因:
合并分支時,兩個分支在同一個文件的同一個位置有兩套完全不同的修改。 Git 無法替我們決定使用哪一個。必須人為決定新代碼內容。
查看狀態(檢測到有文件有兩處修改)
首先在master分支上修改test.txt文件,修改如下
切換到branchTest分支上,修改test.txt文件,修改如下
再回到master分支上合并branchTest分支
這個時候就可以看見已經產生了沖突
解決沖突
特殊符號: <<<<<<< HEAD 當前分支的代碼 ======= 合并過來的代碼 >>>>>>> branchTest
修改文件如下
接下來再將文件添加至暫存區,提交到本地庫。
注意:我們修改的只是master分支的內容,hot-fix分支的內容沒有發生改變。
遠程倉庫操作
git remote -v? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看當前所有遠程地址別名
git remote add 別名 遠程地址? ? ? ? ? ??起別名(第一次)
git push 別名 分支? ? ? ? ? ? ? ? ? ? ? ? ? ? ??推送本地分支上的內容到遠程倉庫
git clone 遠程地址? ? ? ? ? ? ? ? ? ? ? ? ? ? ??將遠程倉庫的內容克隆到本地(第一次)
git pull 遠程庫地址別名 遠程分支名? ?將遠程倉庫對于分支最新內容拉下來后與當前本地分支直接合并
創建遠程倉庫別名
git?remote?-v?查看當前所有遠程地址別名
git?remote?add?別名 遠程地址
拉取遠程倉庫內容
git pull 遠程庫地址別名 遠程分支名? ?(將遠程倉庫對應分支最新內容拉下來后與當前本地分支直接合并)
首次拉取會出現錯誤,Git 認為你的本地分支和遠程分支的提交歷史是完全獨立的,因此拒絕合并。
?解決辦法:使用git pull 拉去遠程分支加上--allow-unrelated-histories選項
過程中會自動打開一個文件,鍵盤輸入:q推出即可
然后,在本地文件夾中就能看見遠程分支中的文件了。
推送本地分支至遠程倉庫
git?push?別名 分支? ?(推送的最小單位是分支,所以一定要指定分支)
將本地的master分支推送至遠程倉庫
首先本地分支切換到master分支,然后將master分支推送至遠程倉庫。
這里就推送成功了。再遠程倉庫中也能查看到剛剛提交的文件。
克隆遠程倉庫至本地
git clone 遠程地址? ? ? ? ? ? ? ? ? ? ? ? ? ? ??將遠程倉庫的內容克隆到本地(第一次)
我們將遠程倉庫克隆至桌面上。
首先在桌面上打開git終端,然后在gitee倉庫中拿到倉庫地址
然后再去桌面打開的git終端上進行命令行操作
打開文件,可以看見文件夾的內容和遠程倉庫都是一樣的了。
圖形化界面操作
建立本地倉庫
建立本地倉庫有兩種方式。git init 方式和git clone 方式
git init方式
新建立一個tortoiseTest目錄,進入目錄,然后右鍵點擊 Git Create repository here , 會自動生成一個.git 隱藏目錄。
然后彈出一個對話框,選擇ok
現在目錄下就產生了一個.git隱藏目錄結構了
git clone方式
這時候會彈出一個框 , URL 是遠程倉庫的地址,Directory 是存放在哪個目錄下。
完成之后點擊close關閉
接著在目錄下就會出現遠程倉庫克隆的副本
提交代碼
在剛剛克隆的本地倉庫中新增一個文件tortoiseGit.txt文件
首先將文件添加到暫存區中,右鍵選擇Git add
在彈出的對話框中選擇ok
繼續選擇ok
查看版本庫
右鍵,選擇tortoiseGit,然后選擇Repo-browser
然后就能看見已經將文件提交至了版本庫中了
續上剛剛的提交代碼部分,繼續右鍵選擇Git Commit
在Message輸入提交信息,選擇commit
接著選擇push
然后選擇本地和遠程對應需要的分支,點擊ok
然后文件就提交完成了,點擊close
在遠程倉庫中就能查看到剛剛提交的文件了
更新代碼
首先在遠端文件進行修改
回到本地倉庫中,右鍵,選擇 pull
選擇遠端倉庫的名稱和分支,然后點擊ok
接著就把遠端倉庫的文件更新至本地倉庫了。選擇close
查看本地倉庫的文件,就能看見剛剛在遠端修改的文件,在本地也更新了
回滾版本
右鍵,選擇tortoiseGit,然后選擇show log
選中某個版本右鍵點擊 Reset master to this 即可
接下來出現的對話框選擇ok
回滾完成,選擇close
查看版本庫,里邊就沒剛剛的tortoiseGit.txt文件了
創建分支
右鍵點擊Create Branch
輸入新建分支的名稱,然后點擊ok
切換分支
右鍵點擊checkout
選擇剛剛創建的分支名
然后選擇close
合并分支
解決沖突
首先我們構建一個沖突,比如我之前在分支master上提交了一次代碼,然后我在另外一個文件夾上在沒有拉取的情況下也修改了同一處地方,然后提交的時候,會提示我們先拉取分支,然后再提交,拉取后又提示我們先要解決沖突,
在遠端倉庫做以下修改
然后在本地倉庫做以下修改
然后將本地的文件推送至遠端倉庫上,就會產生沖突,這里提示在推送之前先整合遠端倉庫的變化。
然后我么在拉取遠端倉庫的文件,就發生了沖突。因為遠端倉庫的修改和本地的修改并不相同,需要人為的選擇。
在本地文件中修改沖突
修改如下
?選擇resolve解決,點擊ok
選擇提交
小的對話框點擊確定,
寫入自己的提交信息
然后提交
推送至遠端倉庫
點擊close完成推送,然后查看遠端倉庫文件信息
再查看本地文件信息,文件顏色變綠了
忽略上傳文件列表
添加忽略文件
在本地倉庫新建一個需要忽略的文件
現在右鍵選擇git add,可以看見git是能檢查出當前工作區內容的變化的
現在,選擇cancel,回到目錄。選中需要忽略的文件,右鍵選擇TortoiseGit,選擇add to ignore list,然后后邊有兩個選項,一個是忽略當前文件,另外一個是忽略當前文件后綴的所有文件。按照你的需求進行選擇。
然后選擇忽略類型和忽略文件存放的位置
然后該目錄就生成了對應的忽略文件
點擊查看忽略文件內容,我們剛剛的文件就被加進去了。
現在再去查看工作區,就已經干干凈凈了
然后,現在需要把新的忽略文件提交至遠程倉庫。直接選擇git commit,添加提交信息推送至遠程倉庫
推送成功
在遠端查看新的忽略文件
將忽略的文件再次提交
在本地的忽略文件中將忽略文件的信息刪除
然后選擇git add,將工作區的文件添加至暫存區
可以看見,忽略文件又能被git檢測出來了。選擇git commit
推送至遠程倉庫,
成功之后,查看遠程倉庫中,就有了剛剛被忽略的文件。