幾個免費Git托管網(wǎng)站:
一個 Git 的實際使用場景
某研發(fā)團隊開發(fā)了一款名為A的信息系統(tǒng),目前已發(fā)布v1.0版本。由于銷售業(yè)績良好,因此研發(fā)團隊正在著手v2.0版本的開發(fā)工作。
但就在這個時候,有客戶發(fā)現(xiàn)v1.0版本有一嚴重bug,如不及時修復(fù)將造成嚴重后果。
研發(fā)團隊收到bug報告后立刻安排部分研發(fā)人員對v1.0版本進行修復(fù),但其他研發(fā)人員則繼續(xù)開發(fā)v2.0版本的新功能。
修復(fù)bug的研發(fā)人員很快找到問題原因并對問題代碼進行了修復(fù),很快發(fā)布了v1.1版本給了客戶,因此沒有造成重大損失。
Bug修復(fù)后研發(fā)人員將修復(fù)后的代碼整合到研發(fā)主線中來,這樣就可以保證今后發(fā)布的v2.0等版本也不會再出現(xiàn)此問題。
就這樣研發(fā)團隊在大家的共同努力下工作有條不紊的進行著。
包青天注:這里表達的核心思想是'分支和主線的關(guān)系'!
版本控制工具 Git 的安裝
除了安裝路徑,全部按默認即可:
--> 選擇安裝路徑 --> 使用默認的組件 --> 創(chuàng)建開始菜單文件夾 --> 選擇使用Git的命令行模式,選擇默認Git Bash模式會創(chuàng)建一個快捷命令行:
--> 選擇換行格式,默認為第一個跨平臺樣式:
--> Finish 安裝完成,桌面會生成一個快捷圖標,安裝成功。
在安裝Git的過程中一般都會勾選【Git Gui Here、Git Bash Here】選項,如果你以后是使用TortoiseGit,可能并不需要桌面右擊中有Git Gui Here、Git Bash Here選項:
Git Gui Here:是否要在這里面使用git shell的圖形用戶界面操作?Git Bash Here:是否要在這里面使用git shell的命令行工具操作?
Git Gui Here:是否要在這里面使用git shell的圖形用戶界面操作?
Git Bash Here:是否要在這里面使用git shell的命令行工具操作?
客戶端GUI工具 TortoiseGit 的安裝
TortoiseGit就是大名鼎鼎的小烏龜,一個圖形化的Git操作程序。
其實TortoiseGit 只是一個程序殼,其必須依賴Git Core,所以安裝TortoiseGit前需要先安裝Git。
如果你是一名軟件開發(fā)人員,那請你一定要用命令行(如使用Git Bash Here),不要用可視化工具,用可視化工具的速度你會難以忍受的。
--> 選擇SSH客戶端,可以選擇 TortoiseGitPlink(位于TortoiseGit安裝目錄/bin 下),也可以選擇 Git 默認的SSH客戶端(位于Git安裝目錄/bin/ssh.exe,如果配置了 Path,那直接是 ssh.exe)。我們使用默認即可:
--> 選擇安裝路徑及組件 --> 點擊Install,開始安裝 --> Win 7下會彈出一個確認安裝的提示框,確認就可以了 --> 安裝完成。
確認是否安裝成功, 在桌面->點擊右鍵,如下圖
和SVN一樣,官網(wǎng)有提供漢化包,注意要和TortoiseGit的版本一致才可以。
Eclipse 中 Git 的基本使用
1、配置用戶名和郵箱
2、在eclipse中新建或?qū)胍粋€項目,然后項目上右鍵 Team > Share Project,選擇Git > next,
在彈出窗口中點擊右側(cè)的【Create...】或下側(cè)的【Create Repository】,最后 finish,就創(chuàng)建了一個本地倉庫。
若項目已經(jīng)在一個本地項目中,此不會出現(xiàn)【Create...】按鈕
3、在github或git@osc等代碼托管網(wǎng)站新建一個 repository 庫
- 右鍵 team > commit,輸入注釋,然后勾選你需要提交的文件,Commit,提交到本地倉庫。
- 右鍵 team > remote > push,輸入github或git@osc上的Url,填上自己賬號密碼(非必須),next,在彈出窗口中點擊如下小三角,選擇 master,然后點擊 Add spec,然后點擊 finish
若報 non-fast-forward 錯誤,原因在于:git倉庫中已經(jīng)有一部分代碼(初始時一般會有三個文件),所以它不允許你直接把你的代碼覆蓋上去。簡單解決方案就是新建一個不帶任何文件的庫。
4、完成后,登陸github,就可以看見剛提交上去的項目 了。
在本地創(chuàng)建 Git 倉庫
你可以將本地一個目錄當做倉庫(repository),然后把另一個目錄當做工作區(qū)。
1、創(chuàng)建repository
進入到你要當倉庫的磁盤目錄下,點鼠標右鍵,選擇【Git Create repository here】創(chuàng)建倉庫。把【Make it Bare】勾上就表示這是一個單純的倉庫(repository),寫代碼的工作區(qū)放在另一個地方。完成后會在目錄下面出現(xiàn)很多稀奇古怪的文件和目錄,不要在意,那都是git需要的東西。
2、創(chuàng)建工作區(qū)
進入到你要做工作區(qū)的那個磁盤的目錄下,然后右鍵選擇【Git Clone】,【URL】選擇上面我們創(chuàng)建的庫的目錄,【Directory】選擇我們的工作區(qū),也就是你要放代碼的目錄,其他的不用管。成功之后會在此目錄下生成一個隱藏的.git目錄。
PS:
- 庫中所有相關(guān)內(nèi)容都會映射在【.git目錄】中,以后不管項目中添加多少個文件夾,整個庫只會有這一個管理文件夾,這和SVN 會在每個子目錄中都生成一個此類型的目錄的方式相完全不同。
- 【Git Clone】會在建立工作區(qū)的同時將指定倉庫下的所有內(nèi)容復(fù)制一份,而【Git Init Here】命令,或【Git Create repository here】命令但不勾選【Make it Bare】只會建立工作區(qū)(只生成.git文件夾)。
3、向工作區(qū)中執(zhí)行add、commit、push操作
add就是把這個文件加入到TortoiseGit的關(guān)注列表之中,在目錄的空白處點擊右鍵選擇TortoiseGit,也可以批量add文件。
add后必須commit才算是提交到了本地git服務(wù)器,commit的文件是保存在本地自己單獨的工作區(qū)目錄中的
commit后必須push才算是提交到了遠程git服務(wù)器(倉庫),push的文件是保存在所有用戶共享的repository倉庫中的
一般情況,repository不可能是本地的某個目錄,也很少是用公網(wǎng)的git倉庫,而是公司自己的服務(wù)器或公司局域網(wǎng)中的某個目錄。
在 Github 或 osChina 創(chuàng)建 Git 倉庫
基本步驟
- 創(chuàng)建新項目。在這里創(chuàng)建repository和我們右鍵create repository效果是一樣的,只不過之前我們是在本機上創(chuàng)建,而這里是在服務(wù)器上而已。
- 在工作區(qū)目錄上右鍵 --> git clone,url填寫 Github 或 osChina 提供給你的url,這個操作和在本地操作完全一樣。完成后,倉庫里的所有文件,包括隱藏的.git文件夾都克隆到了本地。
- 在此目錄中創(chuàng)建項目,或?qū)⒈镜噩F(xiàn)有項目整個復(fù)制到此目錄內(nèi),然后Add、Commit、Push。可以直接將根目錄Add進去,工具會自動將bin目錄、gen目錄等不需要的文件忽略。
- Push成功后,去 Github 或 osChina 上查看,你的文件已經(jīng)在服務(wù)器倉庫中了,且不包含忽略目錄與文件。
Git 的分支管理策略
相比同類軟件,Git有很多優(yōu)點,其中很顯著的一點,就是版本的【分支和合并】十分方便。一些傳統(tǒng)的版本管理軟件,其分支操作實際上是生成一份現(xiàn)有代碼的物理拷貝,而Git是只生成一個指向當前版本(又稱'快照')的指針,因為少了大量文件的拷貝操作,所以分支合并是速度非常快。但是,這也產(chǎn)生了一定副作用。如果你不加注意,很可能會留下一個枝節(jié)蔓生、四處開放的版本庫,到處都是分支,完全看不出主干發(fā)展的脈絡(luò)。
按如下分支管理的策略,可以使得版本庫的演進保持簡潔,主干清晰,各個分支各司其職、井井有條。
一個主分支master
代碼庫應(yīng)該有一個、且僅有一個主分支。所有提供給用戶使用的正式版本,都在這個主分支上發(fā)布。
Git主分支的名字,默認叫做master,它是自動建立的,版本庫初始化以后,默認就是在主分支在進行開發(fā)。
不同的開發(fā)分支develop
主分支只用來發(fā)布重大版本,日常開發(fā)應(yīng)該在另一條分支上完成。我們把開發(fā)用的分支,叫做develop。這個分支可以用來生成代碼的最新隔夜版本(nightly)。
如果想正式對外發(fā)布,就在master分支上,對develop分支進行合并。
創(chuàng)建、切換、修改、合并分支
branch [br?nt?] n. 分支; 樹枝; 部門,分科; 支流; vi. 分支形成; 分支擴張; [計] 下分支的指令; vt. 使分支; 使分叉;merge [m?:rd?] vt.融入; (使)混合; 相融; 漸漸消失在某物中;
branch [br?nt?] n. 分支; 樹枝; 部門,分科; 支流; vi. 分支形成; 分支擴張; [計] 下分支的指令; vt. 使分支; 使分叉;
merge [m?:rd?] vt.融入; (使)混合; 相融; 漸漸消失在某物中;
git的主體思路就是不斷的建立分支,可靠以后再合并到主分支里面,從而使得整個版本不斷更新。
當然相關(guān)的功能必不可少,比如版本回溯,就是發(fā)現(xiàn)當前版本不夠好,返回到之前的某個版本重新來過等等,但是只要明白了主線,就可以明白為什么有那些相關(guān)功能了。
git本身就是為使用而開發(fā)的,所具有的功能都是現(xiàn)實使用中碰到的最常見的問題。如果你在使用過程中,發(fā)現(xiàn)一個情況不知道如何處理,你只要想一下這個情況別人是否會遇到,如果是的話,那這個軟件應(yīng)該有相關(guān)的功能或者功能組合來幫你處理問題。
1、創(chuàng)建版本分支
在根目錄上右鍵【Create Branch】,在彈出對話框中為此分支版本起名,然后ok即可創(chuàng)建一個分支。
2、切換版本分支
在根目錄上右鍵【Switch/Checkout,切換/檢出】,通過【Switch To】下面的選項選擇要切換到的分支,然后ok即可。
3、修改版本分支
更改后提交時會發(fā)現(xiàn)菜單變了,提交的目的地變成了剛才我們切換到的分支
提交后,右鍵【Show log】,里面就出現(xiàn)了兩條版本路線。push到服務(wù)器后,服務(wù)器也可以查看分支了。
4、合并版本分支【在A分支合并B分支,可把B分支中更新的內(nèi)容拉到A分支】
比如,現(xiàn)在想把A分支合并到主版本 master 中,現(xiàn)在就要做如下操作:
- 先切換到主版本分支:右鍵【Switch/Checkout,切換/檢出】,彈出的對話框中選擇 master,點擊OK
- 再和并A分支:切換后,在結(jié)果頁中或右鍵點擊【Merge,合并】,在彈出的對話框中【From】里選擇A分支,填寫日志,點擊OK
- 最后 push 到服務(wù)器。完成后,A分支中更新的內(nèi)容就同步到了主版本 master 分支中了。
讓 Git 記住設(shè)置的用戶名和密碼
TortoiseGit在提交時總是會提示你輸入用戶名密碼,非常麻煩,解決方案如下:
- Windows中添加一個變量名為【HOME】值為【%USERPROFILE%】的用戶變量
- 在開始 --> 運行中打開【%Home%】,新建一個名為【_netrc】的文件
- 用記事本打開此文件,輸入Git服務(wù)器名、用戶名、密碼,并保存,格式如下:
#【192.168.20.9】【baiqiantao】【http://192.168.20.9/】#【git.oschina.net】【baiqiantao】【http://git.oschina.net/baiqiantao】#【code.csdn.net】【baiqiantao】【https://code.csdn.net/baiqiantao】#【github.com】【baiqiantao】【https://github.com/baiqiantao】machine github.com #git服務(wù)器名稱login baiqiantao #git賬號password ******** #git密碼
#【192.168.20.9】【baiqiantao】【http://192.168.20.9/】
#【git.oschina.net】【baiqiantao】【http://git.oschina.net/baiqiantao】
#【code.csdn.net】【baiqiantao】【https://code.csdn.net/baiqiantao】
#【github.com】【baiqiantao】【https://github.com/baiqiantao】
machine github.com #git服務(wù)器名稱
以后在git上提交時就不用輸入用戶名密碼了!
以上是針對全局設(shè)置的,針對某個具體項目進行配置的話,還可以按照如下方式。
修改項目根目錄下隱藏的【.git】目錄下的【config】文件,
修改前的部分內(nèi)容為:[remote 'origin'] url = https://github.com/baiqiantao/KotlinTest.git
url = https://github.com/baiqiantao/KotlinTest.git
url = https://用戶名:密碼@github.com/baiqiantao/KotlinTest.git
url = https://用戶名:密碼@github.com/baiqiantao/KotlinTest.git
也即在【https://】之后插入了如下內(nèi)容:
除了url其他完全一樣,這樣就能針對當前項目記錄用戶名和密碼了。
Git 三個級別的配置文件
Git有一個工具被稱為git config,它允許你獲得和設(shè)置配置變量,這些變量可以控制Git的外觀和操作的各個方面。
這些變量可以被存儲在三個不同的位置:
- 1、位于Git安裝目錄下的【gitconfig】文件,如【C:\Program Files\Git\mingw64\etc\gitconfig】,包含了適用于系統(tǒng)所有用戶和所有庫的值。如果你傳遞參數(shù)選項【--system】給 git config,它將明確的讀和寫這個文件。
- 2、位于用戶目錄下的【.gitconfig】文件 ,如【C:\Users\Administrator\.gitconfig】,包含了具體到某個用戶(指的是Windows系統(tǒng)用戶)配置的值。如果你傳遞參數(shù)選項【--global】給 git config,它將明確的讀和寫這個文件。
- 3、位于某個由Git控制的項目下隱藏的【.git】目錄下的【config】文件,包含了具體到某個項目的配置。
當鍵沖突時,下一個級別配置的值會覆蓋上一個級別配置的值;如果下一個級別沒有為此鍵配置值,則使用上一個級別配置的值。
1、檢查系統(tǒng)配置
git config --list --system
git config --list --system
git config user.namegit config user.email
git config --global user.name 'baiqiantao'git config --global user.email baiqiantao@sina.com
git config --global user.name 'baiqiantao'
git config --global user.email baiqiantao@sina.com
2017-11-6