一、Gitee簡介:
? ? ? ? Gitee(碼云)是中國的一個代碼托管和協作開發平臺,類似于GitHub或GitLab,主要面向開發者提供代碼管理、項目協作及開源生態服務。
適用場景
個人開發者:托管私有代碼或參與開源項目。
中小企業:低成本搭建代碼管理平臺。
教育機構:教學或學術項目管理。
對比GitHub
優勢:國內訪問穩定,中文支持好,符合本地法規。
不足:國際影響力較弱,開源生態規模較小。
總之,Gitee是中國開發者常用的Git托管平臺,尤其適合需要高效協作和本地化服務的團隊。
二、Linux中Gitee的應用
1、創建Git目錄
代碼如下:
mkdir gitecode(此處目錄可自行起名字)
2、創建本地Git
????????在所創建的目錄下建立本地gitee,代碼如下:
git init
3、檢測是否建立成功
????????.git即為剛剛所建立的本地倉庫
4、Git的配置
(1)配置name和email
? ? ? ? 建立本地gitee后,我們需要配置name和email ,這里就需要大家填寫自己創建Git是的信息了,我這里是隨便填的用來演示的。
代碼如下:
git config user.name "Git用戶名"
git config user.email "Git創建時的郵箱"
(2)查看配置文件
代碼如下:
git config -l
(3)刪除配置文件
? ? ? ? 想必大家有可能會手殘配置出錯等情況,不過不要慌,我們這里還有刪除配置操作代碼如下:
git config --unset (user.name)此處為要刪除的配置
(4)--globle
? ? ? ? 作用在系統的全局下配置的文件在所有的Git文件中都生效。
代碼示例:
git config --global user.name 'LWF'
git config --global user.email '123123@qq.com'
與此同時,我們需要注意這里刪除全局的配置文件時也需要加--global,否則刪不掉。
代碼示例:
git config --global --unset (user.name)此處為要刪除的配置
5、認識工作區、暫存區、版本庫
????????修改(add):新增、修改、刪除(這幾個操作都算修改)
????????修改的工作內容會寫入對象庫的一個新增的git對象中。
示例圖如下:
6、添加文件
(1)場景1:
? ? ? ? 我們可以通過一些指令來連接工作區和版本區。
git add (工作區已“修改”的文件)
//git add . 表示添加當前工作區下全部已修改的文件
git commit -m "這里面填寫修改的細節相當于日志,不要亂寫"
(2)查看add(修改)內容(日志)
? ? ? ? 由上述圖片我們可以知道.git的objicts目錄會記錄修改內容那我們如何查看呢?
當然,這里我們也是可以通過指令來查看的。代碼:
git cat-file -p -(該部分為加碼部分需要在自己系統查看)
//效果見下面圖即可理解
(3)場景二:
? ? ? ? 在添加文件時我們可能遇到下面的場景,我們的目的是將file1和file2同時提交到本地倉庫中但是我們會發現我們只提交了file1。原因是我們只將file1添加到了暫存區,而git commit 只會提交暫存區的內容。
? ? ? ? 要想將file2也提交到本地倉庫只需如下操作即可:
7、修改文件
????????Git ?其他版本控制系統設計得優秀,因為Git跟蹤并管理的是修改,???件。
什么是修改?
?????????如你新增了??,這就是?個修改,刪除了??,也是?個修改,更改了某些字符, 也是?個修改,刪了?些?加了?些,也是?個修改,甚?創建?個新?件,也算?個修改。
(1) git status
? ? ? ? 該命令?于查看在你上次提交之后是否有對?件進?再次修改。
使用效果可看圖中示例:
? ? ? ? 初始時我們是nothing to do,新建文件即(修改操作)是我們的狀態是需要將文件add到暫存區。
? ? ? ?添加之后我們的狀態是需要將其提交到本地倉庫:
? ? ? ? 提交成功后會發現我們的狀態又會回到初始的狀態
(2)git diff [file]
????????git diff [file] 命令?來顯?暫存區和?作區?件的差異,顯?的格式正是Unix通?的diff格式。也可以使? git diff HEAD -- [file] 命令來查看版本庫和?作區?件的區別。
圖中的-1
8、版本回退
????????之前我們也提到過,Git能夠管理?件的歷史版本,這也是版本控制器重要的能?。如果有?天你發現 之前前的?作做的出現了很?的問題,需要在某個特定的歷史版本重新開始,這個時候,就需要版本 回退的功能了。
????????執? git reset 命令?于回退版本,可以指定退回某?次提交的版本。要解釋?下“回退”本質是 要將版本庫中的內容進?回退,?作區或暫存區是否回退由命令參數決定:
git reset 命令語法格式為: git reset ? [- soft | - mixed | - hard] [ HEAD]
????????--mixed 為默認選項,使?時可以不?帶該參數。該參數將暫存區的內容退回為指定提交版本內 容,?作區?件保持不變。
????????-- soft 參數對于?作區和暫存區的內容都不變,只是將版本庫回退到某個指定版本。
????????-- hard 參數將暫存區與?作區都退回到指定版本。切記?作區有未提交的代碼時不要?這個命 令,因為?作區會回滾,你沒有提交的代碼就再也找不回了,所以使?該參數前?定要慎重。
下面我們可以通過一張圖片來了解一下上面的概念git 表示回退的內容。
圖中的git表示回退,git work 表示未回退。
??????
????????這里我們演示一下--hard 指令(hard指令會直接將你原有的代碼文件全部回退因此要慎重使用),當然如果這里我們回退錯了也可以回退到未回退的狀態(前提有未執行回退操作時的id)。
? ? ? ?
????????上述操作,是需要git log 來查看原有的id,運氣好的話我們能查到,但總會出現一種情況就是git log 的內容被刷新掉找不到原始的id,這是我們怎么辦呢?
????????Git 還提供了?個 git reflog 命令能補救?下,該命令?來記錄本地的每?次命令。
9、撤銷修改
情況?:對于?作區的代碼,還沒有 add
????????對于?作區的代碼,還沒有 add,我們有兩種做法,一種是直接手動刪除,但這種做法不太推薦,因為假設你已經對一段代碼編寫了三天保存,然后這次你再進行修改,如果說你想回退到修改前的版本,你可能不會確定你修改了哪些,因此,我們還是建議用第二種方法git checkout -- [file]來修改。
情況?:已經 add ,但沒有 commit
add后還是保存到了暫存區呢?怎么撤銷呢?
????????讓我們來回憶?下學過的 git reset 回退命令,該命令如果使?--mixed 參數,可以將暫存區 的內容退回為指定的版本內容,但?作區?件保持不變。那我們就可以回退下暫存區的內容了!!! ?例如下:
情況三:已經 add ,并且也 commit 了
????????我們可以 git reset --hard HEAD^ 回退到上?個版本!不過,這是有條件的,就是 你還沒有把??的本地版本庫推送到遠程。還記得Git是分布式版本控制系統嗎?我們后?會講到遠程 版本庫,?旦你推送到遠程版本庫,你就真的慘了……
具體效果如圖所示:
10、刪除文件
????????在Git中,刪除也是?個修改操作,我們實戰?下,如果要刪除file5,怎樣操作呢?
方法一:直接rm file5 ,但這樣直接刪除是沒有?的,反?徒增煩惱,此時,?作區和版本庫就不?致了,要刪?件,?前除了要刪?作區的?件,還要清除版本庫的?件。
?????????般?到這?,有兩種可能:
????????????????1.確實要從版本庫中刪除該?件
????????????????2.不??刪錯了
對第?種情況,很明顯誤刪,需要使? git checkout -- [file]來進?恢復,很簡單,我們剛學過(刪除也是修改)。
對于第?種情況,很明顯是沒有刪完,我們只刪除了?作區的?件。這時就需要使? git rm?將? 件從暫存區和?作區中刪除,并且 commit :
方法二:直接實用 git rm file4 通過用例可以看出,上面的方法一顯然多此一舉,所以說建議直接使用方法二。
11、分支管理
(1)理解分?
????????本章開始介紹 Git 的殺?級功能之?(注意是之?,也就是后?還有之?,之三……):分?。分?就 是科幻電影??的平?宇宙,當你正在電腦前努?學習 C++ 的時候,另?個你正在另?個平?宇宙? 努?學習 JAVA。
????????如果兩個平?宇宙互不?擾,那對現在的你也沒啥影響。不過,在某個時間點,兩個平?宇宙合并 了,結果,你既學會了 C++ ?學會了 JAVA!
? ? ? ??在版本回退?,你已經知道,每次提交,Git都把它們串成?條時間線,這條時間線就可以理解為是? 個分?。截?到?前,只有?條時間線,在Git?,這個分?叫主分?,即 master 分?。 再來理解?下HEAD,HEAD 嚴格來說不是指向提交,?是指向master,master才是指向提交的,所 以,HEAD 指向的就是當前分?。
????????每次提交,master分?都會向前移動?步,這樣,隨著你不斷提交,master分?的線也越來越?,? HEAD只要?直指向master分?即可指向當前分?。
(2)創建分支
????????Git ?持我們查看或創建其他分?,在這?我們來創建第?個??的分? dev ,對應的命令為:
????????當我們創建新的分?后,Git 新建了?個指針叫 dev, * 表?當前 HEAD 指向的分?是 master 分 ?。另外,可以通過?錄結構發現,新的 dev 分?:
(3)切換分支
? ? ? ? 我們如何切換到dev 分?下進?開發呢?使? git checkout 命令即可完成切換,?例如下:
我們發現 HEAD 已經指向了 dev,就表?我們已經成功的切換到了 dev 上! 接下來,在 dev 分?下修改 file3?件,新增??內容,并進??次提交操作:
現在,dev 分?的?作完成,我們就可以切換回 master 分?:
切換回 master 分?后,發現ReadMe?件中新增的內容不?了!!!
在 dev 分?上,內容還在。為什么會出現這個現象呢?我們來看看 dev 分?和 master 分?指向,發 現兩者指向的提交是不?樣的:
看到這?就能明?了,因為我們是在dev分?上提交的,?master分?此刻的提交點并沒有變,此時的狀態如圖如下所?。
(4)合并分支
為了在 master 主分?上能看到新的提交,就需要將 dev 分?合并到 master 分?,?例如下:
git merge 命令?于合并指定分?到當前分?。合并后,master 就能看到 dev 分?提交的內容 了。此時的狀態如圖如下所?:
Fast-forward 代表“快進模式”,也就是直接把master指向dev的當前提交,所以合并速度?常快。 當然,也不是每次合并都能 Fast-forward,我們后?會用到其他?式的合并
(5)刪除分支
????????合并完成后, dev 分?對于我們來說就沒?了, 那么dev分?就可以被刪除掉,注意如果當前正處于某 分?下,就不能刪除當前分?,如:
?????????可以在其他分?下刪除當前分?,如:
(6)合并沖突
????????可是,在實際分?合并的時候,并不是想合并就能合并成功的,有時候可能會遇到代碼沖突的問題。 為了演?這問題,創建?個新的分? dev1 ,并切換??標分?,我們可以使? git checkout - b dev1 ?步完成創建并切換的動作,在 dev1 分?下修改 file3?件,更改?件內容如下,并進??次提交,?例如下:
切換? master 分?,觀察 file3?件內容,我們發現,切回來之后,?件內容由變成了?的版本,這種現象很正常,我們現在也完全能理解。 此時在 master 分?上,我們對 ReadMe ?件再進??次修改,并進?提交,如下:
? ? ? ? 現在,master分支和dev1分?各?都分別有新的提交,變成了這樣:
這種情況下,Git 只能試圖把各?的修改合并起來,但這種合并就可能會有沖突,如下所?:
????????發現 file3?件有沖突后,可以直接查看?件內容,要說的是 Git 會? >>>>>> 來標記出不同分?的沖突內容,如下所?:
????????此時我們必須要?動調整沖突代碼,并需要再次提交修正后的結果!!(再次提交很重要,切勿忘 記)
到這?沖突就解決完成,此時的狀態變成了
?帶參數的 git log也可以看到分?的合并情況,具體?家可以??搜索 git log 的?法:
最后,不要忘記 dev1 分?使?完畢后就可以刪除了。
(7)分?管理策略
????????通常合并分?時,如果可能,Git 會采? Fast forward 模式。在這種 Fast forward 模式下,刪除分?后,查看分?歷史時,會丟掉分?信息,看不出來最新提交到底是 merge 進來的還是正常提交的。
????????但在合并沖突部分,我們也看到通過解決沖突問題,會再進??次新的提交,得到的最終狀態為:
????????那么這就不是 Fast forward 模式了,這樣的好處是,從分?歷史上就可以看出分?信息。例如我 們現在已經刪除了在合并沖突部分創建的 dev1 分?,但依舊能看到 master 其實是由其他分?合并得到:
????????Git ?持我們強制禁? Fast forward 模式,那么就會在 merge 時?成?個新的 commit ,這樣, 從分?歷史上就可以看出分?信息。
????????下?我們實戰?下 --no-ff ?式的 git merge 。?先,創建新的分? dev2 ,并切換?新的分?,修改 file3?件,并提交?個新的 commit:
切回 master 分?,開始合并:
????????請注意 --no-ff 參數,表?禁? Fast forward 模式。禁? Fast forward 模式后合并會創建 ?個新的 commit ,所以加上 -m 參數,把描述寫進去。
????????所以在合并分?時,加上 --no-ff 參數就可以?普通模式合并,合并后的歷史有分?,能看出來曾 經做過合并,? fast forward 合并就看不出來曾經做過合并。
(8)分支策略
在實際開發中,我們應該按照?個基本原則進?分?管理:
?????????先,master分?應該是?常穩定的,也就是僅?來發布新版本,平時不能在上??活;
????????那在哪?活呢??活都在dev分?上,也就是說,dev分?是不穩定的,到某個時候,?如1.0版本發布時,再把dev分?合并到master上,在master分?發布1.0版本;
????????你和你的同事們每個?都在dev分?上?活,每個?都有??的分?,時不時地往dev分?上合并就可以了。
(9)bug分支
????????假如我們現在正在 dev2 分?上進?開發,開發到?半,突然發現 master 分?上?有 bug,需要解決。在Git中,每個 bug 都可以通過?個新的臨時分?來修復,修復后,合并分?,然后將臨時分?刪除。
可現在 dev2 的代碼在?作區中開發了?半,還?法提交,怎么辦?例如:
?????????未提交的更改會跟隨分支切換,示例如下:
????????Git 提供了 git stash 命令,可以將當前的?作區信息進?儲藏,被儲藏的內容可以在將來某個時間恢復出來。
?
????????? git status 查看?作區,就是?凈的(除?有沒有被 Git 管理的?件),因此可以放?地創建分 ?來修復bug。
????????儲藏 dev2 ?作區之后,由于我們要基于master分?修復 bug,所以需要切回 master 分?,再新 建臨時分?來修復 bug,?例如下:
修復完成后,切換到 master 分?,并完成合并,最后刪除 fix_bug 分?:
?????????此,bug 的修復?作已經做完了,我們還要繼續回到 dev2 分?進?開發。切換回 dev2 分?,?作區是?凈的,剛才的?作現場存到哪去了?? git stash list 命令看看:
?????????作現場還在,Git 把 stash 內容存在某個地?了,但是需要恢復?下,如何恢復現場呢?我們可以使 ? git stash pop 命令,恢復的同時會把 stash 也刪了,?例如下:
????????另外,恢復現場也可以采? git stash apply 恢復,但是恢復后,stash內容并不刪除,你需要 ? git stash drop 來刪除;
????????你可以多次stash,恢復的時候,先? git stash list 查看,然后恢復指定的stash,?命令 git stash apply stash@{0} ,這部分??使?。
但我們注意到了,修復 bug 的內容,并沒有在 dev2 上顯?。
? ? ? ? master 分??前最新的提交,是要領先于新建 dev2 時基于的 master 分?的提交的,所以我們 在 dev2 中當然看不?修復 bug 的相關代碼。
????????我們的最終?的是要讓 master 合并 dev2 分?的,那么正常情況下我們切回 master 分?直接合 并即可,但這樣其實是有?定?險的。
????????是因為在合并分?時可能會有沖突,?代碼沖突需要我們?動解決(在 master 上解決)。我們?法 保證對于沖突問題可以正確地?次性解決掉,因為在實際的項?中,代碼沖突不只?兩?那么簡單, 有可能??上百?,甚?更多,解決的過程中難免?誤出錯,導致錯誤的代碼被合并到 master 上。?
????????解決這個問題的?個好的建議就是:最好在??的分?上合并下 master ,再讓 master 去合并 dev ,這樣做的?的是有沖突可以在本地分?解決并進?測試,?不影響 master 。對應的實操演?如下:
1、dev 合并 master 并解決沖突、重新提交:
2、切回master 并合并dev2 --無需解決沖突
(10)強制刪除分支
????????在現實中有這么一種情況,產品經理會讓你開發一項功能,然后你就需要創建一個分支來開發,在你開發一部分的時候在分支已經提交過,然后產品經理告訴你這一項目取消了,不用再繼續了,這時候我們就需要刪除該分支,我們會發現用以前的刪除分支方法git branch -d會報錯,演?如下:
直接使?傳統的刪除分?的?法不?,按照提?,有了如下?式:
(11)分支小結
????????分?在實際中有什么?呢?假設你準備開發?個新功能,但是需要兩周才能完成,第?周你寫了50% 的代碼,如果?刻提交,由于代碼還沒寫完,不完整的代碼庫會導致別?不能?活了。如果等代碼全 部寫完再?次提交,?存在丟失每天進度的巨??險。
????????現在有了分?,就不?怕了。你創建了?個屬于你??的分?,別?看不到,還繼續在原來的分?上 正常?作,?你在??的分?上?活,想提交就提交,直到開發完畢后,再?次性合并到原來的分? 上,這樣,既安全,?不影響別??作。
????????并且 Git ?論創建、切換和刪除分?,Git在1秒鐘之內就能完成!?論你的版本庫是1個?件還是1萬個?件。
12、遠程操作
(1)理解分布式版本控制系統
????????我們?前所說的所有內容(?作區,暫存區,版本庫等等),都是在本地!也就是在你的筆記本或者 計算機上。?我們的 Git 其實是分布式版本控制系統!什么意思呢?
????????可以簡單理解為,我們每個?的電腦上都是?個完整的版本庫,這樣你?作的時候,就不需要聯? 了,因為版本庫就在你??的電腦上。既然每個?電腦上都有?個完整的版本庫,那多個?如何協作 呢???說你在??電腦上改了?件A,你的同事也在他的電腦上改了?件A,這時,你們倆之間只需 把各?的修改推送給對?,就可以互相看到對?的修改了。
????????分布式版本控制系統的安全性要?很多,因為每個?電腦?都有完整的版本庫,某?個?的電腦壞掉 了不要緊,隨便從其他?那?復制?個就可以了。
????????在實際使?分布式版本控制系統的時候,其實很少在兩?之間的電腦上推送版本庫的修改,因為可能 你們倆不在?個局域?內,兩臺電腦互相訪問不了。也可能今天你的同事病了,他的電腦壓根沒有開 機。因此,分布式版本控制系統通常也有?臺充當“中央服務器”的電腦,但這個服務器的作?僅僅 是?來?便“交換”?家的修改,沒有它?家也?樣?活,只是交換修改不?便?已。有了這個“中央服務器”的電腦,這樣就不怕本地出現什么故障了(?如運?差,硬盤壞了,上?的所有東西全部 丟失,包括git的所有內容)
(2)遠程倉庫
????????Git 是分布式版本控制系統,同?個 Git 倉庫,可以分布到不同的機器上。怎么分布呢?最早,肯定只 有?臺機器有?個原始版本庫,此后,別的機器可以 “克隆” 這個原始版本庫,?且每臺機器的版本 庫其實都是?樣的,并沒有主次之分。
????????你肯定會想,?少需要兩臺機器才能玩遠程庫不是?但是我只有?臺電腦,怎么玩?
????????其實?臺電腦上也是可以克隆多個版本庫的,只要不在同?個?錄下。不過,現實?活中是不會有? 這么傻的在?臺電腦上搞?個遠程庫玩,因為?臺電腦上搞?個遠程庫完全沒有意義,?且硬盤掛了 會導致所有庫都掛掉,所以我也不告訴你在?臺電腦上怎么克隆多個倉庫。
????????實際情況往往是這樣,找?臺電腦充當服務器的??,每天24?時開機,其他每個?都從這個“服務 器”倉庫克隆?份到??的電腦上,并且各?把各?的提交推送到服務器倉庫?,也從服務器倉庫中 拉取別?的提交。
????????完全可以??搭建?臺運? Git 的服務器,不過現階段,為了學 Git 先搭個服務器絕對是?題?作。好 在這個世界上有個叫 GitHub 的神奇的?站,從名字就可以看出,這個?站就是提供 Git 倉庫托管服務 的,所以,只要注冊?個GitHub賬號,就可以免費獲得 Git 遠程倉庫。
????????github 是國外的?站,速度?較慢,我們課堂上同統?采?碼云來托管代碼。下來,我們從零開始, 使??下碼云遠程倉庫。
1.新建遠程倉庫
2.填寫基本信息
? ? ? ? 注意:該模板只是演示,具體信息根據個人需求可自行修改。
創建成功
創建成功后,我們可以對遠程倉庫進??個基本的設置:開源or私有
從創建好的遠程倉庫中我們便能看到,之前在本地學習過的分?,也存在于遠程倉庫中并被管理起來 了。剛創建的倉庫有且只有?個默認的master分?
3.克隆遠程倉庫
克隆/下載遠端倉庫到本地,需要使? git clone 命令,后?跟上我們的遠端倉庫的鏈接,遠端倉庫 的鏈接可以從倉庫中找到:選擇“克隆/下載”獲取遠程倉庫鏈接:
SSH 協議和 HTTPS 協議是 Git 最常使?的兩種數據傳輸協議。SSH 協議使?了公鑰加密和公鑰登陸機 制,體現了其實?性和安全性,使?此協議需要將我們的公鑰放上服務器,由 Git 服務器進?管理。使 ? HTTPS ?式時,沒有要求,可以直接克隆下來。
使? HTTPS ?式:
使? SSH ?式:
使? SSH ?式克隆倉庫,由于我們沒有添加公鑰到遠端庫中,服務器拒絕了我們的 clone 鏈接。需要 我們設置?下:
????????第?步:創建SSH Key。在??主?錄下,看看有沒有.ssh?錄,如果有,再看看這個?錄下有沒有 id_rsa 和 id_rsa.pub 這兩個?件,如果已經有了,可直接跳到下?步。如果沒有,需要創建 SSH Key:(我這里是沒有的需要創建)
????????順利的話,可以在??主?錄?找到 .ssh ?錄,??有 id_rsa 和 id_rsa.pub 兩個?件,這兩 個就是SSH Key的秘鑰對, id_rsa 是私鑰,不能泄露出去, id_rsa.pub 是公鑰,可以放?地告 訴任何?。
第?步:添加??的公鑰到遠端倉庫。
點擊 ssh公鑰 選項,進?設置:
????????點擊確認后,需要對你進?認證,輸?你的賬號密碼即可。?此,我們的準備?作全部做完,歡快的 clone吧。
????????done, 成功!如果有多個?協作開發,GitHub/Gitee 允許添加多個公鑰,只要把每個?的電腦上的 Key 都添加到 GitHub/Gitee,就可以在每臺電腦上往 GitHub/Gitee 上提交推送了。 當我們從遠程倉庫克隆后,實際上 Git 會?動把本地的 master 分?和遠程的 master 分?對應起來, 并且,遠程倉庫的默認名稱是 origin 。在本地我們可以使? git remote 命令,來查看遠程庫的信息,或者,? git remote -v 顯?更詳細的信息如:
????????上?顯?了可以抓取和推送的origin的地址。如果沒有推送權限,就看不到 push 的地址。推送是什么 意思呢,我們繼續往下看。
4.向遠程倉庫推送
????????提交時要注意,如果我們之前設置過全局的 name 和 e-mail,這兩項配置需要和 gitee 上配置的?? 名和郵箱?致,否則會出錯。或者從來沒有設置過全局的 name 和 e-mail,那么我們第?次提交時也會報錯。這就需要我們重新配置下了,同樣要注意需要和 gitee 上配置的??名和郵箱?致。如何配置 已講過,在這?就不再贅述。
????????到這?我們已經將內容提交?本地倉庫中,如何將本地倉庫的內容推送?遠程倉庫呢,需要使? git push 命令, 該命令?于將本地的分?版本上傳到遠程并合并,命令格式如下:
git push <遠程主機名> <本地分?名>:<遠程分?名>
# 如果本地分?名與遠程分?名相同,則可以省略冒號:
git push <遠程主機名> <本地分?名>
????????本地已經 clone 成功遠程倉庫后,我們便可以向倉庫中提交內容,例如新增?個 file.txt ?件:
推送成功!這?由于我們使?的是 SSH 協議,是不?每?次推送都輸?密碼的,?便了我們的推送操作。如果你使?的是 HTTPS 協議,有個?煩地?就是每次推送都必須輸??令。
接下來,看看碼云遠端:
5.拉取遠程倉庫
在 gitee 上點擊 README.md ?件并在線修改它:
????????此時,遠程倉庫是要領先于本地倉庫?個版本,為了使本地倉庫保持最新的版本,我們需要拉取下遠 端代碼,并合并到本地。Git 提供了 git pull 命令,該命令?于從遠程獲取代碼并合并本地的版 本。格式如下:
git pull <遠程主機名> <遠程分?名>:<本地分?名>
# 如果遠程分?是與當前分?合并,則冒號后?的部分可以省略。
git pull <遠程主機名> <遠程分?名>
6.配置 Git
忽略特殊?件
????????在?常開發中,我們有些?件不想或者不應該提交到遠端,?如保存了數據庫密碼的配置?件,那怎 么讓 Git 知道呢?在 Git ?作區的根?錄下創建?個特殊的 .gitignore ?件,然后把要忽略的?件 名填進去,Git 就會?動忽略這些?件了。
????????不需要從頭寫 .gitignore ?件,gitee 在創建倉庫時就可以為我們?成,不過需要我們主動勾選? 下:
????????如果當時沒有選擇這個選擇,在?作區創建?個也是可以的。?論哪種?式,最終都可以得到?個完 整的 .gitignore ?件,例如我們想忽略以 .so 和 .ini 結尾所有?件, .gitignore 的內容 如下:
# 省略選擇模本的內容
...
# My configurations:
*.ini
*.so
????????在 .gitignore ?件中也可以指定某個確定的?件。 最后?步就是把 .gitignore 也提交到遠端,就完成了。
gitignore規則:
# 排除所有.開頭的隱藏?件:
.*
# 不排除.gitignore
!.gitignore
給命令配置別名
????????在我們使? Git 期間,有些命令敲的時候著實讓?頭疼(太?了。。),幸運的是,git?持對命令進?簡化!
舉個例?,將 git status 簡化為 git st ,對應的命令為:
git config --global alias.st status
????????--global 參數是全局參數,也就是這些命令在這臺電腦的所有Git倉庫下都有?。如果不加,那只 針對當前的倉庫起作?。
13、標簽管理
(1)理解標簽
????????標簽 tag ,可以簡單的理解為是對某次 commit 的?個標識,相當于起了?個別名。例如,在項? 發布某個版本的時候,針對最后?次 commit 起?個 v1.0 這樣的標簽來標識?程碑的意義。
????????這有什么?呢?相較于難以記住的 commit id , tag 很好的解決這個問題,因為 tag ?定要給? 個讓?容易記住,且有意義的名字。當我們需要回退到某個重要版本時,直接使?標簽就能很快定位到。
(2)創建標簽
在Git中打標簽?常簡單,?先,切換到需要打標簽的分?上,然后,敲命令 git tag [name] 就可以打?個新標簽,可以?命令 git tag 查看所有標簽:
????????默認標簽是打在最新提交的 commit 上的。那如何在指定的commit上打標簽呢??法是找到歷史提 交的commit id,然后打上就可以了,?例如下:
注意,標簽不是按時間順序列出,?是按字?排序的。
可以? git show [tagname] 查看標簽信息。
Git 還提供可以創建帶有說明的標簽,?-a指定標簽名,-m指定說明?字,格式為:
git tag -a [name] -m "XXX" [commit_id]
????????另外,打完標簽之后,使? tree .git 命令查看?下你的本地庫有什么變化,肯定能幫助你理解!
(3)操作標簽
如果標簽打錯了,也可以刪除:
????????因為創建的標簽都只存儲在本地,不會?動推送到遠程。所以,打錯的標簽可以在本地安全刪除。 如果要推送某個標簽到遠程,使?命令 git push origin
此時,查看遠端碼云,看到了標簽已經被更新!完美!
當然,如果你本地有很多標簽,也可以?次性的全部推送到遠端:
git push origin --tags
如果標簽已經推送到遠程,要刪除遠程標簽就?煩?點,先從本地刪除,然后,從遠程刪除。刪除命令也是push,但是格式如下:
在碼云上查看確實刪除成功: