參考資料:
安裝Git
$ sudo apt-get install git
配置Git
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
$ git config --global user.email "codingadai@126.com"
$ git config --global user.name "CodingAdai"
因為Git是分布式版本控制系統(tǒng),所以夺衍,每個機器都必須自報家門:你的名字和Email地址谴垫。你也許會擔(dān)心灶芝,如果有人故意冒充別人怎么辦交播?這個不必擔(dān)心,首先我們相信大家都是善良無知的群眾关划,其次括袒,真的有冒充的也是有辦法可查的。注意git config命令的--global參數(shù)援岩,用了這個參數(shù)歼狼,表示你這臺機器上所有的Git倉庫都會使用這個配置,當(dāng)然也可以對某個倉庫指定不同的用戶名和Email地址享怀。 ——廖雪峰《Git教程》
創(chuàng)建本地倉庫
創(chuàng)建一個用于Git倉庫的文件夾羽峰。
$ mkdir git
$ cd git
$ pwd
/home/coding/git
使用git init
命令把該文件夾初始化成為一個Git本地倉庫。
$ git init
Initialized empty Git repository in /home/coding/git/.git/
關(guān)聯(lián)遠程倉庫
接著在本地倉庫下關(guān)聯(lián)一個遠程倉庫。
$ git remote add origin git@192.168.1.145:htlar.git
如果關(guān)聯(lián)沒有問題梅屉,則控制臺沒有任何提示值纱。
這時,使用 ls
命令履植,是不會看到任何目錄和文件的(不管遠程倉庫是否有內(nèi)容)计雌。
接下來,使用 git pull <remote> <branch>
命令把遠程倉庫的內(nèi)容同步到本地倉庫玫霎。
$ git pull origin master
git@192.168.1.145's password:
From 192.168.1.145:htlar
* branch master -> FETCH_HEAD
克隆遠程倉庫
假設(shè)我們沒有遠程倉庫和本地倉庫凿滤,那么最好的方式應(yīng)該是先創(chuàng)建遠程倉庫,再從遠程庫克隆庶近。
首先我們可以在github.com翁脆,coding.net,oschina.net或者自己搭建的Git服務(wù)器,創(chuàng)建一個遠程倉庫鼻种。
這里我的遠程倉庫創(chuàng)建在自己搭建的服務(wù)器中反番。
$ git clone git@192.168.1.145:htlar.git
Cloning into 'htlar'...
git@192.168.1.145's password:
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 8 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (8/8), done.
Checking connectivity... done.
之后,會在當(dāng)前目錄多了一個名為htlar
的子目錄
本地分支
創(chuàng)建分支以及分支的管理請查閱Pro Git(中文版)
以下摘自 廖雪峰《Git教程》
創(chuàng)建分支
$ git checkout -b dev
Switched to a new branch 'dev'
git checkout命令加上-b參數(shù)表示創(chuàng)建并切換叉钥,相當(dāng)于以下兩條命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
切換分支
git checkout <branch>
$ git checkout master
Switched to branch 'master'
查看分支
$ git branch
* android
master
刪除分支
$ git branch -d dev
Deleted branch dev (was 04d09e5).
遠程分支
創(chuàng)建遠程分支
遠程分支就是本地分支push到遠程分支上的時候產(chǎn)生的罢缸。比如master就是一個最典型的遠程分支(默認)。
$ git push origin master
$ git push orgin serverfix
這里其實走了一點捷徑投队。Git 自動把 serverfix 分支名擴展為 refs/heads/serverfix:refs/heads/serverfix枫疆,意為“取出我在本地的 serverfix 分支,推送到遠程倉庫的 serverfix 分支中去”敷鸦。我們將在第九章進一步介紹 refs/heads/ 部分的細節(jié)息楔,不過一般使用的時候都可以省略它。也可以運行 git push origin serverfix:serverfix 來實現(xiàn)相同的效果扒披,它的意思是“上傳我本地的 serverfix 分支到遠程倉庫中去值依,仍舊稱它為 serverfix 分支”。通過此語法碟案,你可以把本地分支推送到某個命名不同的遠程分支:若想把遠程分支叫作 awesomebranch愿险,可以用 git push origin serverfix:awesomebranch 來推送數(shù)據(jù)。 ——《Git Pro 中文版》
注意: 如果本地倉庫中沒有名為serverfix
的分支价说,則會出現(xiàn)錯誤辆亏,正確的寫法:
$ git push orgin master:serverfix
如果遠程倉庫沒有名為serverfix
分支,則遠程倉庫會自動創(chuàng)建熔任。
查看遠程分支
$ git branch -a
* master
remotes/origin/daixiaodong
remotes/origin/dev
remotes/origin/master
跟蹤遠程分支
$ git checkout -b sf origin/serverfix
Branch sf set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "sf"
刪除遠程分支
如果不再需要某個遠程分支了褒链,比如搞定了某個特性并把它合并進了遠程的 master 分支(或任何其他存放穩(wěn)定代碼的分支)唁情,可以用這個非常無厘頭的語法來刪除它:git push [遠程名] :[分支名]疑苔。如果想在服務(wù)器上刪除 serverfix 分支,運行下面的命令:
$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
- [deleted] serverfix
咚甸鸟!服務(wù)器上的分支沒了惦费。你最好特別留心這一頁兵迅,因為你一定會用到那個命令,而且你很可能會忘掉它的語法薪贫。有種方便記憶這條命令的方法:記住我們不久前見過的 git push [遠程名] [本地分支]:[遠程分支] 語法恍箭,如果省略 [本地分支],那就等于是在說“在這里提取空白然后把它變成[遠程分支]”瞧省。 ——《Git Pro 中文版》
其他
什么是origin
當(dāng)你從遠程倉庫克隆時扯夭,實際上Git自動把本地的master分支和遠程的master分支對應(yīng)起來了,并且鞍匾,遠程倉庫的默認名稱是origin交洗。(origin其實就是遠程倉庫的git地址的一個別名,這種說法不確定對不對)
要查看遠程庫的信息橡淑,用git remote:
$ git remote
origin
或者构拳,用git remote -v顯示更詳細的信息:
$ git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
上面顯示了可以抓取和推送的origin的地址。如果沒有推送權(quán)限梁棠,就看不到push的地址置森。 ——廖雪峰《Git教程》
GitHub
在GitHub新建一個空倉庫后,GitHub會提示我們
We recommend every repository include a README, LICENSE, and .gitignore.
…or create a new repository on the command line
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/CodingAdai/test.git
git push -u origin master
…or push an existing repository from the command line
git remote add origin https://github.com/CodingAdai/test.git
git push -u origin master
我們可以根據(jù)提示來進行下一步操作符糊。
我的情況是凫海,我已經(jīng)有一個本地倉庫,而且已經(jīng)有文件濒蒋。而且有遠程倉庫盐碱,也是不為空的,我可以執(zhí)行后一個提示沪伙,但是在我push的時候瓮顽,報錯了,提示有沖突围橡,這時候我需要先把遠程倉庫pull下來暖混,與本地倉庫合并。但這里有遇到一個問題翁授,就是有沖突拣播,且Git不能解決。(待補充)