從本身的CSDN轉載個到這裏來,(CSDN的土豆服務器實在用得很不爽)html
我是經過這個來學習的。我的愚笨,琢磨了半天,終於搞通了,醉了醉了,之前一直使用svn,用git確實有點水土不服。本文以如何使用git爲主來展開,不涉及太多理論。android
git是分佈式的版本管理。什麼叫分佈式呢,這個得和SVN集中式對比一下。git
SVN就是把全部的版本信息都管理在一個服務器上,其餘端都是客戶端,checkout是獲取某個版本的代碼(一般是最新版本啦,也就是HEAD),update就是把本地的代碼更新一下,和服務器保持同步,commit就是把本地代碼提交給服務器。這些操做就如同訪問一個論壇,看帖,留言同樣。github
而GIT是每個機器上都有一個服務端,或許說服務端不太準確,應該說每個機器上都是一個版本庫,SVN除了服務器以外,其餘的機器上都只是一份代碼而已,並無版本信息,也就是說:若是你使用SVN,有一天服務器被人偷走了,你的機器上,只保留着昨天晚上update的最新代碼,你基本上沒法看到以往版本的信息了,你新買個服務器,建個SVN服務器,版本號又得從1開始。而GIT不同,即便有一天github.com這個網站倒閉了,也沒有關係,你昨晚拉取(pull)到本地的數據是完整的一個版本庫,你在本機就能夠查看到全部的版本信息,咱有空再建一個github2.com就是了。
以上是GIT與SVN一個比較大的區別。windows
明白了這一點就好辦了,接下來說如何使用git。bash
我喜歡使用命令行來操做。服務器
在Windows下,打開連接:http://msysgit.github.io/inde...下載客戶端,安裝後有一個git bash的客戶端,雙擊打開以下圖所示:
網絡
在Mac下,在此下載客戶端http://git-scm.com/download/mac,安裝後直接使用自帶的終端便可操做。eclipse
接下來要進行一個簡單的初始化配置,在終端中輸入分佈式
git config --global user.email [your_email_address] git config --global user.name [your_name]
這兩行的做用是對當前你使用的機器作一個標記,由於你的項目會被多個機器操做,而這有多是你在使用,也有多是別人在使用,那麼是誰提交的代碼,就須要有一個標記,好比,我有一個版本庫,使用了我本身的三臺電腦進行過提交,我使用git log命令來查看日誌記錄,會顯示哪一個用戶作了什麼操做。
作好以上的配置,就能夠繼續了。若是上面的配置不作,當你提交代碼的時候應該會提示你。
git是一個系統,github是一個使用git來管理版本庫的網站,這二者仍是有區別的。
若是你要單機使用的話,也就是你把本身的電腦當作版本庫,那麼你須要使用git init命令。該命令會把當前目錄變成一個版本庫,並在裏面生成一個.git文件夾。以下圖所示:
若是你要聯網使用,也就是說github.com上已經有一個版本庫了,咱們把它克隆(clone)到本地,你能夠理解爲checkout。這時,你須要使用git clone [url]
命令。該命令執行後,會在當前目錄建立一個以版本庫名命名的文件夾,這個文件夾裏面有.git文件夾和項目相關的文件。
(1)先在github.com上建立一個新(空)的版本庫。
(2)建立完成後,會給出一個版本庫的地址
(3)在命令行中進入你想要把項目放置的位置,好比你想要把項目放置到/my_projects/目錄中,你只須要到這個目錄便可,不須要新建test_git目錄。而後在命令行中輸入:
git clone https://github.com/KrossFord/test_git.git
(4)而後你就能夠在你的目錄中看到test_git目錄。
(5)該目錄中能夠看到一個.git文件夾。
這樣,你就把其餘機器(github.com)服務器上的版本庫給clone到本地了。
新建的版本庫空空如也什麼都沒有,咱們以一個已經存在的Android項目爲例,想其中添加代碼。
(1)新建一個Android項目(你本身的其餘什麼項目均可以啦),把代碼所有複製到test_git目錄中。以下圖所示:
(2)這個時候咱們可使用命令git status來查看版本庫的狀態,這裏注意一點!git status命令查看的當前版本庫的狀態,何爲當前呢?就是說,終端也就是命令行進入到一個有.git文件夾的文件夾裏,那麼git status命令就能夠檢查這個目錄(項目)的狀態,若是你在一個沒有.git文件夾的文件夾中git status是沒有用的,由於那個文件夾並非一個版本庫。
因而你能夠看到以下內容:
一下文件是未被添加到版本庫中,咱們須要使用git add命令來添加。
(3)忽略,對於一些項目有一些文件是不想被添加到版本庫上傳到服務器的,好比bin文件夾,這種狀況咱們能夠創建一個.gitignore文件來處理,這裏windows有點坑,它不能建立一個沒有文件名只有擴展名的文件。
不要緊,咱們隨便創建一個文件,而後用命令行來改,使用
mv [原文件名] .gitignore
就好了。
在.gitignore文件中輸入如下內容便可:
#忽略bin文件夾自己 /bin #忽略bin文件夾內部的內容 /bin/
關於忽略規則,請參考這裏。
這個時候再次輸入git status
來看看版本庫的狀態。
這個時候就沒有bin文件夾了。
(4)添加文件,並提交文件。
直接使用git add .
來進行添加,再次用git status
查看狀態。
而後使用git commit -m "message"
來提交,填寫提交信息是必須的。
這個時候,提交工做已經完成了,也就是說,版本庫中已經有了新加入的文件,可是若是此時你去刷新github.com的頁面,你會發現你的項目並無變化,依然是空的。這是由於git是分佈式的,你本機的版本庫是版本庫A,github.com上的版本庫是版本庫B,它們是不會自動關聯同步的。
因而你須要最後一步操做。
(5)將數據推送到遠程版本庫,你須要使用git push origin master
命令。
origin是遠程版本庫的名字,master是你當前分支的名字,具體詳情請參考這裏。
對了,這個命令後,你須要輸入github帳號與密碼。
提交完後,你刷新github.com的頁面,就能夠看到你的項目文件了。
和svn同樣,若是遠程的版本庫先被修改了,那麼我本地的版本庫想要保持最新,就須要對本地版本庫進行更新,這有點像svn中的update,但區別是svn中update只獲取最新的代碼,或者某一個特定版本的代碼,而git中的update是把整個版本庫與服務器端的同步。
具體操做,請執行git pull
以上,就是git的常規使用。
若是已經把一些文件提交到了版本庫,而且push到遠端,那麼就可使用git rm --cache file_or_dir_name來移除。
好比我將.idea文件夾提交上去了,可是我如今想移除它。
git rm -r --cache .idea/
而後我在.ignore文件中添加 .idea 這樣一項。
而後正常commit便可
若是你使用公司的網絡來訪問github的話,每每會收到一些限制,給git設置代理的方法:
git config --global http.proxy [host:port]
git init
將當前目錄建立爲版本庫,實際上就是在當前目錄裏面建立了一個.git文件夾。git clone [url]
將服務器端的版本庫clone一個到本地來,會在當前文件夾下建立一個項目文件夾,項目文件夾中有.git文件夾。
git config --global user.email xxx git config --global user.name xxx
以上兩個命令用來設置當前機器使用git的用戶信息。git log
能夠查看當前版本庫的日誌信息,在沒有.git文件夾的文件夾中無效。
使用.gitignore來忽略一些不想提交的文件。
使用git add [file]
來把文件歸入版本庫中,此時文件尚未提交到版本庫。git commit -m "this is a message"
來進行提交,git的提交是本地操做的,能夠說全部的操做都是本地的git status
來查看版本庫的狀態,隨時均可以使用,在沒有.git文件夾的文件夾中無效。git push origin master
將本地版本庫的信息推送到服務器端。git pull
將服務器端的版本庫信息同步到本地。
以上操做,基本能夠知足我的需求了。
更新2014-11-4 19:11:37
git commit -a命令,-a 的做用是將被修改的,或者被刪除的文件加入到待提交列表,commit的時候會被commit。可是新增的文件不會,也就是說,新增的文件仍是要用git add命令來操做。
git add . 能夠一次性add全部的新文件。
更新2015-3-20 11:50:43
git bash進入後目錄老是是不在我自定義的目錄上,更改git bash的初始目錄(起始目錄,開始目錄)的辦法是:
windows下右鍵git bash的圖標,在「快捷方式」選項卡中,有「起始位置」一欄,更改便可。
更新2015-3-23 15:07:20
本地建立的倉庫推送到github上的使用辦法。
要作畢業設計,所以個人項目都放在www目錄下,之前個人android項目都是放在我本身管理的一個mygit目錄下的,eclipse直接引用就好了,但網站不行(其實也能夠,服務器配置改下就好了),因此個人項目目錄就存放在www目錄下,我首先進入個人項目目錄www/flower(一個鮮花網站……),而後在git bash中輸入git init命令,便可將當前目錄變成一個倉庫,能夠看到該目錄中自動生成了一個隱藏文件夾.git。
接下來咱們就要推送到github上,在github上創建一個倉庫,而後會給你一個地址。
這個時候須要用git bash工具,給當前的倉庫加一個遠端地址。命令以下:
git remote add remote_name https://github.com/xxxxxx/xxx...remote_name能夠本身隨便起後面跟着的地址,就是github給你的倉庫地址。添加完畢以後,輸入git remote -v能夠查看到remote是否添加上了。接下來就是關鍵性的一步git push remote_name master這樣就能夠將本地的代碼推送到github了。直到學習了這一步,我才知道git push remote_name local_nameremote_name是github上的名字,local_name是本地的名字。以前的用法都是git push origin master,也就意味着,origin是github上的,master是本地的,這個參數的順序還真是符合英語的語法順序呢……