十堰網(wǎng)站設(shè)計營銷團隊公司
目錄
一、了解Git的基本概念
二、Git的安裝和配置
Git的安裝
Git的配置
用戶信息
文本編輯器
差異分析工具
查看配置信息
三、Git的基本操作
基本原理
基本操作命令
基本操作示例
場景一:創(chuàng)建新倉庫
場景二:拉取并編輯遠(yuǎn)程倉庫
四、常見問題及解決方法
解決沖突
git add文件夾時 添加無用文件
如何將一個分支上的修改轉(zhuǎn)移到另一個分支上
未commit操作時
已commit操作時
git 拉取指定 tag 版本
warning: CRLF will be replaced by LF in 出現(xiàn)的原因和解決辦法
遠(yuǎn)程分支刪除了但是本地還能查詢到
五、Git圖形界面工具
六、參考資料
這里是Git初級使用教程!Git是一種分布式版本控制系統(tǒng),廣泛應(yīng)用于軟件開發(fā)行業(yè)。它可以幫助您更好地管理代碼,跟蹤代碼的變更歷史,并使團隊協(xié)作更加高效。在這篇教程中,我們將介紹Git的基本概念、安裝和使用方法,幫助你快速上手Git。
一、了解Git的基本概念
在開始使用Git之前,我們需要了解一些基本概念:
- 倉庫(Repository):倉庫是你用于存儲代碼的地方。在Git中,你可以在本地創(chuàng)建一個倉庫,也可以從遠(yuǎn)程服務(wù)器克隆一個已有的倉庫。
- 分支(Branch):分支是用來隔離不同開發(fā)線的。在同一個倉庫中,可以創(chuàng)建多個分支,每個分支都可以獨立地進(jìn)行修改和提交。
- 提交(Commit):提交是您對代碼進(jìn)行的修改操作。每次提交都會生成一個新的版本,并記錄修改的內(nèi)容和時間。
- HEAD:HEAD是當(dāng)前分支的引用。它指向最新提交的版本,也是進(jìn)行下一次修改的起點。
- 工作區(qū):就是你在電腦里能看到的代碼目錄。
- 暫存區(qū):英文叫 stage 或 index。一般存放在?.git?目錄下的 index 文件(.git/index)中,所以我們把暫存區(qū)有時也叫作索引(index)。
- 版本庫:工作區(qū)有一個隱藏目錄?.git,這個不算工作區(qū),而是 Git 的版本庫。
二、Git的安裝和配置
Git的安裝
根據(jù)你的操作系統(tǒng),可以參考Git官方文檔或者相關(guān)的安裝指南進(jìn)行安裝。
Git下載地址:Git - Downloads
安裝完成后,可以通過以下命令驗證Git是否成功安裝:
git --version
如果顯示了Git的版本號,說明安裝成功。
Git的配置
Git 提供了一個叫做 git config 的工具,專門用來配置或讀取相應(yīng)的工作環(huán)境變量。
/etc/gitconfig
?文件:系統(tǒng)中對所有用戶都普遍適用的配置(位于git安裝目錄)。若使用?git config
?時用?--system
?選項,讀寫的就是這個文件。~/.gitconfig
?文件:用戶目錄下的配置文件只適用于該用戶(windows路徑:C:\Users\你的用戶名\.gitconfig
)。若使用?git config
?時用?--global
?選項,讀寫的就是這個文件。- 當(dāng)前項目的 Git 目錄中的配置文件(也就是工作目錄中的?
.git/config
?文件):這里的配置僅僅針對當(dāng)前項目有效。每一個級別的配置都會覆蓋上層的相同配置,所以?.git/config
?里的配置會覆蓋?/etc/gitconfig
?中的同名變量。
用戶信息
配置個人的用戶名稱和電子郵件地址:
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com
如果用了?--global?選項,那么更改的配置文件就是位于你用戶主目錄下的那個,以后你所有的項目都會默認(rèn)使用這里配置的用戶信息。
如果要在某個特定的項目中使用其他名字或者電郵,只要去掉 --global 選項重新配置即可,新的設(shè)定保存在當(dāng)前項目的 .git/config 文件里。
文本編輯器
設(shè)置Git默認(rèn)使用的文本編輯器, 一般可能會是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的話,可以重新設(shè)置::
$ git config --global core.editor emacs
差異分析工具
還有一個比較常用的是,在解決合并沖突時使用哪種差異分析工具。比如要改用 vimdiff 的話:
$ git config --global merge.tool vimdiff
Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的輸出信息。
查看配置信息
要檢查已有的配置信息,可以使用 git config --list 命令:
$ git config --list
http.postbuffer=2M
user.name=runoob
user.email=test@runoob.com
有時候會看到重復(fù)的變量名,那就說明它們來自不同的配置文件(比如 /etc/gitconfig 和 ~/.gitconfig),不過最終 Git 實際采用的是最后一個。
三、Git的基本操作
基本原理
命令圖示:
- workspace:工作區(qū)
- staging area:暫存區(qū)/緩存區(qū)
- local repository:版本庫或本地倉庫
- remote repository:遠(yuǎn)程倉庫
?Git 常用的是以下 6 個命令:git clone、git push、git add?、git commit、git checkout、git pull。
基本操作命令
創(chuàng)建倉庫:如果您想在本地創(chuàng)建一個新的Git倉庫,可以使用以下命令:
git init
這會在當(dāng)前目錄下創(chuàng)建一個新的Git倉庫。一般用于初始化新的git倉庫。團隊開發(fā)大多數(shù)時候不需要使用這個命令,直接從遠(yuǎn)程倉庫克隆即可。
克隆倉庫:如果您想從遠(yuǎn)程服務(wù)器克隆一個已有的倉庫,可以使用以下命令:
git clone 你的遠(yuǎn)程倉庫地址
這將把遠(yuǎn)程倉庫的所有內(nèi)容下載到本地。
拉取修改:拉取遠(yuǎn)程倉庫最新的提交,可以使用以下命令:
git pull
git pull?其實就是?git fetch?和?git merge FETCH_HEAD?的簡寫。完整命令格式如下:
git pull <遠(yuǎn)程主機名> <遠(yuǎn)程分支名>:<本地分支名>
一般不需要使用完整格式,直接使用簡單命令即可。
添加文件:要將文件添加到Git倉庫中,需要先使用以下命令將其標(biāo)記為待提交狀態(tài):
git add 文件名
提交修改:提交修改是將待提交狀態(tài)的修改內(nèi)容提交到Git倉庫中,使用以下命令:
git commit -m "提交信息"
請注意,每次提交都需要提供一條簡短的提交信息,以便于后續(xù)跟蹤和查看修改歷史。在團隊開發(fā)中,你的提交信息將被團隊其他人看到,并且做為審查提交修改代碼的重要依據(jù)之一。多人開發(fā)時提交代碼(commit)前優(yōu)先使用拉取(pull)否則很容易造成本地沖突
推送分支:如果您對本地倉庫的修改需要與遠(yuǎn)程倉庫同步,可以使用以下命令將本地分支推送到遠(yuǎn)程倉庫:
git push origin 分支名
其中,origin是遠(yuǎn)程倉庫的別名,分支名是您要推送的分支的名稱。
當(dāng)你要提交當(dāng)前分支的修改時,可以簡化命令:
git push
創(chuàng)建分支命令:
git branch branchname
切換分支命令:
git checkout branchname
當(dāng)你切換分支的時候,Git 會用該分支的最后提交的快照替換你的工作目錄的內(nèi)容, 所以多個分支不需要多個目錄。branchname處替換成你的分支名,一般建議使用英文。
沒有參數(shù)時,git branch?會列出你在本地所有的分支名。并標(biāo)注出當(dāng)前分支名。
合并分支命令:
git merge
這個命令可以指定一個分支合并到當(dāng)前分支來,比如想將開發(fā)分支devbranch合并到當(dāng)前分支:
?git merge devbranch
如果合并發(fā)生沖突,需要我們手動解決,解決完成后,我們可以用 git add 要告訴 Git 文件沖突已經(jīng)解決。
刪除分支命令:
git branch -d branchname
查看提交記錄的方法:
git log [選項] [分支名/提交哈希值]
git log?命令用于查看 Git 倉庫中提交歷史記錄。
git log?顯示了從最新提交到最早提交的所有提交信息,包括提交的哈希值、作者、提交日期和提交消息等。常用的選項包括:
-p
:顯示提交的補丁(具體更改內(nèi)容)。--oneline
:以簡潔的一行格式顯示提交信息。--graph
:以圖形化方式顯示分支和合并歷史。--decorate
:顯示分支和標(biāo)簽指向的提交。--author=<作者>
:只顯示特定作者的提交。--since=<時間>
:只顯示指定時間之后的提交。--until=<時間>
:只顯示指定時間之前的提交。--grep=<模式>
:只顯示包含指定模式的提交消息。--no-merges
:不顯示合并提交。--stat
:顯示簡略統(tǒng)計信息,包括修改的文件和行數(shù)。--abbrev-commit
:使用短提交哈希值。--pretty=<格式>
:使用自定義的提交信息顯示格式。
git blame [選項] <文件路徑>
git blame?命令用于逐行顯示指定文件的每一行代碼是由誰在什么時候引入或修改的??梢宰粉櫸募忻恳恍械淖兏鼩v史,包括作者、提交哈希、提交日期和提交消息等信息。
常用的選項包括:
-L <起始行號>,<結(jié)束行號>
:只顯示指定行號范圍內(nèi)的代碼注釋。-C
:對于重命名或拷貝的代碼行,也進(jìn)行代碼行溯源。-M
:對于移動的代碼行,也進(jìn)行代碼行溯源。-C -C
?或?-M -M
:對于較多改動的代碼行,進(jìn)行更進(jìn)一步的溯源。--show-stats
:顯示包含每個作者的行數(shù)統(tǒng)計信息。
顯示文件每一行的代碼注釋和相關(guān)信息:
git blame <文件路徑>
只顯示指定行號范圍內(nèi)的代碼注釋:
git blame -L <起始行號>,<結(jié)束行號> <文件路徑>
對于重命名或拷貝的代碼行進(jìn)行溯源:
git blame -C <文件路徑>
對于移動的代碼行進(jìn)行溯源:
git blame -M <文件路徑>
顯示行數(shù)統(tǒng)計信息:
git blame --show-stats <文件路徑>
更多內(nèi)容可以使用?git blame --help?查看完整的幫助文檔,了解更多選項和使用方式。
基本操作示例
場景一:創(chuàng)建新倉庫
使用當(dāng)前目錄作為 Git 倉庫,我們只需使它初始化。
git init
該命令執(zhí)行完后會在當(dāng)前目錄生成一個 .git 目錄。
如果想使用我們指定的目錄作為Git倉庫。
git init newdir
初始化后,會在 newdir?目錄下會出現(xiàn)一個名為 .git 的目錄,所有 Git 需要的數(shù)據(jù)和資源都存放在這個目錄中。
如果當(dāng)前目錄下有幾個文件想要納入版本控制,需要先用 git add 命令告訴 Git 開始對這些文件進(jìn)行跟蹤,然后提交:
$ git add *.c
$ git add README
$ git commit -m '初始化項目版本'
以上命令將目錄下以 .c 結(jié)尾及 README 文件提交到倉庫中。
注:?在 Linux 系統(tǒng)中,commit 信息使用單引號?',Windows 系統(tǒng),commit 信息使用雙引號?"。
所以在 git bash 中?git commit -m '提交說明'?這樣是可以的,在 Windows 命令行中就要使用雙引號?git commit -m "提交說明"。
場景二:拉取并編輯遠(yuǎn)程倉庫
我們使用?git clone?從現(xiàn)有 Git 倉庫中拷貝項目(類似?svn checkout)。
克隆倉庫的命令格式為:
git clone 遠(yuǎn)程倉庫地址
如果我們需要克隆到指定的目錄,可以使用以下命令格式:
git clone 遠(yuǎn)程倉庫地址 指定文件夾目錄
比如,要克隆 Ruby 語言的 Git 代碼倉庫 Grit,可以用下面的命令:
$ git clone git://github.com/schacon/grit.git
執(zhí)行該命令后,會在當(dāng)前目錄下創(chuàng)建一個名為grit的目錄,其中包含一個 .git 的目錄,用于保存下載下來的所有版本記錄。
如果要自己定義要新建的項目目錄名稱,可以在上面的命令末尾指定新的名字:
$ git clone git://github.com/schacon/grit.git mygrit
這樣你新建的文件夾名就會變?yōu)閙ygrit而不是默認(rèn)的倉庫名(grit)。
新建開發(fā)分支
git branch devbranch
?切換到開發(fā)分支
?git checkout devbranch
?編輯代碼,編輯完成后將目錄下所有文件添加到暫存區(qū):
git add .
提交修改
$ git commit -m '我提交了什么內(nèi)容'
?切換回原本的分支
?git checkout master
?首先拉取下最近的修改,將本地分支狀態(tài)和遠(yuǎn)程分支同步
git pull
?將開發(fā)分支合并到當(dāng)前分支
?git merge devbranch
?如果有沖突文件(遠(yuǎn)程有人和你修改了同一個文件),需要用git diff解決沖突,解決完成后用git add命令將解決完的文件添加到暫存區(qū)并提交(git commit)。
最后,將本地的修改同步給遠(yuǎn)程倉庫
git push
四、常見問題及解決方法
解決沖突
在多人協(xié)作開發(fā)的過程中,Git 沖突是不可避免的問題。當(dāng)兩個或多個開發(fā)者在同一文件中修改了相同的內(nèi)容時,Git 無法自動解決沖突,需要人工介入解決。
在使用 Git 提交代碼時,可能會出現(xiàn)以下提示,表示存在沖突:
Automatic merge failed; fix conflicts and then commit.
要解決 Git 沖突,首先需要找到?jīng)_突發(fā)生的位置。在代碼中出現(xiàn)以下標(biāo)志性語句時,表示存在沖突:
diff
<<<<< HEAD ?
?... ?
?>>>>> other-branch
?其中,HEAD 表示當(dāng)前分支,other-branch 表示與其他分支發(fā)生沖突的分支。在代碼中找到這樣的標(biāo)志,就可以定位到?jīng)_突的位置。
解決 Git 沖突需要手動編輯代碼,將不同分支的修改合并到一起。具體步驟如下:
打開包含沖突的文件的編輯器,查找標(biāo)志沖突的代碼行,例如:
diff
<<<<< HEAD ?... ?>>>>> other-branch
在合并后的代碼行添加特殊注釋,表示該行已解決沖突。例如:
arduino
// Conflict resolved manually by [your name] ?
比較不同分支的修改內(nèi)容,選擇您認(rèn)為合適的修改內(nèi)容,手動合并到同一代碼行。
保存文件并關(guān)閉編輯器。使用git add 添加文件到暫存區(qū),之后便可以提交到遠(yuǎn)程倉庫。
git add文件夾時 添加無用文件
配置Git忽略文件:如果您希望某些文件不被Git跟蹤,可以在倉庫根目錄下創(chuàng)建一個名為.gitignore的文件,并添加列出要忽略的文件路徑。例如:
*.log ?
*.bak ?
temp/
這將忽略所有以.log和.bak為后綴的文件,以及名為temp/的文件夾。
如何將一個分支上的修改轉(zhuǎn)移到另一個分支上
未commit操作時
首先把所有修改都git add進(jìn)暫存區(qū)
,先不要git commit,然后:
git stash //把暫存區(qū)內(nèi)的修改存儲起來
git checkout dev //切換到正確的分支
git stash pop //將存儲的修改取出來
已commit操作時
如果已經(jīng)commit
了呢?
git reset HEAD^ // 撤回到剛剛commit之前的狀態(tài)
git 拉取指定 tag 版本
git clone 指定的tag
git clone --branch [tag] [git地址]
已有倉庫切換 tag
git checkout [tag]
warning: CRLF will be replaced by LF in 出現(xiàn)的原因和解決辦法
主要原因是,不同系統(tǒng)下,文件的換行符是用不同字符表示的。
Linux采用換行符LF表示下一行;
Windows采用回車+換行CRLF表示下一行;
Mac OS采用回車CR表示下一行。
解決方法是,切換git對待換行符的方式。
git config core.autocrlf
查詢當(dāng)前應(yīng)對策略。
為true時,Git會將你add的所有文件視為文本問價你,將結(jié)尾的CRLF轉(zhuǎn)換為LF,而checkout時會再將文件的LF格式轉(zhuǎn)為CRLF格式。
為false時,line endings不做任何改變,文本文件保持其原來的樣子。
為input時,add時Git會把CRLF轉(zhuǎn)換為LF,而check時仍舊為LF。
使用如下語句,讓git忽略對換行符的判斷。
git config core.autocrlf false
遠(yuǎn)程分支刪除了但是本地還能查詢到
運行命令同步分支狀態(tài):
git remote prune origin
五、Git圖形界面工具
常用的Git圖形界面工具一般有SourceTree、Github Desktop、TortoiseGit。Windows開發(fā)環(huán)境下我比較推薦使用TortoiseGit,可以安裝漢化語言包。
SourceTree使用教程:Sourcetree 使用教程 | 菜鳥教程
Github Desktop使用教程:GitHub Desktop 使用入門 - GitHub 文檔
TortoiseGit使用教程:TortoiseGit的安裝及使用 - 知乎
六、參考資料
Git官方命令手冊:Git - Reference
pdf文檔版本:https://www.runoob.com/manual/github-git-cheat-sheet.pdf
菜鳥教程:Git 教程 | 菜鳥教程