IDEA配置Git進(jìn)行代碼管理

隨筆


Git介紹

Git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。Git組成部分:

SVN是集中式的,Git是分布式的。集中式就是所有的代碼都存儲(chǔ)在中央服務(wù)器,分布式就是每臺(tái)電腦都是中央服務(wù)器。

使用Git分支開(kāi)發(fā)流程

從一般開(kāi)發(fā)者的角度來(lái)看,git有以下功能:
  1. 從服務(wù)器上克隆完整的Git倉(cāng)庫(kù)(包括代碼和版本信息)到單機(jī)上。
  2. 在自己的機(jī)器上根據(jù)不同的開(kāi)發(fā)目的,創(chuàng)建分支,修改代碼。
  3. 在單機(jī)上自己創(chuàng)建的分支上提交代碼。
  4. 在單機(jī)上合并分支。
  5. 把服務(wù)器上最新版的代碼fetch下來(lái),然后跟自己的主分支合并。
  6. 生成補(bǔ)丁(patch),把補(bǔ)丁發(fā)送給主開(kāi)發(fā)者。
  7. 看主開(kāi)發(fā)者的反饋,如果主開(kāi)發(fā)者發(fā)現(xiàn)兩個(gè)一般開(kāi)發(fā)者之間有沖突(他們之間可以合作解決的沖突),就會(huì)要求他們先解決沖突,然后再由其中一個(gè)人提交。如果主開(kāi)發(fā)者可以自己解決,或者沒(méi)有沖突,就通過(guò)。
  8. 一般開(kāi)發(fā)者之間解決沖突的方法,開(kāi)發(fā)者之間可以使用pull 命令解決沖突,解決完沖突之后再向主開(kāi)發(fā)者提交補(bǔ)丁。
從主開(kāi)發(fā)者的角度(假設(shè)主開(kāi)發(fā)者不用開(kāi)發(fā)代碼)看,git有以下功能:
  1. 查看郵件或者通過(guò)其它方式查看一般開(kāi)發(fā)者的提交狀態(tài)。
  2. 打上補(bǔ)丁,解決沖突(可以自己解決,也可以要求開(kāi)發(fā)者之間解決以后再重新提交,如果是開(kāi)源項(xiàng)目,還要決定哪些補(bǔ)丁有用,哪些不用)。
  3. 向公共服務(wù)器提交結(jié)果,然后通知所有開(kāi)發(fā)人員。
日常開(kāi)發(fā)流程:

Git安裝配置

本地下載安裝

公司內(nèi)可能會(huì)把Github封掉了,所以使用淘寶提供的鏡像下載
下載地址:http://npm.taobao.org/mirrors/git-for-windows/
安裝方法參考:https://www.cnblogs.com/wj-1314/p/7993819.html

遠(yuǎn)程倉(cāng)庫(kù)配置ssh密鑰:
  1. 打開(kāi)本地Git Bash

設(shè)置Git的user name和email:(如果是第一次的話)

$ git config --global user.name "1805xxxx"
$ git config --global user.email [1805xxxx@cnxxxx.com](mailto:1805xxxx@cnxxxx.com)
  1. 創(chuàng)建 SSH Key
$ ssh-keygen -t rsa -C [1805xxxx@cnxxxx.com](mailto:1805xxxx@cnxxxx.com)

連續(xù)3次回車(chē),在C:\Users\1805xxxx.ssh 目錄下最后得到了兩個(gè)文件:id_rsa和id_rsa.pub,其中id_rsa.pub就是需要配置到遠(yuǎn)程倉(cāng)庫(kù)的公鑰,打開(kāi)復(fù)制ssh-rsa這段代碼,再進(jìn)入遠(yuǎn)程Git倉(cāng)庫(kù)進(jìn)行配置。

  1. 遠(yuǎn)程Git倉(cāng)庫(kù)配置

創(chuàng)建遠(yuǎn)程Git倉(cāng)庫(kù)

公司GitLab地址:http://opensource.cnxxxx.com/ (公司內(nèi)網(wǎng))
首先新建一個(gè)Git倉(cāng)庫(kù):填寫(xiě)項(xiàng)目名稱(chēng)和項(xiàng)目描述,可見(jiàn)等級(jí)根據(jù)自己需求定義。

新建項(xiàng)目
項(xiàng)目管理

本地IDEA使用Git

先測(cè)試本地環(huán)境Git是否安裝成功,在設(shè)置里找到Git—Test

工作開(kāi)始前都先把代碼從github庫(kù)上拉取下來(lái),更新自己的代碼,避免別人修改過(guò)的代碼與自己的有沖突,必須要養(yǎng)成這樣一個(gè)良好的習(xí)慣。

clone

拿到git路徑,打開(kāi)IDEA,選擇Checkout form Version Control,檢出倉(cāng)庫(kù)到本地:

在URL中輸入git地址,點(diǎn)擊Test進(jìn)行測(cè)試連接,下邊Director選擇自己的工作空間,連接成功后,點(diǎn)擊Clone按鈕,即可將遠(yuǎn)程倉(cāng)庫(kù)克隆到本地。

.gitignore

按照規(guī)則忽略文件
安裝.ignore插件,配置.gitignore文件

安裝完以后可以看到與規(guī)則匹配的文件都變成灰色了,即使修改了也不會(huì)被提交。

add

在項(xiàng)目中新建文件的時(shí)候,IDEA會(huì)詢(xún)問(wèn)是否將該文件加入版本控制,如果選擇了是,那么就相當(dāng)于執(zhí)行了add命令,文件名會(huì)變綠色,如果選擇了否,那么文件名會(huì)變紅色,未加入版本控制。
新建文件時(shí),未加入版本控制:


選擇Yes,加入版本控制,文件名會(huì)變綠色:

commit

進(jìn)行文件的提交,提交文件后,可以在IDEA提供的版本控制里邊查看當(dāng)前分支開(kāi)發(fā)情況:
localMaster為我自己本地建的分支。origin/master為遠(yuǎn)程主分支。

這個(gè)時(shí)候,只在自己本地倉(cāng)庫(kù)存在該文件,遠(yuǎn)程Git倉(cāng)庫(kù)并不存在。

fetch

比如這個(gè)時(shí)候有人在該package下提交了另外一個(gè)文件,并提交到了遠(yuǎn)程倉(cāng)庫(kù),遠(yuǎn)程倉(cāng)庫(kù)多了RemoteGitTest.java文件,但是并不影響本地。如果要同步遠(yuǎn)程倉(cāng)庫(kù)的代碼,需要使用fetch命令。

該命令會(huì)將遠(yuǎn)程倉(cāng)庫(kù)的代碼同步下來(lái),但是并不會(huì)合并。

可以看到最左側(cè)為主分支,然后自己的本地分支突出來(lái)了。

pull

pull和fetch命令都是從遠(yuǎn)程倉(cāng)庫(kù)拉取代碼,但是fetch相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,但不會(huì)自動(dòng)merge。pull是會(huì)自動(dòng)fetch,并且merge代碼。
如果需要有選擇的合并git fetch是更好的選擇。效果相同時(shí)git pull將更為快捷。

merge

現(xiàn)在本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)有了不同,為了提交代碼,必須先將代碼進(jìn)行合并,在IDEA右下角,是有當(dāng)前分支的名稱(chēng)的,可以快速進(jìn)行切換自己的本地分支。

切換到本地的主分支,然后點(diǎn)擊遠(yuǎn)程分支,選擇Merge into Current,將遠(yuǎn)程分支合并到本地。這樣,該分支就是包含遠(yuǎn)程代碼的最新代碼。

合并后,如果有沖突需要解決沖突,最后在控制臺(tái)可以看到如下:

繼續(xù)修改本地文件,可以看到現(xiàn)在就在一個(gè)分支上了。

push

合并完代碼后,現(xiàn)在代碼都是存放在自己的本地電腦中的,其他人并看不到,所以需要推送到遠(yuǎn)程倉(cāng)庫(kù),讓所有人都看到。

點(diǎn)擊push后會(huì)出現(xiàn)Push Commits的窗口,里邊都是自己本地倉(cāng)庫(kù)的提交記錄,右側(cè)是修改過(guò)的文件,點(diǎn)擊下邊的Push,即可推送到遠(yuǎn)程倉(cāng)庫(kù)。

推送完成后,在IDEA右下角會(huì)顯示推送成功的消息:

然后看本地控制臺(tái):標(biāo)簽都到了同一位置,說(shuō)明本地與遠(yuǎn)程代碼保持了一致。

branch

有時(shí)候會(huì)接到多個(gè)開(kāi)發(fā)任務(wù),但是這多個(gè)開(kāi)發(fā)任務(wù)修改的是不同位置的代碼,這個(gè)時(shí)候可以快速拉取多個(gè)分支,然后分別完成不同的開(kāi)發(fā)任務(wù)。
選擇某一個(gè)分支,點(diǎn)擊checkout As... 意思是從遠(yuǎn)程分支拉取一個(gè)新的分支

我這里拉取了一個(gè)test分支

點(diǎn)擊ok,右下角自動(dòng)給你切換到test分支,并且本地分支欄也多了test分支

如果想切回其他分支,只需要選中其他分支,然后點(diǎn)擊Checkout即可快速切換到另一個(gè)分支。兩邊修改的代碼互不影響。

以上就是在IDEA中快速進(jìn)行分支開(kāi)發(fā)。

SourceTree進(jìn)行Git管理

SourceTree只是通過(guò)UI的方式來(lái)方便進(jìn)行版本管理,實(shí)際上和使用Git Bash寫(xiě)腳本命令一樣就,增加了交互式界面,操作也更安全些。

1.下載sourcetree

https://dl.softmgr.qq.com/original/Development/SourceTreeSetup-3.2.6.exe

下載后安裝默認(rèn)安裝,需要修改一些文件,才能跳過(guò)驗(yàn)證,破解安裝,步驟如下:

  1. 初次啟動(dòng)sourcetree

會(huì)在個(gè)人目錄生成 C:\Users\1805xxxx\AppData\Local\Atlassian,注意你的個(gè)人目錄

如果看不到是因?yàn)锳ppData是隱藏文件夾

  1. 關(guān)閉sourcetree安裝驗(yàn)證

C:\Users\1805xxxx\AppData\Local\Atlassian\SourceTree下創(chuàng)建名為accounts.json的文件

[{
  "$id": "1",
  "$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
  "Authenticate": true,
  "HostInstance": {
    "$id": "2",
    "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
    "Host": {
      "$id": "3",
      "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
      "Id": "atlassian account"
    },
    "BaseUrl": "https://id.atlassian.com/"
  },
  "Credentials": {
    "$id": "4",
    "$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
    "Username": "",
    "Email": null
  },
  "IsDefault": false
}]
  1. 修改user.config
    然后在進(jìn)入C:\Users\1805xxxx\AppData\Local\Atlassian\SourceTree.exe_Url_dbhf2dawcrrrvxjjwvb2mxghqxuehspc\3.2.6.3544
    修改user.config內(nèi)容,增加下面代碼:
            <setting name="AgreedToEULA" serializeAs="String">
                <value>True</value>
            </setting>
            <setting name="AgreedToEULAVersion" serializeAs="String">
                <value>20160201</value>
            </setting>

4.再次啟動(dòng)安裝程序
默認(rèn)安裝,跳過(guò)了注冊(cè)界面,由于我們將使用git客戶(hù)端,因此選擇我不想使用Mercurial即可。

配置SourceTree

配置token

之后就可以開(kāi)始項(xiàng)目開(kāi)發(fā)版本管理了,例如開(kāi)始拉取一個(gè)項(xiàng)目,注意一般開(kāi)始使用dev分支,確認(rèn)沒(méi)問(wèn)題的代碼才會(huì)合并到master上

clone

就可以把遠(yuǎn)程Git倉(cāng)庫(kù)下的項(xiàng)目克隆島本地就行管理了,其他具體用法可以參考網(wǎng)上的教程。
以上就是Git的安裝和使用的一些記錄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 簡(jiǎn)介 什么是git? git是一款開(kāi)源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快、最簡(jiǎn)...
    JonesCxy閱讀 1,071評(píng)論 0 3
  • Git 是目前最流行的分布式版本控制系統(tǒng)之一。 版本控制指的是,記錄每次版本變更的內(nèi)容和時(shí)間等細(xì)節(jié),保留各版本之間...
    神齊閱讀 1,467評(píng)論 0 7
  • 前言 大家好!在下游回來(lái)了!不啰嗦快進(jìn)正題!本篇文章是面對(duì)剛開(kāi)始接觸Git的新手,所講命令并不全,在文章結(jié)束會(huì)放入...
    老匡話Android閱讀 3,973評(píng)論 -2 18
  • 這篇博文是自己在學(xué)習(xí)git過(guò)程中的思考總結(jié)。本文僅僅代表個(gè)人的看法,如有不妥地方還請(qǐng)本文文末留言。 ?? 原文鏈接g...
    Ming_Hu閱讀 1,130評(píng)論 4 18
  • 小王子,麻麻愛(ài)你!這個(gè)周末麻麻就可以回家抱抱親親寶貝,愿寶寶依然任性無(wú)限,耍賴(lài)無(wú)邊! 小王子,當(dāng)初粑粑麻麻希望你像...
    李豫一閱讀 437評(píng)論 0 0