MacOS下Git安裝及使用


微信搜索"藝術行者",關注並回復關鍵詞"git"獲取Github安裝包
上傳的在線學習視頻(黑馬和傳智雙元,感謝)
微信搜索"藝術行者",關注並回復關鍵詞"gitstudy"獲取課程資料

Git介紹

GIt是分布式版本控制系統,它是沒有中央服務器的,每個人的電腦就是一個完整的版本庫,因此工作時不需要聯網。既然每個人的電腦都有一個完整的版本庫,那么多個人如何協作?比如說自己在電腦上修改了A文件,另一個人也修改了A文件,這個時候,只需要把各自的修改推送給對方,就可以互相看到對方的修改了。
下圖就是分布式版本控制工具管理方式:

Git工作流程


一般工作流程:
1.從遠程倉庫中克隆Git 資源作為本地倉庫。
2.從本地倉庫中checkout代碼然后進行代碼修改
3.在提交前先將代碼提交到暫存區。
4.提交修改。提交到本地倉庫。本地倉庫中保存修改的各個歷史版本。
5.在修改完成后,需要和團隊成員共享代碼時,可以將代碼push到遠程倉庫。

Git安裝

安裝Git for MacOS

可以到下載地址下載
也可以直接在命令行輸入“brew install git”即可下載

安裝GitHub Desktop

下載安裝包安裝即可

使用git管理文件版本

創建版本庫

版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。由於git是分布式版本管理工具,所以git在不需要聯網的情況下也具有完整的版本管理能力。

MacOS查看隱藏文件快捷鍵commend+shift+.

1. 使用命令行

進入創建好的目錄 /Git/repositories/rep1/
打開終端,輸入 "git init"
版本庫創建成功,會在此目錄下創建一個.git的隱藏目錄,如下所示:

2. 使用圖形化界面




版本庫創建成功,會在此目錄下創建一個.git的隱藏目錄,如下所示:

版本庫:“.git”目錄就是版本庫,將來文件都需要保存到版本庫中。
工作目錄:包含“.git”目錄的目錄,也就是.git目錄的上一級目錄就是工作目錄。只有工作目錄中的文件才能保存到版本庫中。

添加文件

添加文件過程

在/Git/repositories/repo1/目錄下創建一個mytest.txt文件

打開Github Desktop可以查看修改了什么,之后填寫日志更新信息,選擇是否提交

Git有暫存區的概念。什么是工作區(Working Directory)?工作區就是你在電腦里能看到的目錄,比如我的reporstory文件夾就是一個工作區,在這個目錄中的“.git”隱藏文件夾是版本庫。Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。如下圖所示:

(注:這里使用的是windows的小烏龜,在這里提及只是豐富一下Git的知識)前面講了我們把文件往Git版本庫里添加的時候,是分兩步執行的:第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。因為我們創建Git版本庫時,Git自動為我們創建了唯一一個master分支,所以,現在,git commit就是往master分支上提交更改。你可以簡單理解為,需要提交的文件修改通通放到暫存區,然后,一次性提交暫存區的所有修改。

修改文件

提交修改

被版本庫管理的文件不可避免的要發生修改,此時只需要直接對文件修改即可。修改完畢后需要將文件的修改提交到版本庫。
打開Github Desktop可以查看修改了什么,之后填寫日志更新信息,選擇是否提交。

查看修改歷史和差異比較

在開發過程中可能會經常查看代碼的修改歷史,或者叫做修改日志。來查看某個版本是誰修改的,什么時間修改的,修改了哪些內容。

還原修改

當文件修改后不想把修改的內容提交,還想還原到未修改之前的狀態。此時可以使用“還原”功能

刪除文件

直接進入目錄將文件刪除,之后commit

案例:將java工程提交到版本庫

第一步:將Java工程復制到工作目錄中
第二步:忽略文件或文件夾
在此工程中,並不是所有文件都需要保存到版本庫中的例如“bin”目錄及目錄下的文件就可以忽略。好在Git考慮到了大家的感受,這個問題解決起來也很簡單,在Git工作區的根目錄下創建一個特殊的.gitignore文件,然后把要忽略的文件名填進去,Git就會自動忽略這些文件。
(本應該是15個文件,忽略之后便為5個)

第三步:將Java工程commit

忽略文件語法規范

可以在后面添加正斜杠/ 來忽略文件夾,例如build/ 即忽略build文件夾。
可以使用! 來否定忽略,即比如在前面用了.apk ,然后使用!a.apk ,則這個a.apk不會被忽略。
用來匹配零個或多個字符,如*.[oa] 忽略所有以".o"或".a"結尾。
*~ 忽略所有以~ 結尾的文件(這種文件通常被許多編輯器標記為臨時文件)。
[] 用來匹配括號內的任一字符,如[abc] ,也可以在括號內加連接符,如[0-9] 匹配0至9的數。

遠程倉庫

添加遠程倉庫

