前言:
坦白講,到目前為止, 我在全職的工作中還沒有使用Git進(jìn)行版本控制的開發(fā)园匹,
只是自己沒事兒在上面搞一搞,用的并不多劫灶,學(xué)習(xí)得并不系統(tǒng)裸违,一直就知道udcacity上
有免費(fèi)的Git和GitHub相關(guān)的教程,講解得很不錯本昏,一直拖拖拖供汛,沒有去學(xué)習(xí),今天
趁著給小電車充電的間隙(5個多小時慢充時間里)在咖啡館里坐著涌穆,就把視頻給看了怔昨,記錄下筆民,本筆記的所有內(nèi)容均來自Udcacity(thanks alot)
工作中宿稀,我一直在使用SVN進(jìn)行版本控制多人協(xié)作開發(fā)趁舀,SVN是中心式的,
而Git則是分布式的祝沸,基本上幾十種版本控制系統(tǒng)矮烹,主要分為這兩類:
集中式模型(Centralized) - 所有用戶都連接到一個中央的主倉庫(master repository)
分布式模型(Distributed) - 每個用戶都在自己的計算機(jī)上擁有完整的倉庫(repository)
Git和GitHub是兩個不同的東西巡蘸。
Git是版本控制系統(tǒng),工具,核心擂送,唯一
GitHub是一項(xiàng)Git服務(wù)悦荒,用于拖管Git項(xiàng)目的,所以類似于GitHub的服務(wù)會有很多種嘹吨,
你使用Git項(xiàng)目搬味,不是必須要使用GitHub的,只是GitHub在用戶量以及知名度蟀拷,技術(shù)等等層面上碰纬,是目前最好的Git服務(wù)。
關(guān)鍵術(shù)語:
https://udacity.github.io/frontend-nanodegree-styleguide-zh/udacity-git-keyterms.pdf
提交(commit or snapshot):
Git 的數(shù)據(jù)就像一組迷你文件系統(tǒng)的快照问芬。每次在 Git 中提交或保
存項(xiàng)目狀態(tài)時悦析, Git 會立刻對所有文件進(jìn)行拍照,并存儲這組快照的索引此衅。
倉庫Repository (repo):
一個包含項(xiàng)目工作以及用于與 Git 聯(lián)絡(luò)的文件(在 Mac OS X 中默認(rèn)隱
藏)的目錄强戴,既可存在于本地計算機(jī)上,也可作為另一臺計算機(jī)的遠(yuǎn)程副本挡鞍。
工作目錄Working Directory:
即計算機(jī)文件系統(tǒng)中的文件骑歹。當(dāng)你在代碼編輯器中打開項(xiàng)目文件時,就是在
處理工作目錄中的文件墨微。我們checkout的文件或目錄就存放在working directory中道媚,
是本地的一個文件夾。保存當(dāng)前的項(xiàng)目的源碼和資源翘县。
檢出(不存在則新建)Checkout:
:倉庫中的內(nèi)容被復(fù)制到工作目錄最域。文件、提交锈麸、分支等都可從倉庫檢
出镀脂。
暫存區(qū),暫存索引或索引(Staging Area or Staging Index or Index):
Git 目錄中的一個文件掐隐,用于存儲下一次提交的相關(guān)信息狗热,
相當(dāng)于 Git 處理下一次提交的準(zhǔn)備區(qū)域。暫存區(qū)中的文件將被添加進(jìn)倉庫虑省。
SHA:
SHA 基本上就是每次提交的 ID 號碼匿刮,是由 40 個字符(0-9 和 a-f)組成的字符串,根據(jù) Git 中的文件內(nèi)容或目錄結(jié)構(gòu)計算而成探颈∈焱瑁“SHA”是“SHA散列”的簡寫。以下就是一個 SHA 的例子:
e2adf8ae3e2e4ed40add75cc44cf9d0a869afeb6
分支Branch:
當(dāng)創(chuàng)造出一個新的開發(fā)線伪节,并從開發(fā)主線分離后光羞,就產(chǎn)生了一個分支绩鸣。這條開發(fā)線可在不影響主線的同時繼續(xù)工作。分支很有用纱兑,比如你要修改或是開發(fā)一項(xiàng)新的功能呀闻,你為了測試方便,你可能屏蔽了許多其它的邏輯潜慎,但你可能無法幾天都在做這一件事捡多,你也可能要去臨時修改其它的BUG或是其它的功能,你就可以將
這耗時這部分工作放在Branch中去開發(fā)铐炫!完成了再合并回來垒手。
安裝 Git
要下載 Git:(嗯,要翻墻倒信,我用的Astrill科贬,還是不錯的,就是貴了點(diǎn)兒鳖悠,用藍(lán)燈也不錯)
轉(zhuǎn)到:https://git-scm.com/downloads
下載 Windows 版軟件
安裝 Git 并選擇所有默認(rèn)選項(xiàng)
安裝完畢后榜掌,你應(yīng)該能夠在命令行工具中運(yùn)行 git
。如果顯示了使用信息竞穷,則一切正常唐责!
安裝過程中,會有如下提示:
你要使用哪種編輯器做為Git的默認(rèn)編輯器瘾带,默認(rèn)是vim(https://www.vim.org/download.php)
也可以選擇Visual Studio Code,Notepad++,看個人的喜好熟菲。
安裝完畢后看政,你應(yīng)該能夠在命令行工具中運(yùn)行 git。如果顯示了使用信息抄罕,則一切正常允蚣!
*輸入cd回車可以回到shell的主目錄。
默認(rèn)情況下打開的是系統(tǒng)的用戶目錄呆贿,如果想要定位到項(xiàng)目的代碼庫下嚷兔,可以按照如下設(shè)置:
修改Git bash的啟動默認(rèn)路徑:
右擊Git.exe圖標(biāo),在起始位置修改即可做入。
(https://blog.csdn.net/mypotatolove/article/details/40152399)
補(bǔ)充:windows要去除快捷方式目標(biāo)中的"--cd-to-home"
另外一種方式 冒晰,也是教程中說到的,將代碼庫的位置放在快捷訪問處竟块,通過在文件夾中右擊Git Bash Here 也可以打開Shell.
我這里是加入到了收藏夾壶运,右擊添加即可,操作是一樣的
如何在命令行打開項(xiàng)目庫的文件夾:
輸入"start ." start+peroid(句號)回車即可浪秘。
初次配置 Git
在開始使用 Git 之前蒋情,你需要配置 Git埠况。在命令行工具中運(yùn)行以下每行,確保所有選項(xiàng)都已被配置好棵癣。
設(shè)置你的 Git 用戶名
git config --global user.name "<Your-Full-Name>"
設(shè)置你的 Git 郵箱
git config --global user.email "<your-email-address>"
確保 Git 輸出內(nèi)容帶有顏色標(biāo)記
git config --global color.ui auto
對比顯示原始狀態(tài)
git config --global merge.conflictstyle diff3
git config --list
*用戶名和郵箱地址是本地Git客戶端的一個變量辕翰,不隨git庫而改變。
每次commit都會用用戶名和郵箱紀(jì)錄狈谊。
github的contributions統(tǒng)計就是按郵箱來統(tǒng)計的喜命。
查看用戶名、郵箱命令
git config user.email
修改用戶名的畴、郵箱命令
git config --global user.email "xxxxx@xxx.com"
(https://blog.csdn.net/s740556472/article/details/77623453)
Git 與代碼編輯器
最后一個配置步驟是讓 Git 能與你的代碼編輯器結(jié)合使用渊抄。以下是三個最熱門的代碼編輯器。如果你使用的是其他編輯器丧裁,則在 Google 中搜索“修改 Git 默認(rèn)編輯器為 X 編輯器”(將 X 替換為你的代碼編輯器的名稱)护桦。
Atom Editor 設(shè)置
git config --global core.editor "atom --wait"
Sublime Text 設(shè)置
git config --global core.editor "C:/Program Files/Sublime Text 2/sublime_text.exe' -n -w"
VSCode 設(shè)置
git config --global core.editor "code --wait"
使用默認(rèn)的vim編輯器打開:
git config --global core.editor vim
我這里是使用的VSCode設(shè)置。
如果是使用的vim
(vim的退出方式 :按ESC鍵 跳到命令模式煎娇,然后輸入:q(不保存)或者:wq(保存) 退出二庵。)
插一段:什么是shell? 什么是bash?
https://blog.csdn.net/lizhidefengzi/article/details/74066590?locationNum=4&fps=1
https://blog.csdn.net/shuipengpeng/article/details/80302717
shell 是一個命令語言解釋器(command-language interpreter)。擁有自己內(nèi)建的 shell 命令集缓呛。
shell是用戶和Linux(或者更準(zhǔn)確的說催享,是用戶和Linux內(nèi)核)之間的接口程序。你在提示符下輸入的每個命令都由shell先解釋然后傳給Linux內(nèi)核哟绊。
Shell有很多中因妙,這里列出其中幾種
- Bourne SHell(sh)
- Bourne Again SHell(bash)
- C SHell(csh)
- KornSHell(ksh)
- zsh
各個shell的功能都差不太多,在某些語法的下達(dá)下面有些區(qū)別票髓,Linux預(yù)設(shè)就是bash攀涵。
下面一節(jié)介紹如何通過Git創(chuàng)建代碼倉庫。