git-从入门到熟悉
文章目錄
- Git歷史
- Git與svn對(duì)比
- Svn
- Git
- git工作流程
- Git的安裝
- 軟件下載
- 軟件安裝
- 安裝git for windows
- 安裝TortoiseGit
- 安裝中文語(yǔ)言包
- 使用git管理文件版本
- 創(chuàng)建版本庫(kù)
- 使用GitBash
- 使用TortoiseGit
- 添加文件
- 添加文件過(guò)程
- 工作區(qū)和暫存區(qū)
- 修改文件
- 提交修改
- 查看修改歷史
- 差異比較
- 還原修改
- 刪除文件
- 案例:將java工程提交到版本庫(kù)
- 忽略文件語(yǔ)法規(guī)范
- 遠(yuǎn)程倉(cāng)庫(kù)
- 添加遠(yuǎn)程庫(kù)
- 在github上創(chuàng)建倉(cāng)庫(kù)
- ssh協(xié)議
- 什么是ssh?
- 基于密匙的安全驗(yàn)證
- ssh密鑰生成
- ssh密鑰配置
- 同步到遠(yuǎn)程倉(cāng)庫(kù)
- 使用git bash
- 使用TortoiseGit同步
- 從遠(yuǎn)程倉(cāng)庫(kù)克隆
- 使用git bash:
- 使用TortoiseGit:
- 從遠(yuǎn)程倉(cāng)庫(kù)取代碼
- 創(chuàng)建合并分支
- 使用TortoiseGit實(shí)現(xiàn)分支管理
- 創(chuàng)建分支
- 合并分支
- 解決沖突
- 在IntelliJ IDEA中使用git
- 在Idea中配置git
- 將工程添加至git
- 一些bug
- 從遠(yuǎn)程倉(cāng)庫(kù)克隆
- 從服務(wù)端拉取代碼
TortoiseGit文件夾和文件圖標(biāo)不顯示解決方法
Git歷史
同生活中的許多偉大事件一樣,Git 誕生于一個(gè)極富紛爭(zhēng)大舉創(chuàng)新的年代。Linux 內(nèi)核開(kāi)源項(xiàng)目有著為數(shù)眾廣的參與者。絕大多數(shù)的 Linux 內(nèi)核維護(hù)工作都花在了提交補(bǔ)丁和保存歸檔的繁瑣事務(wù)上(1991-2002年間)。到 2002 年,整個(gè)項(xiàng)目組開(kāi)始啟用分布式版本控制系統(tǒng) BitKeeper 來(lái)管理和維護(hù)代碼。
到 2005 年的時(shí)候,開(kāi)發(fā) BitKeeper 的商業(yè)公司同 Linux 內(nèi)核開(kāi)源社區(qū)的合作關(guān)系結(jié)束,他們收回了免費(fèi)使用 BitKeeper 的權(quán)力。這就迫使 Linux 開(kāi)源社區(qū)(特別是 Linux的締造者 Linus Torvalds )不得不吸取教訓(xùn),只有開(kāi)發(fā)一套屬于自己的版本控制系統(tǒng)才不至于重蹈覆轍。他們對(duì)新的系統(tǒng)訂了若干目標(biāo):
? 速度
? 簡(jiǎn)單的設(shè)計(jì)
? 對(duì)非線性開(kāi)發(fā)模式的強(qiáng)力支持(允許上千個(gè)并行開(kāi)發(fā)的分支)
? 完全分布式
? 有能力高效管理類(lèi)似 Linux 內(nèi)核一樣的超大規(guī)模項(xiàng)目(速度和數(shù)據(jù)量)
Git與svn對(duì)比
Svn
SVN是集中式版本控制系統(tǒng),版本庫(kù)是集中放在中央服務(wù)器的,而干活的時(shí)候,用的都是自己的電腦,所以首先要從中央服務(wù)器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服務(wù)器。集中式版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)還可以,帶寬夠大,速度夠快,如果在互聯(lián)網(wǎng)下,如果網(wǎng)速慢的話,就郁悶了。
下圖就是標(biāo)準(zhǔn)的集中式版本控制工具管理方式:
集中管理方式在一定程度上看到其他開(kāi)發(fā)人員在干什么,而管理員也可以很輕松掌握每個(gè)人的開(kāi)發(fā)權(quán)限。
但是相較于其優(yōu)點(diǎn)而言,集中式版本控制工具缺點(diǎn)很明顯:
-
服務(wù)器單點(diǎn)故障
-
容錯(cuò)性差
Git
Git是分布式版本控制系統(tǒng),那么它就沒(méi)有中央服務(wù)器的,每個(gè)人的電腦就是一個(gè)完整的版本庫(kù),這樣,工作的時(shí)候就不需要聯(lián)網(wǎng)了,因?yàn)榘姹径际窃谧约旱碾娔X上。既然每個(gè)人的電腦都有一個(gè)完整的版本庫(kù),那多個(gè)人如何協(xié)作呢?比如說(shuō)自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時(shí),你們兩之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了。
下圖就是分布式版本控制工具管理方式:
git工作流程
一般工作流程如下:
從遠(yuǎn)程倉(cāng)庫(kù)中克隆 Git 資源作為本地倉(cāng)庫(kù)。
從本地倉(cāng)庫(kù)中checkout代碼然后進(jìn)行代碼修改
在提交前先將代碼提交到暫存區(qū)。
提交修改。提交到本地倉(cāng)庫(kù)。本地倉(cāng)庫(kù)中保存修改的各個(gè)歷史版本。
在修改完成后,需要和團(tuán)隊(duì)成員共享代碼時(shí),可以將代碼push到遠(yuǎn)程倉(cāng)庫(kù)。
下圖展示了 Git 的工作流程:
Git的安裝
最早Git是在Linux上開(kāi)發(fā)的,很長(zhǎng)一段時(shí)間內(nèi),Git也只能在Linux和Unix系統(tǒng)上跑。不過(guò),慢慢地有人把它移植到了Windows上。現(xiàn)在,Git可以在Linux、Unix、Mac和Windows這幾大平臺(tái)上正常運(yùn)行了。由于開(kāi)發(fā)機(jī)大多數(shù)情況都是windows,所以本教程只講解windows下的git的安裝及使用。
軟件下載
下載地址:https://git-scm.com/download
參考資料中安裝包已經(jīng)下載完畢,根據(jù)不同的操作系統(tǒng)選擇對(duì)應(yīng)的安裝包。
軟件安裝
安裝git for windows
一路"下一步"使用默認(rèn)選項(xiàng)即可。
安裝TortoiseGit
一路"下一步"使用默認(rèn)選項(xiàng)即可。
默認(rèn)選項(xiàng)下會(huì)啟動(dòng)配置畫(huà)面:
由于目前只有英文語(yǔ)言包,默認(rèn)即可繼續(xù)下一步。
配置git.exe,在4.2.1中已經(jīng)安裝過(guò)git-for-windows了所以在此找到git.exe所在的目錄。
配置開(kāi)發(fā)者姓名及郵箱,每次提交代碼時(shí)都會(huì)把此信息包含到提交的信息中。
使用默認(rèn)配置,點(diǎn)擊"完成"按鈕完成配置。
完整完畢后在系統(tǒng)右鍵菜單中會(huì)出現(xiàn)git的菜單項(xiàng)。
安裝中文語(yǔ)言包
安裝中文語(yǔ)言包并不是必選項(xiàng)。可以根據(jù)個(gè)人情況來(lái)選擇安裝。
直接"下一步"完整完畢。
語(yǔ)言包安裝完畢后可以在TortoiseGit的設(shè)置中調(diào)整語(yǔ)言
使用git管理文件版本
創(chuàng)建版本庫(kù)
什么是版本庫(kù)呢?版本庫(kù)又名倉(cāng)庫(kù),英文名repository,你可以簡(jiǎn)單理解成一個(gè)目錄,這個(gè)目錄里面的所有文件都可以被Git管理起來(lái),每個(gè)文件的修改、刪除,Git都能跟蹤,以便任何時(shí)刻都可以追蹤歷史,或者在將來(lái)某個(gè)時(shí)刻可以"還原"。由于git是分布式版本管理工具,所以git在不需要聯(lián)網(wǎng)的情況下也具有完整的版本管理能力。
創(chuàng)建一個(gè)版本庫(kù)非常簡(jiǎn)單,可以使用git bash也可以使用tortoiseGit。首先,選擇一個(gè)合適的地方,創(chuàng)建一個(gè)空目錄(D:\temp\git\repository)。
使用GitBash
在當(dāng)前目錄中點(diǎn)擊右鍵中選擇Git Bash來(lái)啟動(dòng)。
或者在開(kāi)始菜單中啟動(dòng)。注意如果是從開(kāi)始菜單啟動(dòng)的gitbash需要切換目錄到倉(cāng)庫(kù)所在的目錄。
創(chuàng)建倉(cāng)庫(kù)執(zhí)行命令:
$ git init
使用TortoiseGit
使用TortoiseGit時(shí)只需要在目錄中點(diǎn)擊右鍵菜單選擇"在這里創(chuàng)建版本庫(kù)"
版本庫(kù)創(chuàng)建成功,會(huì)在此目錄下創(chuàng)建一個(gè).git的隱藏目錄,如下所示:
在windows中如何顯示隱藏目錄隱藏目錄請(qǐng)自行百度o(╯□╰)o
概念:
版本庫(kù):".git"目錄就是版本庫(kù),將來(lái)文件都需要保存到版本庫(kù)中。
工作目錄:包含".git"目錄的目錄,也就是.git目錄的上一級(jí)目錄就是工作目錄。只有工作目錄中的文件才能保存到版本庫(kù)中。
添加文件
添加文件過(guò)程
在D:\temp\git\repository目錄下創(chuàng)建一個(gè)mytest.txt文件
文本文件變?yōu)閹?#34;+"號(hào)的圖標(biāo):
提交文件:在mytest.txt上再次點(diǎn)擊右鍵選擇"提交",此時(shí)將文件保存至版本庫(kù)中。
工作區(qū)和暫存區(qū)
Git和其他版本控制系統(tǒng)如SVN的一個(gè)不同之處就是有暫存區(qū)的概念。
什么是工作區(qū)(Working Directory)?
工作區(qū)就是你在電腦里能看到的目錄,比如我的reporstory文件夾就是一個(gè)工作區(qū)。
有的同學(xué)可能會(huì)說(shuō)repository不是版本庫(kù)嗎怎么是工作區(qū)了?其實(shí)repository目錄是工作區(qū),在這個(gè)目錄中的".git"隱藏文件夾才是版本庫(kù)。這回概念清晰了吧。
Git的版本庫(kù)里存了很多東西,其中最重要的就是稱(chēng)為stage(或者叫index)的暫存區(qū),還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD。
如下圖所示:
分支和HEAD的概念我們稍后再講。前面講了我們把文件往Git版本庫(kù)里添加的時(shí)候,是分兩步執(zhí)行的:
第一步是用git add把文件添加進(jìn)去,實(shí)際上就是把文件修改添加到暫存區(qū);
第二步是用git commit提交更改,實(shí)際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支。
因?yàn)槲覀儎?chuàng)建Git版本庫(kù)時(shí),Git自動(dòng)為我們創(chuàng)建了唯一一個(gè)master分支,所以,現(xiàn)在,git commit就是往master分支上提交更改。
你可以簡(jiǎn)單理解為,需要提交的文件修改通通放到暫存區(qū),然后,一次性提交暫存區(qū)的所有修改。
修改文件
提交修改
被版本庫(kù)管理的文件不可避免的要發(fā)生修改,此時(shí)只需要直接對(duì)文件修改即可。修改完畢后需要將文件的修改提交到版本庫(kù)。
在mytest.txt文件上點(diǎn)擊右鍵,然后選擇"提交"
查看修改歷史
在開(kāi)發(fā)過(guò)程中可能會(huì)經(jīng)常查看代碼的修改歷史,或者叫做修改日志。來(lái)查看某個(gè)版本是誰(shuí)修改的,什么時(shí)間修改的,修改了哪些內(nèi)容。
可以在文件上點(diǎn)擊右鍵選擇"顯示日志"來(lái)查看文件的修改歷史。
差異比較
當(dāng)文件內(nèi)容修改后,需要和修改之前對(duì)比一下修改了哪些內(nèi)容此時(shí)可以使用"比較差異功能"
還原修改
當(dāng)文件修改后不想把修改的內(nèi)容提交,還想還原到未修改之前的狀態(tài)。此時(shí)可以使用"還原"功能
注意:此操作會(huì)撤銷(xiāo)所有未提交的修改,所以當(dāng)做還原操作是需要慎重慎重!!!
刪除文件
需要?jiǎng)h除無(wú)用的文件時(shí)可以使用git提供的刪除功能直接將文件從版本庫(kù)中刪除。
案例:將java工程提交到版本庫(kù)
第一步:將參考資料中的java工程project-test復(fù)制到工作目錄中
第二步:將工程添加到暫存區(qū)。
點(diǎn)擊確定完成暫存區(qū)添加。
三、忽略文件或文件夾
在此工程中,并不是所有文件都需要保存到版本庫(kù)中的例如"bin"目錄及目錄下的文件就可以忽略。好在Git考慮到了大家的感受,這個(gè)問(wèn)題解決起來(lái)也很簡(jiǎn)單,在Git工作區(qū)的根目錄下創(chuàng)建一個(gè)特殊的.gitignore文件,然后把要忽略的文件名填進(jìn)去,Git就會(huì)自動(dòng)忽略這些文件。
如果使用TortoiseGit的話可以使用菜單項(xiàng)直接進(jìn)行忽略。
選擇保留本地文件。完成后在此文件夾內(nèi)會(huì)多出一個(gè).gitignore文件,這個(gè)文件就是文件忽略文件,當(dāng)然也可以手工編輯。其中的內(nèi)容就是把bin目錄忽略掉。
提交代碼
將代碼添加到master分支上,其中.gitignore文件也需要添加到暫存區(qū),然后提交到版本庫(kù)。
忽略文件語(yǔ)法規(guī)范
空行或是以 # 開(kāi)頭的行即注釋行將被忽略。
可以在前面添加正斜杠 / 來(lái)避免遞歸,下面的例子中可以很明白的看出來(lái)與下一條的區(qū)別。
可以在后面添加正斜杠 / 來(lái)忽略文件夾,例如 build/ 即忽略build文件夾。
可以使用 ! 來(lái)否定忽略,即比如在前面用了 *.apk ,然后使用 !a.apk ,則這個(gè)a.apk不會(huì)被忽略。
* 用來(lái)匹配零個(gè)或多個(gè)字符,如 *.[oa] 忽略所有以".o"或".a"結(jié)尾, *~ 忽略所有以 ~ 結(jié)尾的文件(這種文件通常被許多編輯器標(biāo)記為臨時(shí)文件); [] 用來(lái)匹配括號(hào)內(nèi)的任一字符,如 [abc] ,也可以在括號(hào)內(nèi)加連接符,如 [0-9] 匹配0至9的數(shù); ? 用來(lái)匹配單個(gè)字符。
看了這么多,還是應(yīng)該來(lái)個(gè)栗子:
# 忽略 .a 文件
*.a
# 但否定忽略 lib.a, 盡管已經(jīng)在前面忽略了 .a 文件
!lib.a
# 僅在當(dāng)前目錄下忽略 TODO 文件, 但不包括子目錄下的 subdir/TODO
/TODO
# 忽略 build/ 文件夾下的所有文件
build/
# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt
# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf
遠(yuǎn)程倉(cāng)庫(kù)
添加遠(yuǎn)程庫(kù)
現(xiàn)在我們已經(jīng)在本地創(chuàng)建了一個(gè)Git倉(cāng)庫(kù),又想讓其他人來(lái)協(xié)作開(kāi)發(fā),此時(shí)就可以把本地倉(cāng)庫(kù)同步到遠(yuǎn)程倉(cāng)庫(kù),同時(shí)還增加了本地倉(cāng)庫(kù)的一個(gè)備份。
常用的遠(yuǎn)程倉(cāng)庫(kù)就是github:https://github.com/,接下來(lái)我們演示如何將本地代碼同步到github。
在github上創(chuàng)建倉(cāng)庫(kù)
首先你得在github上創(chuàng)建一個(gè)賬號(hào),這個(gè)就不演示了。然后在github上創(chuàng)建一個(gè)倉(cāng)庫(kù):
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-zGGCEPQ7-1597047026418)(git%E6%95%99%E6%A1%88-v2.assets/20200809222234.png)]
點(diǎn)擊"create repository"按鈕倉(cāng)庫(kù)就創(chuàng)建成功了。
Github支持兩種同步方式"https"和"ssh"。如果使用https很簡(jiǎn)單基本不需要配置就可以使用,但是每次提交代碼和下載代碼時(shí)都需要輸入用戶名和密碼。如果使用ssh方式就需要客戶端先生成一個(gè)密鑰對(duì),即一個(gè)公鑰一個(gè)私鑰。然后還需要把公鑰放到githib的服務(wù)器上。這兩種方式在實(shí)際開(kāi)發(fā)中都用應(yīng)用,所以我們都需要掌握。接下來(lái)我們先看ssh方式。
ssh協(xié)議
什么是ssh?
SSH 為 Secure Shell(安全外殼協(xié)議)的縮寫(xiě),由 IETF 的網(wǎng)絡(luò)小組(Network Working Group)所制定。SSH 是目前較可靠,專(zhuān)為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠(yuǎn)程管理過(guò)程中的信息泄露問(wèn)題。
基于密匙的安全驗(yàn)證
使用ssh協(xié)議通信時(shí),推薦使用基于密鑰的驗(yàn)證方式。你必須為自己創(chuàng)建一對(duì)密匙,并把公用密匙放在需要訪問(wèn)的服務(wù)器上。如果你要連接到SSH服務(wù)器上,客戶端軟件就會(huì)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用你的密匙進(jìn)行安全驗(yàn)證。服務(wù)器收到請(qǐng)求之后,先在該服務(wù)器上你的主目錄下尋找你的公用密匙,然后把它和你發(fā)送過(guò)來(lái)的公用密匙進(jìn)行比較。如果兩個(gè)密匙一致,服務(wù)器就用公用密匙加密"質(zhì)詢"(challenge)并把它發(fā)送給客戶端軟件。客戶端軟件收到"質(zhì)詢"之后就可以用你的私人密匙解密再把它發(fā)送給服務(wù)器。
ssh密鑰生成
在windows下我們可以使用 Git Bash.exe來(lái)生成密鑰,可以通過(guò)開(kāi)始菜單或者右鍵菜單打開(kāi)Git Bash
git bash 執(zhí)行命令,生命公鑰和私鑰
命令: ssh-keygen -t rsa
執(zhí)行命令完成后,在window本地用戶.ssh目錄C:\Users\用戶名\.ssh下面生成如下名稱(chēng)的公鑰和私鑰:
ssh密鑰配置
密鑰生成后需要在github上配置密鑰本地才可以順利訪問(wèn)。
在key部分將id_rsa.pub文件內(nèi)容添加進(jìn)去,然后點(diǎn)擊"Add SSH key"按鈕完成配置。
同步到遠(yuǎn)程倉(cāng)庫(kù)
同步到遠(yuǎn)程倉(cāng)庫(kù)可以使用git bash也可以使用tortoiseGit
使用git bash
在倉(cāng)庫(kù)所在的目錄(D:\temp\git\repository)點(diǎn)擊右鍵選擇"Git Bash Here",啟動(dòng)git bash程序。
然后在git bash中執(zhí)行如下語(yǔ)句:
git remote add origin git@github.com:sublun/mytest.git
git push -u origin master
注意:其中黃色字體部分(sublun)需要替換成個(gè)人的用戶名。
如何出現(xiàn)如下錯(cuò)誤:
可以先執(zhí)行如下命令,然后再執(zhí)行上面的命令
$ git remote rm origin
使用TortoiseGit同步
一、由于TortoiseGit使用的ssh工具是"PuTTY"git Bash使用的ssh工具是"openSSH",如果想讓TortoiseGit也使用剛才生成的密鑰可以做如下配置:
Url:遠(yuǎn)程倉(cāng)庫(kù)的地址
推送URL:也是相同的
Putty密鑰:選擇剛才生成的密鑰中的私鑰
同步。在本地倉(cāng)庫(kù)的文件夾中單擊右鍵,選擇"Git同步"
{width=“5.7625in” height=“4.354861111111111in”}
從遠(yuǎn)程倉(cāng)庫(kù)克隆
克隆遠(yuǎn)程倉(cāng)庫(kù)也就是從遠(yuǎn)程把倉(cāng)庫(kù)復(fù)制一份到本地,克隆后會(huì)創(chuàng)建一個(gè)新的本地倉(cāng)庫(kù)。選擇一個(gè)任意部署倉(cāng)庫(kù)的目錄,然后克隆遠(yuǎn)程倉(cāng)庫(kù)。
使用git bash:
$ git clone git@github.com:sublun/mytest.git
使用TortoiseGit:
在任意目錄點(diǎn)擊右鍵:
從遠(yuǎn)程倉(cāng)庫(kù)取代碼
Git中從遠(yuǎn)程的分支獲取最新的版本到本地有這樣2個(gè)命令:
git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會(huì)自動(dòng)merge(合并代碼)
git pull:相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地
上述命令其實(shí)相當(dāng)于git fetch 和 git merge
在實(shí)際使用中,git fetch更安全一些
因?yàn)樵趍erge前,我們可以查看更新情況,然后再?zèng)Q定是否合并
如果使用TortoiseGit的話可以從右鍵菜單中點(diǎn)擊"拉取"(pull)或者"獲取"(fetch)
創(chuàng)建合并分支
在我們每次的提交,Git都把它們串成一條時(shí)間線,這條時(shí)間線就是一個(gè)分支。截止到目前,只有一條時(shí)間線,在Git里,這個(gè)分支叫主分支,即master分支。HEAD指針嚴(yán)格來(lái)說(shuō)不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當(dāng)前分支。
一開(kāi)始的時(shí)候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當(dāng)前分支,以及當(dāng)前分支的提交點(diǎn):
每次提交,master分支都會(huì)向前移動(dòng)一步,這樣,隨著你不斷提交,master分支的線也越來(lái)越長(zhǎng)。
當(dāng)我們創(chuàng)建新的分支,例如dev時(shí),Git新建了一個(gè)指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當(dāng)前分支在dev上:
你看,Git創(chuàng)建一個(gè)分支很快,因?yàn)槌嗽黾右粋€(gè)dev指針,改改HEAD的指向,工作區(qū)的文件都沒(méi)有任何變化!
不過(guò),從現(xiàn)在開(kāi)始,對(duì)工作區(qū)的修改和提交就是針對(duì)dev分支了,比如新提交一次后,dev指針往前移動(dòng)一步,而master指針不變:
假如我們?cè)赿ev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最簡(jiǎn)單的方法,就是直接把master指向dev的當(dāng)前提交,就完成了合并:
所以Git合并分支也很快!就改改指針,工作區(qū)內(nèi)容也不變!
合并完分支后,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉后,我們就剩下了一條master分支:
使用TortoiseGit實(shí)現(xiàn)分支管理
使用TortoiseGit管理分支就很簡(jiǎn)單了。
創(chuàng)建分支
在本地倉(cāng)庫(kù)文件夾中點(diǎn)擊右鍵,然后從菜單中選擇"創(chuàng)建分支":
如果想創(chuàng)建完畢后直接切換到新分支可以勾選"切換到新分支"選項(xiàng)或者從菜單中選擇"切換/檢出"來(lái)切換分支:
合并分支
分支切換到dev后就可以對(duì)工作區(qū)的文件進(jìn)行修改,然后提交到dev分支原理的master分支不受影響。例如我們修改mytest.txt中的內(nèi)容,然后提交到dev分支。
切換到master分支后還是原理的內(nèi)容:
將dev分支的內(nèi)容合并到master分支,當(dāng)前分支為master。從右鍵菜單中選擇"合并":
再查看mytest.txt的內(nèi)容就已經(jīng)更新了:
解決沖突
兩個(gè)分支中編輯的內(nèi)容都是相互獨(dú)立互不干擾的,那么如果在兩個(gè)分支中都對(duì)同一個(gè)文件進(jìn)行編輯,然后再合并,就有可能會(huì)出現(xiàn)沖突。
例如在master分支中對(duì)mytest.txt進(jìn)行編輯:
然后提交到版本庫(kù)。
切換到dev分支,對(duì)mytest.txt進(jìn)行編輯:
最后進(jìn)行分支合并,例如將dev分支合并到master分支。需要先切換到master分支然后進(jìn)行分支合并。
出現(xiàn)版本沖突。
沖突需要手動(dòng)解決。
在沖突文件上單機(jī)右鍵選擇“解決沖突”菜單項(xiàng):
把沖突解決完畢的文件提交到版本庫(kù)就可以了。
在IntelliJ IDEA中使用git
在Idea中配置git
安裝好IntelliJ IDEA后,如果Git安裝在默認(rèn)路徑下,那么idea會(huì)自動(dòng)找到git的位置,如果更改了Git的安裝位置則需要手動(dòng)配置下Git的路徑。
選擇File→Settings打開(kāi)設(shè)置窗口,找到Version Control下的git選項(xiàng):
選擇git的安裝目錄后可以點(diǎn)擊“Test”按鈕測(cè)試是否正確配置
將工程添加至git
1)在idea中創(chuàng)建一個(gè)工程,例如創(chuàng)建一個(gè)java工程,名稱(chēng)為idea-git-test,如下圖所示:
創(chuàng)建本地倉(cāng)庫(kù)
在菜單中選擇"vcs"→Import into Version Control→Create Git Repository…
選擇工程所在的上級(jí)目錄。本例中應(yīng)該選擇idea-projects目錄,然后點(diǎn)擊"OK"按鈕,在工程的上級(jí)目錄創(chuàng)建本地倉(cāng)庫(kù),那么idea-projects目錄就是本地倉(cāng)庫(kù)的工作目錄,此目錄中的工程就可以添加到本地倉(cāng)庫(kù)中。也就是可以把idea-git-test工程添加到本地倉(cāng)庫(kù)中。
選擇之后在工具欄上就多出了git相關(guān)工具按鈕:
將工程添加至本地倉(cāng)庫(kù)
直接點(diǎn)擊
commit按鈕,將工程提交至本地倉(cāng)庫(kù)。
然后點(diǎn)擊"commit"按鈕,將工程添加至本地倉(cāng)庫(kù)。
推送到遠(yuǎn)程
在github上創(chuàng)建一個(gè)倉(cāng)庫(kù)然后將本地倉(cāng)庫(kù)推送到遠(yuǎn)程。
在工程上點(diǎn)擊右鍵,選擇git→Repository→push,
或者在菜單中選擇vcs→git→push
點(diǎn)擊"Define remote"鏈接,配置https形式的URL,git形式的無(wú)法通過(guò)。然后點(diǎn)擊OK
點(diǎn)擊"push"按鈕就講本地倉(cāng)庫(kù)推送到遠(yuǎn)程,如果是第一次配置推送需要輸入github的用戶名和密碼。
一些bug
csdn鏈接
csdn鏈接
csdn鏈接
?
從遠(yuǎn)程倉(cāng)庫(kù)克隆
關(guān)閉工程后,在idea的歡迎頁(yè)上有"Check out from version control"下拉框,選擇git
此處仍然推薦使用htts形式的url,點(diǎn)擊"test"按鈕后顯示連接成功。
點(diǎn)擊OK按鈕后根據(jù)提示將遠(yuǎn)程倉(cāng)庫(kù)克隆下來(lái),然后倒入到idea中。
從服務(wù)端拉取代碼
如果需要從服務(wù)端同步代碼可以使用工具條中的"update"按鈕
總結(jié)
以上是生活随笔為你收集整理的git-从入门到熟悉的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 用VML画图(一些基本的矢量图)(转)
- 下一篇: C语言中float,double类型,在