我們在本地已經創建了一個Git倉庫,又想讓其他人來協作開發,此時就可以把本地倉庫同步到遠程倉庫,同時還增加了本地倉庫的一個備份。常用的遠程倉庫就是github:https://github.com/,接下來我們演示如何將本地代碼同步到github。

在github上創建倉庫

首先你得在github上創建一個賬號,這個就不演示了。然后在github上創建一個倉庫:


點擊“create repository”按鈕倉庫就創建成功了。Github支持兩種同步方式“https”和“ssh”。如果使用https很簡單基本不需要配置就可以使用,但是每次提交代碼和下載代碼時都需要輸入用戶名和密碼。如果使用ssh方式就需要客戶端先生成一個密鑰對,即一個公鑰一個私鑰。然后還需要把公鑰放到githib的服務器上。這兩種方式在實際開發中都用應用,所以我們都需要掌握。接下來我們先看ssh方式。

ssh協議

SSH 為Secure Shell(安全外殼協議)的縮寫,由IETF 的網絡小組(Network Working Group)所制定。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用SSH 協議可以有效防止遠程管理過程中的信息泄露問題。
使用ssh協議通信時,推薦使用基於密鑰的驗證方式。你必須為自己創建一對密匙,並把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在該服務器上你的主目錄下尋找你的公用密匙,然后把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)並把它發送給客戶端軟件。客戶端軟件收到“質詢”之后就可以用你的私人密匙解密再把它發送給服務器。

ssh密鑰生成

打開終端,輸入命令“ssh-keygen -t rsa”,之后指定保存位置

在GitHub網頁打開設置

在key部分將id_rsa.pub文件內容添加進去,然后點擊“Add SSH key”按鈕完成配置。

然后打開終端輸入"ssh-add 你存放鑰匙的目錄/.ssh/id_rsa"
然后再輸入命令進行驗證"ssh -T git@github.com"

同步到遠程倉庫

同步到遠程倉庫可以使用命令行或圖形化界面

使用命令行(這里使用SSH協議進行演示)

最開始可能遇到這個情況

解決方法:

  1. 輸入命令“ssh -v git@github.com”:測試ssh連接是否成功
  2. ssh-agent -s
  3. ssh-add ~/.ssh/id_rsa (注:此處就是你存放私鑰的地方)
  4. ssh -T git@github.com :測試是否成功
    所以建議先把私鑰添加進去

添加私鑰

  1. 輸入命令“ssh -v git@github.com”:測試ssh連接是否成功
  2. ssh-agent -s
  3. ssh-add ~/.ssh/id_rsa (注:此處就是你存放私鑰的地方)
  4. ssh -T git@github.com :測試是否成功
    在倉庫所在的目錄打開終端,首先確保你的本地倉庫已經初始化了,輸入命令"git init"

    將你的工程添加的暫存區,使用命令"git add HelloProjet README.md"
    使用命令“git commit -m "第幾次提交"”書寫提交日志

    輸入"git remote add origin git@github.com:你的用戶名/mytest.git

如果romote origin已經存在,使用命令"git remote rm origin"移除
git push -u origin master"

使用GitHub Desktop同步

選擇倉庫,選擇分支,同步到Github

從遠程倉庫克隆

克隆遠程倉庫也就是從遠程把倉庫復制一份到本地,克隆后會創建一個新的本地倉庫。選擇一個任意部署倉庫的目錄,然后克隆遠程倉庫。

命令行

$ git clone git@github.com:userName/repositoryName.git

圖形化界面

選擇倉庫

選擇add->clone repository

這時因為登陸了賬號,既可以直接選擇你的倉庫克隆下來,也可以通過URL克隆自己的倉庫或其他人的倉庫

通過URL克隆倉庫,需要知道要克隆的倉庫的URL,之后填入到輸入框即可,點擊clone

從遠程倉庫取代碼

命令行

Git中從遠程的分支獲取最新的版本到本地有這樣2個命令:

  1. git fetch:相當於是從遠程獲取最新版本到本地,不會自動merge(合並代碼)
  2. git pull:相當於是從遠程獲取最新版本並merge到本地上述命令其實相當於git fetch 和git merge
  3. 在實際使用中,git fetch更安全一些因為在merge前,我們可以查看更新情況,然后再決定是否合並
圖形化界面

push:推送到Github
pull:下拉Github代碼到本地倉庫
注意推送下拉欄,更新了代碼,點擊推送下拉,即可下來新的代碼,推送本地更新的代碼也可以

搭建私有Git服務器

服務器搭建

遠程倉庫實際上和本地倉庫沒啥不同,純粹為了7x24小時開機並交換大家的修改。GitHub就是一個免費托管開源代碼的遠程倉庫。但是對於某些視源代碼如生命的商業公司來說,既不想公開源代碼,又舍不得給GitHub交保護費,那就只能自己搭建一台Git服務器作為私有倉庫使用。 

搭建Git服務器需要准備一台運行Linux的機器,在此我們使用CentOS。以下為安裝步驟:

1、安裝git服務環境准備yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc

yum -y install autoconf

yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

2、下載git-2.5.0.tar.gz

