【轉(zhuǎn)】把Git Repository建到U盤(pán)上去

  • Git很火。原因:

    • 1.它是大神Linus Torvalds的作品,天然地具備神二代的氣質(zhì)和品質(zhì);
    • 2.促進(jìn)了生產(chǎn)力的發(fā)展,Git的分布式版本控制理念,并非首創(chuàng),但非常適合開(kāi)源社區(qū)的協(xié)作方式(不存在master-slave的關(guān)系)
  • GitHub很好,號(hào)稱代碼界的facebook.

facebook,twitter,Microsoft,vmware,redhat,LinkedIn,Yahoo等公司都在GitHub上有建立數(shù)目不等的repositories。一些知名開(kāi)源項(xiàng)目,例如jQuery, Ruby on Rails,node.js都把src code寄存于GitHub上。GitHub太成功了,以至于使很多人產(chǎn)生誤解,以為git就是GitHub,使用git就必須連接GitHub。事實(shí)上,GitHub只是一個(gè)提供git repository hosting服務(wù)的網(wǎng)站。

  • 本文試圖講解如何在U盤(pán)上創(chuàng)建git repository(使U盤(pán)成為你的私有代碼云);以及如何在不同客戶端進(jìn)行同步作業(yè)。把git repository建在USB盤(pán)上能滿足多種應(yīng)用場(chǎng)景,特別是:

    • 1.注重私密性(GitHub上普通賬號(hào)不能創(chuàng)建私有repository)
    • 2.網(wǎng)速很慢,甚至斷網(wǎng)的時(shí)候需要同步
  • 但不適合需要強(qiáng)collaborate的項(xiàng)目。

<h3>前提條件</h3>

  • 先把git給裝好了…然后…我們有了兩臺(tái)git ready的電腦,和一個(gè)U盤(pán)。

<h3>開(kāi)始,1,初始化本地repository</h3>

  • 假設(shè)有一個(gè)存在的項(xiàng)目,需要由git接管版本控制,那么來(lái)到這個(gè)%projct_home%目錄(例如我的git_sandbox)下
  • <h5>step 1.1</h5>
    • 初始化
    • $ git init git_sandbox
  • <h5>step 1.2</h5>
    • 創(chuàng)建.gitignore文件(在%project_home%下,只對(duì)這個(gè)project有效),排除路徑下不需用被提交到repository中的文件(例如.svn,.class, Thumbs.db…)
  • <h5>step 1.3</h5>
    • 查看當(dāng)前文件狀態(tài),可以看到有一堆”untracked files”
    • $ git status
  • <h5>step 1.4</h5>
    • 把所有”untracked files”加入索引
    • $ git add .
  • <h5>step 1.5</h5>
    • 提交到repository
    • $ git commit -m "initialized."

<h3>2, 搞到U盤(pán)上去</h3>

  • <h5>step 2.1</h5>

    • 插上U盤(pán),查看U盤(pán)掛載路徑

    • $ mount

    • 我的路徑是”/Volumes/KINGSTON”

  • <h5>step 2.2</h5>

    • 在U盤(pán)上創(chuàng)建一個(gè)repository,
    • $ mkdir /Volumes/KINGSTON/workspace/usbGitSpace/gitusb_sandbox
    • $ cd /Volumes/KINGSTON/workspace/usbGitSpace/gitusb_sandbox
    • $ git init --bare
    • 使用–bare選項(xiàng)創(chuàng)建的repository被稱作bare repository,它不會(huì)包含working目錄(只包含.git目錄下的內(nèi)容),所以不適合在上面改code。bare repository主要的作用就是被push和pull。根據(jù)GitFaq的說(shuō)法:

A quick rule of thumb is to never push into a repository that has a work tree attached to it, until you know what you are doing.

  • <h5>step 2.3</h5>

    • 回到本地%project_home%,把初始化后的usb repository添加為remote repository
    • $ git remote add usb /Volumes/KINGSTON/workspace/usbGitSpace/gitusb_sandbox
    • 將本地的repository push到usb上
    • $ git push usb master
  • <h3>3, 同步到另一臺(tái)電腦</h3>

  • <h5>step 3.1</h5>

    • 在另一臺(tái)電腦上先創(chuàng)建一個(gè)本地repository
    • $ cd ~/my_gitspace/sandbox_win
    • $ git init
  • <h5>step 3.2</h5>

    • 把U盤(pán)插到這個(gè)電腦上,查看當(dāng)前掛載的路徑,添加U盤(pán)作為當(dāng)前repository的remote repository
    • $ git remote add usb /cygdrive/f/workspace/usbGitSpace/gitusb_sandbox
  • <h5>step 3.3</h5>

    • 把U盤(pán)上的內(nèi)容拉下來(lái)
    • $ git pull usb master
      好了,代碼同步到另一臺(tái)機(jī)器上了
  • <h3>4, 測(cè)試一下</h5>

  • <h5>step 4.1</h5>

    • 改動(dòng)一下文件,比如README.txt
  • <h5>step 4.2</h5>

    • $ git add README.txt
    • $ git commit -m "update from another laptop"
    • $ git push usb master
  • <h5>step 4.3</h5>

    • 插回原來(lái)的laptop
    • $ git pull usb master
  • <h5>step 4.4</h5>

    • 查看提交歷史
    • $ git log
  • 發(fā)現(xiàn)兩臺(tái)電腦上提交的記錄都在log里面

  • 好了,成功?,F(xiàn)在U盤(pán)成為了你的GitHub,你和你的代碼之間,再?zèng)]有阻隔。

  • 當(dāng)然,最后,需要定期給U盤(pán)做一個(gè)備份。技術(shù)發(fā)展到今天,數(shù)據(jù)安全靠天吃飯的日子已經(jīng)一去不復(fù)返了,沒(méi)有什么U盤(pán),硬盤(pán)是靠得住的。

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

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

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