【Git】關於git新手使用操作流程(簡單版)


 

 

 

 

Git簡介

Linux 內核開源項目有着為數眾廣的參與者。絕大多數的 Linux 內核維護工作都花在了提交補丁和保存歸檔的繁瑣事務上(1991-2002年間)。到 2002 年,整個項目組開始啟用一個專有的分布式版本控制系BitKeeper來管理和維護代碼。到了 2005 年,開發 BitKeeper 的商業公司同 Linux 內核開源社區的合作關系結束,他們收回了 Linux 內核社區免費使用 BitKeeper 的權力。這就迫使 Linux 開源社區(特別是 Linux 的締造者 Linux Torvalds)基於使用BitKcheper 時的經驗教訓,開發出自己的版本系統。他們對新的系統制訂了若干目標:
•速度
•簡單的設計
•對非線性開發模式的強力支持(允許成千上萬個並行開發的分支)
•完全分布式
•有能力高效管理類似 Linux 內核一樣的超大規模項目(速度和數據量)
自誕生於 2005 年以來,Git 日臻成熟完善,在高度易用的同時,仍然保留着初期設定的目標。它的速度飛快,極其適合管理大項目,有着令人難以置信的非線性分支管理系統.-----------《Pro Git》

摘要

Git 有三種狀態,文件可能處於其中之一:已提交(committed)、已修改(modified)和已暫存(staged)。由此引入了 Git 項目的三個工作區域的概念:Git 倉庫、工作目錄以及暫存區域。本篇簡書將圍繞這三個工作區域進行講解。

Git主要的功能有兩點,一是版本控制(可以回退代碼),二是團隊開發。

Git的使用主要有三種形式,Cmd、Bash和GUI

允許很多的工程師同時對同一個項目在本地進行開發,當某個工程師覺得自己那部分差不多了,就直接提交到遠程服務器,那其他的工程師都可以把它clone下來,然后選擇性地和本地代碼進行merge操作。

其中還有一個分支(branch)的概念,大致意思就是說,首先從遠程的origin的master主分支下載最新的版本到origin/master分支上,然后比較本地master分支和origin/master分支的差別,最后進行合並。在本地進行開發后,及時地提交並推送至遠程倉庫的分支下,再由最后一名工程師做合並處理,這樣就避免了每一位工程師的隨意提交最后導致代碼紊亂。

安裝

官方版本可以在 Git 官方網站下載。打開 http://git-scm.com/download/win,下載會自動開始。Linux 和Mac自行百度或goole,比較簡單,在安裝方面就不多做講解。

Git學習

Git bash的使用

1、配置

安裝完過后,我們點擊打開Git Bash,輸入

git config --global user.name "yourname"
git config --global user.email  youremail@example.com
進行一個配置,這個配置是很有必要的,因為在以后的每次提交都會使用這些信息,並且會寫入你的每一次提交中。其中global表示這些信息成為了一個全局的,之后無論在該系統中做任何事情,Git都會使用這些信息。就如同你的身份證,做任何事都標示這你這個人在做。配置完過后我們同樣可以查看:

為了讓當前新建的倉庫能夠被看到   讓隱藏的文件夾能夠出現在電腦這邊,輸入control folders,

 

 

 

 

 2、初始化倉庫

 

 

 

git含有初始化的Git倉庫中的所有必須文件,不要輕易去更改。

3、將文件添加到本地倉庫中

 

按照流程來:
1.我們新建一個.txt文件,輸入i love git;
2.通過git add命令保存到緩存區中(m.txt得到跟蹤);
3.通過git commit命令提交到git本地倉庫。

可能會出現錯誤:

git warning: LF will be replaced by CRLF in XXXX.The file will have its original line endings in ..

警告意思:LF和CRLF都是換行符,意思就是說git要把你的LF換行符全部換成CRLF這種換行符
產生原因:
首先問題出在不同操作系統所使用的換行符是不一樣的
Uinx/Linux采用換行符LF表示下一行(LF:LineFeed,中文意思是換行);

Windows采用回車+換行CRLF表示下一行(CRLF:CarriageReturn LineFeed,中文意思是回車換行);

Mac OS采用回車CR表示下一行(CR:CarriageReturn,中文意思是回車)。

查看狀態
git config core.autocrlf

當你輸入這個命令的時候,會得到三種結果

true(很多同學會出現這種結果)
當我們操作系統是Windows的時候,會出現true
當為true時,git會將你暫存(git add)文件認為是文本文件,把換行符的CRLF轉換成LF,而簽出這些文件的時候又會變成CRLF格式,所以會警告你,這雖然只是一個小問題,但是會干擾跨平台多人合作開發,

舉個例子:你同事用的是Mac或,linux系統,你用的是Windows系統,
最后搞交時就會造成沖突

解決辦法,執行命令
git config core.autocrlf false

如果不是跨平台開發而且是winows系統,基本上忽略這個警告就可以啦
false
文本文件保持其原來的樣子

input
add時git會把CRLF轉換成為LF,簽出時依舊為LF

 

ok,就是這么簡單,把一個文件提交到了本地倉庫,當然在提交的過程中可以查看文件狀態,文件做了哪些更改,以及對文件撤銷,刪除等等操作將在后面依依講解。

Git與GitHub

既然有了本地倉庫,那么得有一個遠程倉庫,能夠一起協作,這樣才說得過去吧。但是有了GitHub這個與Git搭配的遠程倉庫,我們為何不使用呢。那么這里將講一個怎么與github聯系到一起。
首先你得需要一個github賬號,如果沒有的請自行申請一個github賬號。因為本地倉庫和遠程倉庫之間的傳輸是經過ssh加密的,所以得對ssh進行設置。

SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。

在管理Git項目上,有兩種克隆到本地的方法。
直接使用https url克隆到本地
使用SSH url克隆到本地
這兩種方式的主要區別在於:

使用https url對初學者來說會比較方便,復制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代碼都需要輸入賬號和密碼,這也是https方式的麻煩之處。
使用SSH url需要在只用之前先配置和添加好SSH key。每次fetch和push代碼都不需要輸入賬號和密碼,如果你想要每次都輸入賬號密碼才能進行fetch和push也可以另外進行設置。

1.檢查你電腦上是否有SSH Key  
~/.ssh 或者用~/.ssh ls

上邊這行命令的作用是看一哈你的電腦上有沒有.ssh文件夾。

如果電腦上有,就會顯示bash: /c/Users/…/.ssh: Is a directory
如果電腦上沒有,那就顯示bash: /c/Users/…/.ssh: No such file or directory

 

2.創建SSH key

如果你電腦上有了,你就可以直接跳過這一步

在Git Bash中

執行命令進行SSH KEY的配置:

ssh-keygen -t rsa -C "youremail@example.com"

就會出現

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/CXM/.ssh/id_rsa):

這是讓你輸入一個文件名,用於保存剛才生成的 SSH key 代碼。為了避免麻煩,不用輸入,直接回車,那么就會默認生成id_rsa和id_rsa.pub兩個秘鑰文件。
這時候已經創建好.ssh這個文件夾了,會提示:

Created directory '/c/Users/CXM/.ssh'.
Enter passphrase (empty for no passphrase):

就是讓你輸入密碼,如果你設置了密碼,那在你使用ssh傳輸文件的時候,你就要輸入這個密碼。為了避免麻煩,建議不用設置,直接回車。
Enter same passphrase again:
這就是讓你再輸入一次密碼,就跟我們注冊賬號時候設置密碼需要設置兩次一樣。上一步沒設置密碼,這里直接回車就可以了。到這里你的秘鑰就設置好了,你會收到這段代碼提示:
Your identification has been saved in /c/Users/…/.ssh/id_rsa
Your public key has been saved in /c/Users/…/.ssh/id_rsa.pub
還會向你展示你的秘鑰長啥樣

輸入 ~/.ssh  則SSH key 已經創建成功

 

 

3.添加SSH Key到GitHub

   

點擊右上角新建一個SSH Key,title隨便給他起個名字就好。然后是key,這時候你要打開你剛才在電腦上的SSH key。
還記得這一步嗎:

按照紅框框里的路徑,找到.ssh文件夾。用記事本打開id_rsa.pub文件,全選其中的內容粘貼到網頁的Key中。

 

 

4.測試一下該SSH key
在git Bash 中輸入以下代碼
$ ssh -T git@github.com
注意是git@github.com,不是你的郵箱。

然后會提示你:
The authenticity of host ‘github.com (13.229.188.59)’ can’t be established.
RSA key fingerprint is SHA256:nThbg6kXUp…
Are you sure you want to continue connecting (yes/no/[fingerprint])?
輸入yes,回車


接下來就會提示你輸入密碼,如果上邊設置ssh的時候,你沒設置密碼會提示你:
Warning: Permanently added ‘github.com,192.30.255.112’ (RSA) to the list of known hosts.
警告完了,如果你能看到如下提示,那你已經成功設置SSH密鑰。
Hi “用戶名”! You’ve successfully authenticated, but GitHub does not provide shell access.
如果你看到 access denied,者表示拒絕訪問,那么你就需要使用 https 去訪問。

 

 

 

新建遠程倉庫

成功建成

 

 

 

我們依次執行上面的命令行:

fatal: unable to access 'xx': Failed to connect to github.com port 443: Timed out

 

 

fatal: unable to access “xxx‘‘: OpenSSL SSL_read:Connection was reset, errno 10054

git config --global http.sslVerify "false"

 

刷新github頁面:

 

 

 

這樣,經過上面的步奏,我們將本地倉庫上的內容傳入到了遠程倉庫當中。

小結

這篇簡書中大略的講解了一哈git的一整套流程,但是其中很多細節和操作並沒有講解到,這些將會在下篇詳細講解。

 

 

 

 

 

 

 

 

 

 

解決無法訪問Github的問題

原理:繞過DNS解析,直接使用本地DNS記錄進行直接跳轉

1.通過命令提示符ping到GitHub的IP

打開命令符:win+R,輸入cmd,回車即可調出命令符

ping:在命令行中輸入ping ,記錄紅框中的IP

 

2.DNS查詢

在瀏覽器中打開DNS查詢網站:

選一個TTL值小的IP記錄下來

 

 

 

用創建桌面快捷方式的方法快速修改HOST

通常在修改HOST文件的時候,授權編輯器管理員權限是一件比較麻煩的事,而且每次修改的時候都要去授權管理員權限,實在是很麻煩,這里給大家介紹一種能夠快速便捷修改HOST文件的方法

那就是通過建立桌面快捷方式,並在雙擊打開時讓快捷方式以管理員身份運行

該方案的靈感也是來源於火絨安全軟件,里面有一個修改HOST文件的小插件,其實它就是在桌面建立快捷方式來達到目的的

1.新建桌面快捷方式
對象的位置,輸入:C:\WINDOWS\system32\notepad.exe C:\WINDOWS\system32\drivers\etc\hosts
快捷方式名稱自定義

2.授予快捷方式管理員權限
右鍵單擊快捷方式,查看屬性,選擇高級,勾選用管理員身份運行

確認后即創建成功

 

 

 

 

 

 

 

 

 

 

 

 



 

 

 

 

 

 

Git可視化教程——Git Gui的使用

1.在本地新建版本庫
首先,我們打開Git GUI是這樣的一個界面,選擇第一項,新建版本庫。

然后選擇你需要進行版本管理的項目路徑,我選擇了一個Logincatch登錄爬蟲的項目。

當你創建了版本庫的時候,你可以在該項目的路徑下看見多了一個.git文件夾(設置了隱藏文件不可見的話看不見)

 

在Git Gui中,如果Unstaged Changes(未緩存的改動)中包含文件,則先點擊Stage Changed,將未緩存的改動加入緩存,再點擊Commit;否則需要先點擊Rescan掃描項目中進行過改動的文件。注:提交描述必須要填寫,不然無法提交。

                  

 

 

 

 

 

 

 

 

  

 

 

 

提交成功后,我們可以在Repository->Visualize All Branches History中看到我們提交的歷史記錄(這是提交到本地而不是提交到遠程服務器)。至此,本地版本庫就創建成功了。


2.將項目提交到遠程
上一步已經使用Git在本地建立起了版本庫,然后我們需要將該項目提交到遠程服務器以便同事或其他合作者共同參與開發。一般的開源項目使用github作為遠程服務器。其實在本地簡歷版本庫后,只需要點擊push就可以直接上傳。但是我們還沒有將本地的Git與github建立聯系以及設置安全協議。

首先,我們需要在有一個自己的github帳戶,然后在github上新建一個repository,名字也叫做LoginDemo(可以和本地項目名不一樣)。

在Git Gui中,選擇Remote->add添加遠程服務器,遠程服務器信息有兩種填寫方式,填寫https地址或ssh地址,對應github項目的https和ssh地址,推薦使用ssh方式。

1.https地址
這種方式需要輸入你的github帳戶和密碼,意味着通過這種方式你只能夠操作自己的項目。


2.ssh地址
這種方式需要進行授權設置,在Git Gui的菜單欄,點擊Help->Show SSH key->Generate SSH KEY創建密鑰。

然后在github的Personal settings中添加它,title隨意,可以用Home,company等作為標識來區別。

添加遠程服務器信息。


接下來,我們便可以直接在Git Gui點擊push提交至遠程客戶端,刷新一下github,便可以看到項目已經在repository中了。


3.從遠程下載更新
設想多人參與項目開發,每個人都只push到遠程,完全不顧其他成員的進度,這樣的開發模式無疑是有問題的。我們最好的做法是,每次push到遠程的時候,先從遠程把目前進度fetch下來,在和自己目前項目進度merge后,再將它push到遠程。打開Git Gui,在菜單欄中選擇Remote->Fetch from->LoginTest,便可以從遠程服務器更新到本地,但是尚未與自己當前項目合並。


4.合並解決沖突
從遠程fetch后,選擇Git Gui的Merge->Local Merge進行合並,選擇Tracking Branch。

如果本地有一個方法名叫findUser,而遠程服務器中該方法的名字改變了,例如變成了findPassword,則合並遇到沖突,可以右鍵空白部分選擇保留本地版本或遠程版本進行合並(圖中綠色的代碼表示沖突部分)。


5.克隆github上的項目到本地
在Git Gui的主界面選擇克隆已有版本庫。

Source Location即github中項目的地址,和第二部分(將項目提交到遠程)中一樣,可以選擇https地址或ssh地址,Target Directory是在本地存放該項目的路徑。點擊Clone,成功從github將項目克隆到本地。

 

 

 


免責聲明!

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



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