​ 1)解壓縮 tar -zxvf git-2.5.0.tar.gz

​ 2)cd git-2.5.0

​ 3)autoconf

​ 4)./configure

​ 5)make

​ 6)make install

3、添加用戶adduser -r -c 'git version control' -d /home/git -m git此命令執行后會創建/home/git目錄作為git用戶的主目錄。

4、設置密碼passwd git

​ 輸入兩次密碼

5、切換到git用戶su git

6、創建git倉庫git --bare init /home/git/first

注意:如果不使用“--bare”參數,初始化倉庫后,提交master分支時報錯。這是由於git默認拒絕了push操作,需要.git/config添加如下代碼:

[receive]

​ denyCurrentBranch = ignore

推薦使用:git --bare init初始化倉庫。

連接服務器

私有git服務器搭建完成后就可以向連接github一樣連接使用了,但是我們的git服務器並沒有配置密鑰登錄,所以每次連接時需要輸入密碼。先到本地倉庫,之后使用命令連接:
$ git remote add origin ssh://git@xxx.xxx.xxx.xxx/home/git/first

xxx.xxx.xxx.xxx:是Git服務器的IP地址

上傳文件到服務器
命令行

$ git add 你的工程
$ git commit -m "日志信息"
$ git push -u origin master

克隆代碼到本地倉庫
命令行

創建一個文件夾:mkdir 名字
進入創建好的目錄:cd 名字
$ git init
$ git remote add origin ssh://git@xxx.xxx.xxx.xxx/home/git/first
$ git clone ssh://git@xxx.xxx.xxx.xxx/home/git/first

分支管理

創建合並分支

在我們每次的提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git里,這個分支叫主分支,即master分支。HEAD指針嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支。一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點:

每次提交,master分支都會向前移動一步,這樣,隨着你不斷提交,master分支的線也越來越長。當我們創建新的分支,例如dev時,Git新建了一個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支在dev上:

你看,Git創建一個分支很快,因為除了增加一個dev指針,改改HEAD的指向,工作區的文件都沒有任何變化!不過,從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次后,dev指針往前移動一步,而master指針不變:

假如我們在dev上的工作完成了,就可以把dev合並到master上。Git怎么合並呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合並:

所以Git合並分支也很快!就改改指針,工作區內容也不變!合並完分支后,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉后,我們就剩下了一條master分支:

使用Github Desktop實現分支管理

創建分支


之后

之后

之后

之后

合並分支

分支切換到dev后就可以對工作區的文件進行修改,然后提交到dev分支,原來的master分支不受影響。例如我們修改工程中的內容,然后提交到dev分支。

網頁

客戶端

此處存在起始和目的地,確定要合並到哪個分支

解決沖突

兩個分支中編輯的內容都是相互獨立互不干擾的,那么如果在兩個分支中都對同一個文件進行編輯,然后再合並,就有可能會出現沖突。

同步到Github

同步到Github,之后合並

此時報錯,出現版本沖突,下圖是修改內容的對比

手動處理后


之后push到Github,內容已經合並

在IntelliJ IDEA中使用git

在Idea中配置git

安裝好IntelliJ IDEA后,如果Git安裝在默認路徑下,那么idea會自動找到git的位置,如果更改了Git的安裝位置則需要手動配置下Git的路徑。
選擇File→Settings打開設置窗口,找到Version Control下的git選項:

選擇git的安裝目錄后可以點擊“Test”按鈕測試是否正確配置。

將工程添加至Git

在idea中創建一個工程,例如創建一個java工程,名稱為idea-git-test,如下圖所示:

創建本地倉庫,在菜單中選擇“vcs”→Import into Version Control→Create Git Repository.

選擇工程所在的上級目錄。本例中應該選擇idea-projects目錄,然后點擊“OK”按鈕,在工程的上級目錄創建本地倉庫,那么idea-projects目錄就是本地倉庫的工作目錄,此目錄中的工程就可以添加到本地倉庫中。也就是可以把idea-git-test工程添加到本地倉庫中。選擇之后在工具欄上就多出了git相關工具按鈕:

將工程添加至本地倉庫

之后commit

填寫日志信息,然后點擊“commit”按鈕,將工程添加至本地倉庫。

之后成功commit

推送到遠程,首先在github上創建一個倉庫然后將本地倉庫推送到遠程。之后定義遠程連接

之后填寫倉庫的URL

之后在工程上點擊右鍵,選擇git→Repository→push,或者在菜單中選擇vcs→git→push

之后填寫用戶名和密碼(如果是第一次配置推送需要輸入github的用戶名和密碼。)

推送成功

從遠程倉庫克隆

關閉工程后,在idea的歡迎頁上有“Get from Version Control”按鈕,點擊

之后填寫倉庫地址,和克隆下來存放的目錄

此處仍然推薦使用https形式的url。點擊Clone按鈕后將遠程倉庫克隆下來,之后導入到idea中。

之后,yes,重新打開工程

從服務端拉取代碼

如果需要從服務端同步代碼可以使用工具條中的“Update Project”按鈕


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM