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

隨筆


Git介紹

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

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

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

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

Git安裝配置

本地下載安裝

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

遠(yuǎn)程倉庫配置ssh密鑰:
  1. 打開本地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次回車,在C:\Users\1805xxxx.ssh 目錄下最后得到了兩個文件:id_rsa和id_rsa.pub,其中id_rsa.pub就是需要配置到遠(yuǎn)程倉庫的公鑰,打開復(fù)制ssh-rsa這段代碼,再進(jìn)入遠(yuǎn)程Git倉庫進(jìn)行配置。

  1. 遠(yuǎn)程Git倉庫配置

創(chuàng)建遠(yuǎn)程Git倉庫

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

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

本地IDEA使用Git

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

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

clone

拿到git路徑,打開IDEA,選擇Checkout form Version Control,檢出倉庫到本地:

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

.gitignore

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

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

add

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


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

commit

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

這個時候,只在自己本地倉庫存在該文件,遠(yuǎn)程Git倉庫并不存在。

fetch

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

該命令會將遠(yuǎn)程倉庫的代碼同步下來,但是并不會合并。

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

pull

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

merge

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

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

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

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

push

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

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

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

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

branch

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

我這里拉取了一個test分支

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

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

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

SourceTree進(jìn)行Git管理

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

1.下載sourcetree

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

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

  1. 初次啟動sourcetree

會在個人目錄生成 C:\Users\1805xxxx\AppData\Local\Atlassian,注意你的個人目錄

如果看不到是因?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.再次啟動安裝程序
默認(rèn)安裝,跳過了注冊界面,由于我們將使用git客戶端,因此選擇我不想使用Mercurial即可。

配置SourceTree

配置token

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

clone

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容