Git分布式版本控制工具
下載地址: Git下載地址
Git 誕生于一個(gè)極富紛爭大舉創(chuàng)新的年代。Linux 內(nèi)核開源項(xiàng)目有著為數(shù)眾多的參與者。 絕大多數(shù)的 Linux 內(nèi)核維護(hù)工作都花在了提交補(bǔ)丁和保存歸檔的繁瑣事務(wù)上(1991-2002年間)。 到 2002 年,整個(gè)項(xiàng)目組開始啟用一個(gè)專有的分布式版本控制系統(tǒng) BitKeeper 來管理和維護(hù)代碼。
到了 2005 年,開發(fā) BitKeeper 的商業(yè)公司同 Linux 內(nèi)核開源社區(qū)的合作關(guān)系結(jié)束,他們收回了 Linux 內(nèi)核社區(qū)免費(fèi)使用 BitKeeper 的權(quán)力。 這就迫使 Linux 開源社區(qū)(特別是 Linux 的締造者 Linus Torvalds)基于使用 BitKeeper 時(shí)的經(jīng)驗(yàn)教訓(xùn),開發(fā)出自己的版本系統(tǒng)。
常用的Git代碼托管服務(wù)
前面我們已經(jīng)知道了Git中存在兩種類型的倉庫,即本地倉庫和遠(yuǎn)程倉庫。那么我們?nèi)绾未罱℅it遠(yuǎn)程倉庫呢?我們可以借助互聯(lián)網(wǎng)上提供的一些代碼托管服務(wù)來實(shí)現(xiàn),其中比較常用的有GitHub、碼云、GitLab等。
- gitHub是一個(gè)面向開源及私有軟件項(xiàng)目的托管平臺(tái),因?yàn)橹恢С諫it作為唯一的版本庫格式進(jìn)行托管,故名gitHub
- 碼云是國內(nèi)的一個(gè)代碼托管平臺(tái),由于服務(wù)器在國內(nèi),所以相比于GitHub,碼云速度會(huì)更快
- GitLab是一個(gè)用于倉庫管理系統(tǒng)的開源項(xiàng)目,使用Git作為代碼管理工具,并在此基礎(chǔ)上搭建起來的web服務(wù)
配置賬戶信息
git config --global user.email "郵箱"git config --global user.name "用戶名"
查看配置信息
配置信息會(huì)保存在
~/.gitconfig文件中
-
git config --list:查看所有配置信息 -
git config user.name:查看用戶名稱
獲取Git倉庫
[方式一]:在本地初始化一個(gè)Git倉庫
git init
[方式二]:從遠(yuǎn)程倉庫克隆
git clone 倉庫url
本地倉庫操作
-
git status:查看文件狀態(tài)- untracked 未跟蹤(未被納入版本控制)
- tracked 已跟蹤(被納入版本控制)
- Unmodified 未修改狀態(tài)
- Modified 已修改狀態(tài)
- Staged 已暫存狀態(tài)
git status –s:使輸出信息更加簡潔git add 文件名:將指定文件加入暫存區(qū)git add .:將所有文件加入暫存區(qū)git reset 文件名:將指定文件從暫存區(qū)取消git commit -m "提交日志":將暫存區(qū)的文件修改提交到本地倉庫git rm 文件名:刪除指定文件(刪除后提交生效)git log:查看日志記錄
配置忽略區(qū)域
首先需要?jiǎng)?chuàng)建一個(gè)
.gitignore的文件,在里面編寫一些配置信息
#忽略.a結(jié)尾的所有文件
*.a
#不忽略lib.a文件
!lib.a
#忽略當(dāng)前目錄下的TODO文件
/TODO
#忽略build目錄下的所有文件都忽略
build/
#doc目錄下所有以.txt結(jié)尾的文件都忽略
doc/*.txt
#doc目錄包含其子目錄下所有.pdf文件都忽略
doc/**/*.pdf
遠(yuǎn)程倉庫操作
-
git remote -v:查看遠(yuǎn)程倉庫 -
git remote add <shortname> <url>:添加一個(gè)新的遠(yuǎn)程Git倉庫 -
git clone <url>:從遠(yuǎn)程倉庫克隆 -
git remote rm <shortname>:移除遠(yuǎn)程倉庫 -
git fetch <shortname> <branch>:是從遠(yuǎn)程倉庫獲取最新版本到本地倉庫,不會(huì)自動(dòng)merge -
git pull <shortname> <branch>:是從遠(yuǎn)程倉庫獲取最新版本并merge到本地倉庫- 如果當(dāng)前本地倉庫不是從遠(yuǎn)程倉庫克隆,而是本地創(chuàng)建的倉庫,并且倉庫中存在文件,此時(shí)再從遠(yuǎn)程倉庫拉取文件的時(shí)候會(huì)報(bào)錯(cuò)(fatal: refusing to merge unrelated histories ),解決此問題可以在
git pull命令后加入?yún)?shù)--allow-unrelated-histories
- 如果當(dāng)前本地倉庫不是從遠(yuǎn)程倉庫克隆,而是本地創(chuàng)建的倉庫,并且倉庫中存在文件,此時(shí)再從遠(yuǎn)程倉庫拉取文件的時(shí)候會(huì)報(bào)錯(cuò)(fatal: refusing to merge unrelated histories ),解決此問題可以在
-
git git push <shortname> <branch>:推送到遠(yuǎn)程倉庫
Git分支操作
-
git branch:列出所有本地分支 -
git branch -r:列出所有遠(yuǎn)程分支 -
git branch -a:列出所有本地分支和遠(yuǎn)程分支 -
git checkout <branch>:切換分支 -
git push <shortname> <branch>:推送至遠(yuǎn)程倉庫分支 -
git merge <branch>:合并當(dāng)前使用的分支和命令指定的分支- 如果你在兩個(gè)不同的分支中,對(duì)同一個(gè)文件的同一個(gè)部分進(jìn)行了不同的修改,Git 就沒辦法合并它們,同時(shí)會(huì)提示文件沖突。此時(shí)需要我們打開沖突的文件并修復(fù)沖突內(nèi)容,最后執(zhí)行
git add命令來標(biāo)識(shí)沖突已解決
- 如果你在兩個(gè)不同的分支中,對(duì)同一個(gè)文件的同一個(gè)部分進(jìn)行了不同的修改,Git 就沒辦法合并它們,同時(shí)會(huì)提示文件沖突。此時(shí)需要我們打開沖突的文件并修復(fù)沖突內(nèi)容,最后執(zhí)行
-
git branch -d <branch>:刪除分支- 如果要?jiǎng)h除的分支中進(jìn)行了一些開發(fā)動(dòng)作,此時(shí)執(zhí)行上面的刪除命令并不會(huì)刪除分支
-
git branch -D <branch>:強(qiáng)制刪除分支 -
git push origin –d <branch>:刪除遠(yuǎn)程倉庫中的分支