天天看點

【Step by step】win10下使用git(修改中)

git已經流行了有段時間了,但是由于git一直是linux世界的優秀産物,很多windows平台上的小夥伴難以窺探其風采。盡管我們可以工cygwin來使用git,但是僅僅配置cygwin就需要很長時間,并非普通使用者可以實作。幸運的是,git官方給出了一個windows平台的整合安裝包,現在我們也可以在windows平台上使用git了。

下面,我将以自己的機器環境為例,逐漸向大家介紹如何在windows平台上安裝使用git。

您在閱讀完本文後,應該可以:

1、在windows安裝git,并進行簡單的配置。(win10 64bit + git 2.10.1)

2、使用git在aliyun Kelude上建立一個代碼庫。(需要您事先注冊阿裡雲賬戶并開通阿裡雲code服務)

3、将本地庫連接配接到aliyun Kelude遠端庫。

4、增删改查版本庫中的資源。

<a href="http://s5.51cto.com/wyfs02/M00/89/53/wKiom1gPjA2yUDPRAAFnfj8slk8870.png" target="_blank"></a>

安裝過程比較簡單,全部采用預設設定就ok。

<a href="http://s2.51cto.com/wyfs02/M00/89/51/wKioL1gPjN7xO1cMAAA_6wZmtEY536.png-wh_500x0-wm_3-wmp_4-s_4283275322.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M00/89/51/wKioL1gPjN7S4mGEAAAwTm_VFlc445.png-wh_500x0-wm_3-wmp_4-s_3633310926.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/89/53/wKiom1gPjN-wFWsCAAA5Eerrzx4576.png-wh_500x0-wm_3-wmp_4-s_1479895486.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/89/51/wKioL1gPjN_x0RceAAAxV6c7WmE510.png-wh_500x0-wm_3-wmp_4-s_1546413929.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/89/53/wKiom1gPjN-itON9AABLdNchZWc951.png-wh_500x0-wm_3-wmp_4-s_3753867574.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/89/51/wKioL1gPjN-R9iqqAABMsLryFvw076.png-wh_500x0-wm_3-wmp_4-s_2837778506.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/89/53/wKiom1gPjN-zhXseAABLdJGMvzk160.png-wh_500x0-wm_3-wmp_4-s_923309434.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/89/51/wKioL1gPjN_CKvkVAAA7JSOoebU156.png-wh_500x0-wm_3-wmp_4-s_1679074838.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M02/89/53/wKiom1gPjODw5fkTAAAiAUHH3LM066.png-wh_500x0-wm_3-wmp_4-s_338561298.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M00/89/53/wKiom1gPjODC7na8AAAq6cp0ovc132.png-wh_500x0-wm_3-wmp_4-s_107719483.png" target="_blank"></a>

至此,安裝結束。你可以在windows開始菜單中找到Git應用程式組,打開後有三個程式,如下圖:

<a href="http://s1.51cto.com/wyfs02/M01/89/53/wKiom1gPjWyAe-t1AAAPCnACang634.png-wh_500x0-wm_3-wmp_4-s_2678448254.png" target="_blank"></a>

本文主要使用Git Bash(也就是指令行方式)實作我們的目标。

下面的大部分操作都要通過Git Bash這個指令行終端來完成,我們需要先打開這個用戶端。

<a href="http://s1.51cto.com/wyfs02/M01/89/53/wKiom1gPkEnBAnHHAAAaudCyQaU237.png" target="_blank"></a>

在使用git前,需要在git用戶端上設定一些基本資訊,比如你的名稱,你的email位址等。使用如下指令進行設定:

<code>git config --global user.name </code><code>"BlueBerry"</code>

這條指令的意思是給git設定一個全局使用者名(顯示名),這樣,以後當你在這台裝置上使用git時,簽名會預設使用“BlueBerry”,不用每次都重新設定。另外,Email資訊也是非常必要的。作為teamwork的一份子,請保持這種良好的習慣“行不更名,做不改姓”。設定Email位址請用如下指令:

<code>git config --global user.email </code><code>"[email protected]"</code>

當你設定好全局資訊後,你可能需要看一下你設定的資訊,請使用如下指令:

<code>git config --list</code>

結果:

<a href="http://s3.51cto.com/wyfs02/M02/89/53/wKiom1gPk6WRYiYMAAA5vETkt28284.png" target="_blank"></a>

登入Aliyun Kelude服務,在上面建立一個代碼庫testgit,如下圖:

<a href="http://s3.51cto.com/wyfs02/M02/89/51/wKioL1gPlS2wXW3aAACDF9t8Rz4397.png" target="_blank"></a>

我在Kelude上建立了一個名為testgit的代碼庫,代碼庫可見等級為私有。也就是說,這個代碼庫的管理者隻能是我本人,别人無權管理(隻能使用)。

建立好代碼庫之後,Kelude會顯示出你剛剛建立的這個代碼庫的相關資訊,如下圖:

<a href="http://s1.51cto.com/wyfs02/M00/89/55/wKiom1gPmP3ynK5jAAA7Cph9C1Q284.png" target="_blank"></a>

注意看上圖中“建立新版本庫”、“已存在的檔案夾或Git倉庫”這兩個部分。其實這兩個部分已經簡要介紹了我們下文中需要講解的内容。如果您是進階使用者,到此,您應該可以把git用起來了。如果您對于如何使用git還不是特别清晰,我建議您跟着本文繼續往下看。

您可能注意到了,Kelude會提示新建立的代碼庫需要SSH的秘鑰(SSH Key),如圖:

<a href="http://s1.51cto.com/wyfs02/M02/89/55/wKiom1gPnD6jTXmCAABC0svDEkw463.png" target="_blank"></a>

這裡要多介紹一下,使用者可以通過使用者名、密碼的方式通路git代碼庫,也可以通過SSH的方式來通路,官方推薦使用SSH的方式來通路。而且,通過SSH的方式來通路會更便捷一些。下面我們就來看看如何配置git的SSH通路。

讓我先來講解一下Git的SSH原理(我蒙的,不一定準确,歡迎指正)。

看下圖:(畫的醜,見諒)

<a href="http://s1.51cto.com/wyfs02/M00/89/53/wKioL1gPog-DH6C4AABwIyotQNY588.png" target="_blank"></a>

圖中,伺服器端有一個代碼庫“blueberry/testgit”,有兩個client端要通路它,分别是用戶端A和用戶端B。那麼,怎樣通過SSH來通路呢?是這樣的,用戶端A在本地使用SSH工具建立一個密鑰對(公鑰、私鑰,也就是一把鑰匙和一把鎖),公鑰就是圖中的那把深綠色的鎖A,私鑰就是用戶端A手裡拿着的鑰匙A。用戶端A的使用者将公鑰發給testgit代碼庫的管理者,管理者将用戶端A的公鑰添加到blueberry賬戶的SSH密鑰庫中(就是告訴Kelude伺服器現在有一扇門通往testgit代碼庫,門上有把鎖,隻允許能開鎖的用戶端進到門裡面來)。這樣一來,用戶端A手裡有開啟鎖A的鑰匙(私鑰),自然就能通路testgit代碼庫了。

同理,用戶端B如果想通路testgit,也需要使用SSH工具建立一個密鑰對(就是鑰匙B和鎖B),然後将鎖B(公鑰)發給testgit代碼庫管理者,管理者将用戶端B的公鑰添加到blueberry賬戶的SSH密鑰庫中(就是告訴Kelude伺服器testgit代碼庫上還有一道門,這道門也有一把鎖,隻允許能開鎖的用戶端進到門裡面來)。那麼,用戶端B肯定擁有能打開鎖B的私鑰B,也就能通路testgit代碼庫了。

有意思的是,Kelude SSH權限管理并非加載在某一個代碼庫上,而是加載在建立testgit代碼庫的賬号上。這樣一來,如果有blueberry賬戶通路權限,就可以通路所有在此賬戶下的代碼庫。這一點我還沒有搞的很清楚,目前隻是能用,等我搞搞清楚之後再來訂正。

好了,接下來讓我看一下如何使用Git Bash生成密鑰對。

<code>ssh</code><code>-keygen -t rsa -C </code><code>"[email protected]"</code>

執行該語句後,工具會提示你給即将要生成的密鑰對設定一個密碼,可以不設定。如果不設定,在使用SSH秘鑰的時候系統不會要求你輸入任何密碼。這裡我們輸入兩次回車,讓密碼保持為空。除非你認為你的電腦會丢,而且丢失之後有人會破解你的系統密碼,然後使用你的裝置破壞掉我們項目代碼庫,否則都不需要加密碼。個人認為上述意外發生的幾率非常非常低,幾乎沒有)

<code>Generating public</code><code>/private</code> <code>rsa key pair.</code>

<code>Enter </code><code>file</code> <code>in</code> <code>which</code> <code>to save the key (</code><code>/c/Users/blueberry/</code><code>.</code><code>ssh</code><code>/id_rsa</code><code>):</code>

<code>Enter passphrase (empty </code><code>for</code> <code>no passphrase):</code>

<code>Enter same passphrase again:</code>

<code>Your identification has been saved </code><code>in</code> <code>/c/Users/blueberry/</code><code>.</code><code>ssh</code><code>/id_rsa</code><code>.</code>

<code>Your public key has been saved </code><code>in</code> <code>/c/Users/blueberry/</code><code>.</code><code>ssh</code><code>/id_rsa</code><code>.pub.</code>

<code>The key fingerprint is:</code>

<code>SHA256:1lk5OEIDe+9j</code><code>/Mmpxhz33jeeWxkF2VwI00x</code><code>+</code><code>/tHf2eg</code> <code>[email protected]</code>

<code>The key's randomart image is:</code>

<code>+---[RSA 2048]----+</code>

<code>|      ..o   o=o=o|</code>

<code>|       o . . +=.o|</code>

<code>|      . o o + . o|</code>

<code>|       . + * . oo|</code>

<code>|        S + S  oo|</code>

<code>|       . o. .  .X|</code>

<code>|         o=o ..o*|</code>

<code>|         .++ +.o+|</code>

<code>|         ...=.E+=|</code>

<code>+----[SHA256]-----+</code>

這是生成密鑰對之後的回報資訊,你可以在你的使用者目錄下找到.ssh檔案夾,裡面有兩個檔案:id_rsa和id_rsa.pub。.pub那個檔案就是那把鎖,id_rsa就是那把鑰匙。現在我們隻需要将id_rsa.pub發給代碼庫管理者就可以了。

在上一步中,git用戶端已經建立了一個密鑰對,而且也已近把公鑰發到了代碼庫管理者手裡,現在代碼庫管理者隻需要将pub公鑰中的資訊添加到代碼庫賬号的SSH秘鑰庫中即可。參考下圖:

<a href="http://s2.51cto.com/wyfs02/M00/89/55/wKiom1gPrIOCTUYsAAAnLn3Z2Rk601.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M01/89/55/wKiom1gPrIOjddXNAAApEQudzCE758.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M01/89/53/wKioL1gPrIPCPx0DAAAH3RIlz24101.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M02/89/55/wKiom1gPrIOBA6-gAAB1d_oBS0o130.png" target="_blank"></a>

其中,“标題”這個名字看起來有點怪異,它的作用是給你導入的這個公鑰指定一個唯一的辨別名,一般用“使用者姓名@裝置名”這種方式來命名。總之,就是要保證其唯一。

使用以下指令來測試SSH通路:

<code>ssh</code> <code>[email protected]</code>

之後,你能看到螢幕上顯示确認連接配接資訊,輸入yes後回車,将看到如下資訊:

<code>RSA key fingerprint is SHA256:ZrA2Zqyyyyyw4zytCyyyyyyMaS2LDH74I7sMPtQIG0.</code>

<code>Are you sure you want to </code><code>continue</code> <code>connecting (</code><code>yes</code><code>/no</code><code>)? </code><code>yes</code>

<code>Warning: Permanently added </code><code>'code.aliyun.com,120.55.150.20'</code> <code>(RSA) to the list of known hosts.</code>

<code>  </code><code>****    Welcome to aliyun Code     ****</code>

<code>  </code><code>Hi blueberry, you have successfully connected over SSH.</code>

<code>  </code><code>To clone a hosted Git repository, use:</code>

<code>  </code><code>git clone git@localhost</code><code>/REPOSITORY_NAME</code><code>.git</code>

<code>Connection to code.aliyun.com closed.</code>

至此,我們的Kelude遠端代碼庫就建立好了。

其實版本管理這個東西,就是本地一份資料,伺服器上一份資料。每個成員在他們的本地對受管資源進行編輯修改,之後送出給自己本地的版本庫。然後,在條件允許的情況下将本地的變更push到遠端庫中,以便其他成員可以使用你對資料進行的變更。

原文參考:

Okay,廢話不多說。

4.1.1  在本地建立項目檔案夾

4.1.2  将項目檔案夾初始化成本地Git版本庫

4.2  将本地庫連結到Kelude遠端庫上

下面我們來看看如何從Kelude将我們剛剛建立的testgit repositorycopy到本地來。

先建立一個檔案夾,對應Kelude上的testgit項目空間:

<code>mkdir</code> <code>testgit</code>

然後進入這個檔案夾:

<code>cd</code> <code>testgit</code>

初始化這個testgit檔案夾:

<code>git init</code>

顯示結果:

<code>Initialized empty Git repository </code><code>in</code> <code>i</code><code>/workspace/Examples/testgit/</code><code>.git/</code>

接着,我們要将伺服器端的原始庫添加到我們本地的git項目檔案夾,也就是testgit上:

<code>git remote add origin [email protected]:blueberry</code><code>/testgit</code><code>.git</code>

有關git remote和add指令的使用方法,可以上網自己查找。網上有很多說明詳細的文檔可供參考。origin是遠端伺服器端的原始庫的别名,也就是伺服器端原始庫testgit庫的别名(系統預設的,約定的)。

我在這個項目庫檔案夾中建立了一個New Text Document.txt檔案。

将目前目錄下的所有檔案都加入到“待送出”清單中:

<code>git add .</code>

送出改變的檔案:

<code>git commit -m </code><code>"comments here"</code>

送出指令執行成功後:

<code>[master (root-commit) a334cd8] the first </code><code>file</code>

<code> </code><code>1 </code><code>file</code> <code>changed, 0 insertions(+), 0 deletions(-)</code>

<code> </code><code>create mode 100644 New Text Document.txt</code>

最後是将代碼推到伺服器端:

<code>$ git push -u origin master</code>

<code>Counting objects: 3, </code><code>done</code><code>.</code>

<code>Writing objects: 100% (3</code><code>/3</code><code>), 222 bytes | 0 bytes</code><code>/s</code><code>, </code><code>done</code><code>.</code>

<code>Total 3 (delta 0), reused 0 (delta 0)</code>

<code>remote: Updating references: 100% (1</code><code>/1</code><code>)</code>

<code>To code.aliyun.com:blueberry</code><code>/testgit</code><code>.git</code>

<code> </code><code>* [new branch]      master -&gt; master</code>

<code>Branch master </code><code>set</code> <code>up to track remote branch master from origin.</code>

本文轉自 rickqin 51CTO部落格,原文連結:http://blog.51cto.com/rickqin/1865681