一、初始化配置
使用方式
命令行、圖形化界面、IDE插件
首先配置用戶名
git config --global user.name "LxlTx"
再來配置郵箱
git config --global user.email 11……@qq.com
注意:以上命令只需要執(zhí)行一次,如果之前已經(jīng)執(zhí)行過了,那么這一步可以省略。
保存用戶名和密碼到本地
git config --global credential.helper store
git config --global credential.helper store
是一個 Git 命令,用于配置 Git 在處理遠程倉庫時如何存儲憑據(jù)(credentials)。
-
git config
:這是用于配置 Git 版本控制系統(tǒng)的命令。 -
--global
:這個選項告訴 Git 將配置**應(yīng)用到全局范圍,而不僅僅是當(dāng)前倉庫**。全局配置會影響當(dāng)前用戶的所有 Git 倉庫。 -
credential.helper
:這是 Git 的一個配置項,用于指定 Git 如何處理用戶憑據(jù)(用戶名和密碼)。 -
store
:這是credential.helper
的一個選項,指示 Git 將憑據(jù)存儲在明文文件中。當(dāng)你使用這個選項時,Git 會將憑據(jù)保存在明文文件中,以后訪問遠程倉庫時會從這個文件中讀取憑據(jù),而不需要每次都輸入用戶名和密碼。
需要注意的是,雖然 credential.helper store
是一個方便的選項,但它會將憑據(jù)明文存儲在本地磁盤上,存在安全風(fēng)險。建議在安全性要求較高的環(huán)境中避免使用這種方式,而是考慮使用其他更安全的憑據(jù)管理方式,比如 SSH 密鑰、OAuth 令牌等。
列出當(dāng)前用戶的全局 Git 配置信息
git config --global --list
通過運行這個命令,你可以查看當(dāng)前用戶的 Git 全局配置信息,以確保配置正確設(shè)置,比如**確認(rèn)你的用戶名、郵箱等信息是否正確**。
查看完以后,關(guān)閉終端,重啟即可。
二、新建倉庫
創(chuàng)建倉庫的兩種方式
- 本地建立倉庫
- GitHub克隆倉庫
2-1:方式一
現(xiàn)在我們先來講解第一種方式.
首先新建一個目錄
mkdir learn-git
是一個命令行指令,用于**在當(dāng)前工作目錄下創(chuàng)建一個名為 “l(fā)earn-git” 的新目錄**(或文件夾)。
-
mkdir
:這是 ** “make directory” 的縮寫,**用于在文件系統(tǒng)中創(chuàng)建新目錄。 -
learn-git
:這是你想要創(chuàng)建的新目錄的名稱。在這種情況下,你正在創(chuàng)建一個名為 “l(fā)earn-git” 的新目錄。
因此,當(dāng)你運行 mkdir learn-git
命令時,會在當(dāng)前工作目錄下創(chuàng)建一個名為 “l(fā)earn-git” 的新目錄。這個新目錄可以用來存儲關(guān)于學(xué)習(xí) Git 版本控制系統(tǒng)的文件和項目,我們后續(xù)的教程也會在這個目錄下展開,所以**大家最好先不要重命名**。
進入新建的目錄
當(dāng)你執(zhí)行 cd learn-git
這個命令時,系統(tǒng)會嘗試將當(dāng)前工作目錄更改為名為 “l(fā)earn-git” 的子目錄。這個命令會嘗試進入名為 “l(fā)earn-git” 的目錄,如果該目錄存在并且你有相應(yīng)的權(quán)限,你的當(dāng)前工作目錄將會更改為 “l(fā)earn-git” 目錄。
需要注意的是,如果 “l(fā)earn-git” 目錄不存在,或者你沒有足夠的權(quán)限訪問該目錄,那么執(zhí)行這個命令時會收到一個錯誤消息。
在這種情況下,確保在執(zhí)行 cd learn-git
命令之前,已經(jīng)通過 mkdir learn-git
命令創(chuàng)建了名為 “l(fā)earn-git” 的目錄。這樣你才能成功地進入這個目錄。
創(chuàng)建倉庫
git init
是一個 Git 命令,用于**在當(dāng)前目錄中初始化一個新的 Git 倉庫。當(dāng)你在一個項目目錄下執(zhí)行 git init
命令時,Git 會在該目錄中創(chuàng)建一個新的 Git 倉庫,這樣你就可以開始對項目進行版本控制**。
在執(zhí)行 git init
命令后,Git 會在當(dāng)前目錄下生成一個名為 “.git” 的子目錄,這個目錄包含了 Git 倉庫的所有必要文件和子目錄,用于跟蹤項目中的文件變化、記錄歷史版本等操作。
一旦執(zhí)行了 git init
,你就可以開始使用其他 Git 命令來管理你的項目,比如 git add
將文件添加到暫存區(qū)、git commit
提交文件的變化等。這樣你就可以充分利用 Git 的功能來跟蹤文件的變化、協(xié)作開發(fā)以及管理項目的版本歷史。
現(xiàn)在來查看一下倉庫里的內(nèi)容
注意,.git目錄是一個隱藏目錄,直接輸入ls是無法顯示的,需要再操作一下。
如果看到.git目錄,則表明我們的倉庫已經(jīng)創(chuàng)建成功了?,F(xiàn)在進入倉庫,查看詳細的配置。
列出目錄下的文件和子目錄,并按照一定的順序進行排序顯示
ls -altr
是一個**在 Unix/Linux 系統(tǒng)中常用的命令**,下面是對這個命令中每個部分的解釋:
-
ls
: 表示列出目錄內(nèi)容的命令。 -
-a
: 表示**顯示所有文件,包括以.
開頭的隱藏文件。普通的ls
命令默認(rèn)不顯示以.
開頭的隱藏文件**。 -
-l
: 表示**以長格式(詳細列表)顯示文件信息**,包括文件權(quán)限、所有者、文件大小、修改日期等。 -
-t
: 表示**按照文件修改時間進行排序**,最新修改的文件會顯示在列表的前面。 -
-r
: 表示**以相反的順序顯示**,即反向排序。
ls -altr
命令會列出指定目錄下的所有文件和子目錄,包括隱藏文件,并按照最后修改時間的先后順序進行反向排序,最新修改的文件會顯示在列表的最后。同時,會顯示詳細的文件信息,如權(quán)限、所有者、文件大小等。
創(chuàng)建指定用戶名的倉庫
首先回到主目錄
進入倉庫
顯示詳細信息
2-2:方式二
首先進入你要克隆的倉庫頁面,復(fù)制倉庫地址。
首先回到learn-git目錄
cd ..
是一個常用的命令行指令,用于**切換到當(dāng)前工作目錄的父目錄。在命令行中,cd
是用來改變當(dāng)前工作目錄的命令,而 …
表示當(dāng)前目錄的父目錄**。
當(dāng)你在命令行中輸入 cd ..
并按下回車鍵時,系統(tǒng)會將當(dāng)前工作目錄切換到上一級目錄。這樣你可以在文件系統(tǒng)中向上一級目錄導(dǎo)航,方便你在不同目錄之間進行切換和操作。
舉個例子,假設(shè)你當(dāng)前的工作目錄是 /home/user/documents
,如果你執(zhí)行 cd ..
命令,那么你的工作目錄會變成 /home/user
,即當(dāng)前目錄的父目錄。這樣你可以在不同目錄之間靈活地切換,方便進行文件操作和管理。
輸入代碼
git clone https://github.com/mahmoodlab/HIPT.git
如上圖所示,會發(fā)現(xiàn)報錯了,原因是代理端口不同,即使你掛了梯子,也同樣會出現(xiàn)這個問題。
解決方法如下
git config --global --unset http.proxy
git config --global --unset http.proxy
是一個 Git 命令,用于**在全局 Git 配置中取消設(shè)置 HTTP 代理**。這個命令會將全局 Git 配置中的 HTTP 代理設(shè)置移除,這樣 Git 在進行網(wǎng)絡(luò)操作時將不再使用代理。
-
git config
:Git 命令行工具中用于配置 Git 的命令。 -
--global
:表示這是一個全局配置,即對所有 Git 倉庫都生效,而不僅僅是當(dāng)前倉庫。 -
--unset
:表示**取消或移除配置項**的設(shè)置。 -
http.proxy
:指定了要移除的配置項,即 HTTP 代理設(shè)置。
通過運行 git config --global --unset http.proxy
,你可以清除全局 Git 配置中關(guān)于 HTTP 代理的設(shè)置,這對于取消之前設(shè)置的代理或者解決一些網(wǎng)絡(luò)連接問題可能會有幫助。當(dāng)你取消了 HTTP 代理設(shè)置后,Git 在進行網(wǎng)絡(luò)操作時將直接連接到目標(biāo)服務(wù)器,而不經(jīng)過代理服務(wù)器。
git config --global --unset https.proxy
然后再次克隆倉庫。
git clone https://github.com/mahmoodlab/HIPT.git
友情提醒,這是我自己要研究的一個項目,也是后期會介紹的項目,與數(shù)字病理相關(guān)。當(dāng)然了,這不是重點,重點是你可以選一個比較小的項目去克隆,不然你就會等很久。要是剛好你的研究方向也和數(shù)字病理相關(guān),那么,恭喜你來對地方了,點個關(guān)注再走吧!!
看到這個界面就是已經(jīng)克隆完成了。
查看一下倉庫中的文件目錄
會發(fā)現(xiàn),剛剛克隆的倉庫已經(jīng)導(dǎo)入了。
現(xiàn)在進入倉庫
我們會發(fā)現(xiàn)確實存在.git目錄,表明這是一個倉庫。
快速打開倉庫
三、工作區(qū)域和文件狀態(tài)
3-1:工作區(qū)域
在Git中,工作區(qū)(Working Directory)、暫存區(qū)(Staging Area)和本地倉庫(Local Repository)是三個核心概念,它們共同構(gòu)成了Git的版本控制系統(tǒng)。下面是這三個區(qū)域的詳細解釋及其相互之間的關(guān)系:
工作區(qū)(Working Directory)
工作區(qū)是開發(fā)者直接編輯文件的地方,即我們通過IDE或者文件管理器看到的文件和目錄。當(dāng)你在工作區(qū)修改文件或創(chuàng)建新文件時,這些變更僅僅是本地的,Git還不知道這些變更。
暫存區(qū)(Staging Area)
暫存區(qū)是一個**介于工作區(qū)和本地倉庫之間的緩沖區(qū)。它的作用是臨時存放你的改動,使用git add命令可以將工作區(qū)的改動添加到暫存區(qū)**,它保存了下次將提交的文件列表信息,也就是你告訴Git你想要提交哪些變更。
本地倉庫(Local Repository)
本地倉庫是**Git中存儲提交歷史的地方,即使用git commit命令將暫存區(qū)的改動永久保存到倉庫的歷史記錄中**。每次提交都會在倉庫中創(chuàng)建一個新的提交記錄,包含作者信息、提交日期和提交說明等。
三者之間的關(guān)系如下:
工作區(qū)到暫存區(qū)
當(dāng)你在工作區(qū)修改文件或新增文件后,需要**通過git add命令將這些改動添加到暫存區(qū)**。這個過程相當(dāng)于告訴Git:“注意,我想要對這些文件進行版本控制”。
暫存區(qū)到本地倉庫
一旦改動被添加到暫存區(qū),你可以**通過git commit命令將暫存區(qū)中的改動提交到本地倉庫**,從而在倉庫中創(chuàng)建一個新的提交(commit)。每次提交都會在倉庫中保存一個快照,記錄下當(dāng)時的文件狀態(tài)。
本地倉庫到工作區(qū)
如果**需要撤銷工作區(qū)的改動,可以使用git checkout或git reset命令,從本地倉庫恢復(fù)文件到工作區(qū)**。
- git checkout:丟棄工作區(qū)的改動
- git reset:將文件從暫存區(qū)回退到工作區(qū),并根據(jù)需要決定是否丟棄工作區(qū)的改動。
通過這三個區(qū)域,Git能夠有效地管理文件的版本歷史,允許開發(fā)者輕松地提交和回退改動,實現(xiàn)多人協(xié)作開發(fā)。
3-2:文件狀態(tài)
在Git中,文件的狀態(tài)分為四種:未跟蹤(Untracked)、未修改(Unmodified)、已修改(Modified)和已暫存(Staged)。這些狀態(tài)幫助你理解文件當(dāng)前在Git版本控制中的位置。
下面是這四種狀態(tài)的詳細解釋:
未跟蹤(Untracked)
- 當(dāng)你在工作目錄中創(chuàng)建了一個新文件,而這個文件還沒有被Git追蹤時,它處于未跟蹤狀態(tài)。
- Git不知道如何處理這個文件,除非你顯式地告訴Git開始追蹤它。
未修改(Unmodified)
- 當(dāng)一個文件已經(jīng)被Git追蹤,并且在**你的工作目錄中的內(nèi)容和最新提交的內(nèi)容完全一致時**,它處于未修改狀態(tài)。這意味著自上次提交以來,你沒有對這個文件進行任何改動。
已修改(Modified)
- 當(dāng)你修改了一個已經(jīng)被Git追蹤的文件,并且**還沒有將改動添加到暫存區(qū)時**,這個文件處于已修改狀態(tài)。
- Git檢測到工作目錄中的文件和本地倉庫中的最新提交快照不一致。
已暫存(Staged)
- 當(dāng)你使用
git add
命令將已修改的文件添加到暫存區(qū)時,文件的狀態(tài)變?yōu)橐褧捍妗_@意味著**你告訴Git你想要在下一次提交中包含這些改動**。 - 暫存區(qū)是提交前的一個臨時區(qū)域,允許你選擇性地提交部分改動。
四者之間的關(guān)系如下:
未跟蹤到未修改
- 通過**執(zhí)行
git add
命令,可以將未跟蹤的文件添加到Git的追蹤列表中,并將其狀態(tài)變?yōu)槲葱薷?/u>**。 - 一旦文件被首次提交,它就進入了版本控制的范疇。
未修改到已修改
- 當(dāng)你在工作目錄中修改了一個已經(jīng)被Git追蹤的文件時,它的狀態(tài)會從未修改變?yōu)橐研薷摹?/li>
- Git會記錄下這些改動,直到你決定如何處理它們。
已修改到已暫存
- 通過執(zhí)行
git add
命令,可以將已修改的文件暫存起來,即將改動添加到暫存區(qū)。 - 這樣,文件的狀態(tài)就從已修改變?yōu)橐褧捍?,?zhǔn)備被提交。
已暫存到未修改
- 當(dāng)你執(zhí)行
git commit
命令提交暫存區(qū)的改動后,這些改動就會永久保存在本地倉庫中,文件的狀態(tài)再次變?yōu)槲葱薷?,因為它現(xiàn)在和本地倉庫的最新提交快照一致了。
理解這四種文件狀態(tài)**有助于你更好地使用Git進行版本控制,確保你能夠有選擇性地提交代碼,并且能夠追蹤到工作目錄中文件的當(dāng)前狀態(tài)**。
四、添加和提交文件
首先將這一節(jié)會涉及到的指令放在下面,稍后會詳細解釋。
4-1:查看倉庫狀態(tài)
首先進入我們之前創(chuàng)建的倉庫my-repo,為了防止有些同學(xué)半路插入,所以**請根據(jù)我的箭頭順序依次輸入指令**。
cd ~ cd learn-git cd my-repo
現(xiàn)在可以查看倉庫的狀態(tài)了。
git status
是 Git 中用于查看當(dāng)前工作目錄狀態(tài)的命令。通過運行 git status
,你可以了解當(dāng)前工作目錄中文件的狀態(tài),包括已修改、已暫存和未跟蹤的文件。以下是 git status
命令的主要作用和輸出解釋:
已修改(modified)
- 如果在工作區(qū)修改了已經(jīng)被 Git 管理的文件,但還沒有將這些修改添加到暫存區(qū),這些文件將被標(biāo)記為已修改。
-
git status
會列出所有已修改的文件,讓你知道哪些文件的內(nèi)容發(fā)生了變化。
已暫存(staged)
- 當(dāng)你使用
git add
命令將修改過的文件添加到暫存區(qū)時,這些文件就被標(biāo)記為已暫存(staged)。 -
git status
會顯示已暫存的文件列表,讓你知道哪些修改已經(jīng)準(zhǔn)備好提交到本地倉庫。
未跟蹤(untracked)
- 如果有新建的文件或者 Git 未跟蹤的文件存在于工作區(qū)中,這些文件將被標(biāo)記為未跟蹤。
-
git status
會列出所有未跟蹤的文件,提醒你這些文件尚未被 Git 管理。
輸出解釋
-
On branch <branch>
:顯示當(dāng)前所在的分支,上圖表明**所在分支為main。由于我們目前還沒有提交任何文件,所以顯示No commits yet**。 -
Changes not staged for commit
:列出已修改但未暫存的文件。 -
Changes to be committed
:列出已暫存但尚未提交的文件。 -
Untracked files
:列出未被 Git 管理的文件。 - 提示信息:通常會給出一些提示,例如如何將文件添加到暫存區(qū)或提交已暫存的文件等。
通過定期運行 git status
,你可以及時了解項目中文件的狀態(tài),幫助你決定下一步的操作,如將修改提交到本地倉庫或者將新文件加入版本控制。
現(xiàn)在我們來嘗試在終端輸出文本
echo
是一個在命令行中用來輸出文本的命令,通常在 Linux 和類 Unix 系統(tǒng)中使用。在這個命令中,echo
后面跟著的內(nèi)容會被輸出到標(biāo)準(zhǔn)輸出(通常是終端窗口)上。在這種情況下,echo "你好,我是羅小羅同學(xué)"
將會在終端上輸出文本 “你好,我是羅小羅同學(xué)”。
這個命令對于在腳本中輸出文本、調(diào)試以及在命令行中進行簡單的文本輸出非常有用。
現(xiàn)在,我們來嘗試在終端新建一個文件
echo "你好,我是羅小羅同學(xué)" >file1.txt
這條命令 echo "你好,我是羅小羅同學(xué)" > file1.txt
結(jié)合了 echo
命令和**重定向操作符** >
,它的作用是**將文本 “你好,我是羅小羅同學(xué)” 寫入到名為 file1.txt
的文件中**。
在這種情況下,>
表示將 echo
命令的輸出寫入到文件中,如果文件已存在,則會覆蓋文件內(nèi)容;如果文件不存在,則會創(chuàng)建該文件。
現(xiàn)在,我們來看看文件里面的內(nèi)容
cat
是一個用于在終端上查看文件內(nèi)容的命令。當(dāng)你運行 cat file1.txt
時,它會將文件 file1.txt
的內(nèi)容輸出到終端上。
所以,當(dāng)你運行 cat file1.txt
后,如果 file1.txt
存在并包含文本 “你好,我是羅小羅同學(xué)”,那么終端會顯示出這段文本內(nèi)容。
現(xiàn)在來查看倉庫的狀態(tài),就會發(fā)現(xiàn)命令的回顯中比剛剛多了一個紅色的文件。
4-2:添加到暫存區(qū)
看前面的標(biāo)題我們可以知道,這個文件目前處于一個未跟蹤的狀態(tài),所以我們可以使用git add將其添加至?xí)捍鎱^(qū)中。
git add file1.txt git status
我們可以很清楚的看到文件狀態(tài)已經(jīng)變綠,并且處于一個待提交的狀態(tài)。命令行的?表示,目前我們的倉庫中存在已經(jīng)修改,但是未提交的文件。
注意,命令行的回顯中還有一行指令。
git rm --cached <file>...
git rm --cached <file>...
是一個 Git 命令,用于從 Git 跟蹤中移除文件,但保留工作目錄中的文件。這個命令通常用于停止對某些文件的版本控制跟蹤,但同時保留這些文件在工作目錄中的副本。
具體說明如下:
-
git rm
:這是 Git 中用于刪除文件的命令。 -
--cached
:這個選項**告訴 Git 只從暫存區(qū)(Index)中刪除文件,而不會刪除工作目錄中的實際文件**。這樣做意味著文件將不再被 Git 跟蹤,但仍然保留在你的工作目錄中。 -
<file>...
:這是要**移除跟蹤的文件名或文件路徑**。你可以指定一個或多個文件來執(zhí)行這個操作。
4-3:提交文件到倉庫
執(zhí)行下列指令
具體說明如下:
-
git commit
:這是 **Git 中用于將更改提交到版本庫**的命令。 -
-m "第一次提交"
:這是一個選項,用于在提交時添加提交信息。-m
后面的內(nèi)容是提交信息的描述,用雙引號括起來。在這種情況下,提交信息是 “第一次提交”。
總結(jié)來說,運行 git commit -m "第一次提交"
將會**把你在暫存區(qū)中的更改提交到本地 Git 倉庫,并使用 “第一次提交” 作為提交信息描述。提交信息通常用于描述本次提交的內(nèi)容或目的,以便其他開發(fā)人員或你自己日后更容易地理解這次提交的目的**。
現(xiàn)在再來查看倉庫的狀態(tài),就會提示我們目前沒有可以提交的文件了,這是因為我們已經(jīng)把文件提交到倉庫中保管起來了。
現(xiàn)在我們可以來查看提交記錄。
然后我們就會看到之前我們設(shè)置的用戶名和郵箱,以及剛才編寫的提交信息。
五、回退版本
git reset命令**用于將當(dāng)前分支的頭部移動到指定的狀態(tài)**,有三種模式,它們決定了重置操作對工作區(qū)、暫存區(qū)和提交歷史的影響。
下面是這三種模式的詳細解釋:
git reset --soft
-
--soft
模式**只影響提交歷史,即移動HEAD指針到指定的提交。這意味著所有的改動都會留在暫存區(qū)**,工作區(qū)的內(nèi)容保持不變。 - 這種模式**適用于當(dāng)你想要取消最后的提交,但又不希望丟失工作區(qū)和暫存區(qū)中的改動**。
git reset --hard
-
--hard
模式會**改變提交歷史、暫存區(qū)和工作區(qū)**。移動HEAD指針到指定的提交,并且將暫存區(qū)和工作區(qū)都更新為該提交的狀態(tài)。 - 這是一個**不可逆的操作,因為它會丟棄自指定提交以來所有的改動**。使用這個模式時要非常小心,因為它可能會導(dǎo)致數(shù)據(jù)丟失。
git reset --mixed
-
--mixed
模式是git reset
命令的默認(rèn)行為,如果你只執(zhí)行git reset
而不加任何參數(shù),那么就是使用--mixed
模式。 - 這個模式會改變提交歷史和暫存區(qū),移動HEAD指針到指定的提交,并將暫存區(qū)更新為該提交的狀態(tài)。
- 工作區(qū)的內(nèi)容保持不變,即**自上次提交以來在工作區(qū)做的改動仍然存在,只是這些改動不再處于暫存狀態(tài)**。
- 所以,如果使用了混合模式,那么需要重新執(zhí)行g(shù)it add操作來將變動的內(nèi)容重新添加到暫存區(qū)。
三者之間的關(guān)系如下
–soft和–mixed
-
--soft
模式不會影響暫存區(qū)和工作區(qū),而--mixed
模式會影響暫存區(qū)但不影響工作區(qū)。 -
--mixed
模式是--soft
模式的一個中間狀態(tài),它在移動HEAD指針的同時,也將改動從提交歷史移動到了暫存區(qū)。
–mixed和–hard
-
--mixed
模式不會影響工作區(qū),而--hard
模式會同時影響暫存區(qū)和工作區(qū)。 -
--hard
模式是--mixed
模式的一個更極端的狀態(tài),它在移動HEAD指針和清空暫存區(qū)的同時,也會清空工作區(qū)中的改動。
–soft和–hard文章來源:http://www.zghlxwxcb.cn/news/detail-844584.html
-
--soft
模式只影響提交歷史,而--hard
模式會影響提交歷史、暫存區(qū)和工作區(qū)。 - 這兩種模式代表了重置操作的兩個極端,一個盡可能保留改動,另一個盡可能恢復(fù)到指定提交的狀態(tài)。
在使用git reset
時,選擇合適的模式非常重要,因為它會直接影響到你的工作流程和數(shù)據(jù)的完整性。通常,如果你不確定,可以從最安全的–soft
模式開始,然后根據(jù)需要逐步應(yīng)用更強烈的重置。文章來源地址http://www.zghlxwxcb.cn/news/detail-844584.html
未完待續(xù)
到了這里,關(guān)于一小時Git入門教程【上篇】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!