git 快速入门笔记
## 第1章 給心急者
### 1.1 git是什么
git是一種版本控制器.
更直白說(shuō),團(tuán)隊(duì)開(kāi)發(fā)時(shí),管理代碼用的軟件.
面試時(shí),容易被問(wèn)到的一個(gè)東西.
### 1.2 安裝
git在Linux,Mac,Win下都可以安裝.
本文是以Win7系統(tǒng)為環(huán)境編寫(xiě)的.
Window環(huán)境:
到 https://git-scm.com/download 下載軟件, 雙擊,一路"Next",安裝完畢.
到開(kāi)始菜單找"git bash",如下圖

看到如下界面:

Linux環(huán)境安裝git:
```bash
# ubuntu,debian#
$ sudo apt-get install git
```
centos,redhat系統(tǒng)
```bash
# yum install git
```
### 1.3 報(bào)家門(mén)
人在江湖,豈能沒(méi)有名號(hào).
開(kāi)源教主Richard Matthew Stallman的江湖名號(hào)RMS.
在你用git之前,要先報(bào)家門(mén),否則代碼不能提交.
```bash
$ git config --global user.name #你是誰(shuí)
$ git config --global user.email #怎么聯(lián)系你
```

### 1.4 代碼管理
#### 1.4.1 創(chuàng)建版本庫(kù)
```bash
$ cd E:/
$ mkdir test
$ git init
```
**注意:**
+ 不要把倉(cāng)庫(kù)建在中文目錄下,可能出問(wèn)題.
+ `.git`是個(gè)隱藏目錄,不要亂碰.(你的每一次代碼修改它都幫你記錄著呢)
#### 1.4.2 添加文件
在E:/test目錄下,用你喜歡的編輯器(sublime/editplus/notepad,vim等),
開(kāi)發(fā)你的程序. 比如,`index.php`
```php
echo 'hello git';
```

編輯PHP文件后, `# git status` , 查看倉(cāng)庫(kù)狀態(tài)
實(shí)例如下:
```bash
$ git status
```
可見(jiàn),此時(shí)git發(fā)現(xiàn)有一個(gè)新文件,但并沒(méi)有把此文件納入管理.
我們需要兩步,讓git倉(cāng)庫(kù)管理index.php
+ `git add index.php`
把`index.php`提交到**暫存區(qū)**
+ `git add .`
把所有文件提交到**版本庫(kù)**
+ `git commit -m "新建index.php"`
把`index.php`提交到**版本庫(kù)**
實(shí)例如下:
```bash
$ git add index.php 添加單個(gè)文件
$ git add . 添加所有文件
$ git commit -m "新建index.php"
```

#### 1.4.3 修改文件
如果修改了文件,也不要忘記提交到版本庫(kù)
這個(gè)過(guò)程**和添加文件是一樣的**
一樣是需要兩步,讓git倉(cāng)庫(kù)記錄此次改變
+ `git add index.php`
把`index.php`提交到**暫存區(qū)**
+ `git commit -m "改了第2行"`
把`index.php`提交到**版本庫(kù)**
實(shí)例:
```
$ git add index.php
$ git commit -m "改了第2行"
```

#### 1.4.4 刪除文件
用rm命令刪除文件,并直接commit,提交到版本庫(kù)
例:先創(chuàng)建一個(gè)foo.php,供練習(xí)刪除用
實(shí)例如下:
```
$ touch foo.php # 創(chuàng)建foo.php
$ git add foo.php
$ git commit -m "練習(xí)刪除用"
$ ls
foo.php index.php
# 開(kāi)始刪除
$ git rm foo.php
rm 'foo.php'
$ git commit -m "刪除foo.php"
[master e4dc37c] 刪除foo.php
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 foo.php
$ ls
index.php
```

#### 1.5 版本回退
靈活切換到之前的版本記錄
例:先創(chuàng)建一個(gè)index.php,供練習(xí)版本回退用
使用到命令:
git log 查看提交歷史記錄
git reset --hard 前八位版本記錄字符
git reflog 查看歷史版本
實(shí)例如下:
```
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ mkdir test3
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd test3
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git init
Initialized empty Git repository in C:/a/test3/.git/
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ cd test3
bash: cd: test3: No such file or directory
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git init
Reinitialized existing Git repository in C:/a/test3/.git/
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ touch index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git add index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git commit -m "add index.php"
[master (root-commit) 1bd9fea] add index.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git status
On branch master
nothing to commit, working tree clean
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git log
commit 1bd9fea788acdf6fcac678e8a3901306426dec2f (HEAD -> master)
Author: caijun <987985143@qq.com>
Date: Mon Aug 13 10:01:12 2018 +0800
add index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ touch admin.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git add admin.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git commit -m "add admin.php"
[master f369884] add admin.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 admin.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git log
commit f3698843ae74b9f3bb7c44978b3d08009f0476ec (HEAD -> master)
Author: caijun <987985143@qq.com>
Date: Mon Aug 13 10:02:20 2018 +0800
add admin.php
commit 1bd9fea788acdf6fcac678e8a3901306426dec2f
Author: caijun <987985143@qq.com>
Date: Mon Aug 13 10:01:12 2018 +0800
add index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git reset --hard 1bd9fea7
HEAD is now at 1bd9fea add index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ ls
index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$
此刻關(guān)閉git 命令行,執(zhí)行g(shù)it log 只發(fā)現(xiàn)只有index.php 提交記錄,想回到admin.php 版本
命令:git reflog
實(shí)例如下:
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd test3
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ ls
index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git log
commit 1bd9fea788acdf6fcac678e8a3901306426dec2f (HEAD -> master)
Author: caijun <987985143@qq.com>
Date: Mon Aug 13 10:01:12 2018 +0800
add index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git reflog
1bd9fea (HEAD -> master) HEAD@{0}: reset: moving to 1bd9fea7
f369884 HEAD@{1}: commit: add admin.php
1bd9fea (HEAD -> master) HEAD@{2}: commit (initial): add index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git reset --hard f369884
HEAD is now at f369884 add admin.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ ls
admin.php index.php
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$
```

#### 1.6 git 忽略追蹤
在項(xiàng)目開(kāi)發(fā)過(guò)程中,有些文件不需要進(jìn)入到版本庫(kù)當(dāng)中,例如uploads
例:先創(chuàng)建一個(gè)uploads,供git忽略追蹤用
使用到命令:
vim .gitignore 創(chuàng)建忽略追蹤文件
實(shí)例如下:
```
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ mkdir uploads
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ ls
admin.php index.php uploads/
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git status
On branch master
nothing to commit, working tree clean
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ cd uploads/
cz@XDL-20170621QCO MINGW64 /c/a/test3/uploads (master)
$ touch 1.jpg
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
uploads/
nothing added to commit but untracked files present (use "git ad d" to track)
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ vim .gitignore
在追加記錄文件里 寫(xiě)忽略的追蹤文件 /uploads/
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git ad d" to track)
cz@XDL-20170621QCO MINGW64 /c/a/test3 (master)
$
```
## 第2章 分支管理
### 2.1 分支有什么用?
在開(kāi)發(fā)中,遇到這樣的情況怎么辦?
網(wǎng)站已有支付寶在線(xiàn)支付功能,要添加"微信支付".
修改了3個(gè)文件, `wechat.php`,`pay.php`
剛做到一半,突然有個(gè)緊急bug: 支付寶支付后不能修改訂單狀態(tài).
你需要立即馬上修改這個(gè)bug,需要修改的文件是,`ali.php`,`pay.php`.
問(wèn)題是:`pay.php`,已經(jīng)被你修改過(guò),而且尚未完成.
直接在此基礎(chǔ)上改,肯定有問(wèn)題.
把`pay.php`倒回去? 那我之前的工作白費(fèi)了.
此時(shí)你肯定會(huì)想: 在做"微信支付"時(shí),能否把倉(cāng)庫(kù)復(fù)制一份,在此副本上修改,不影響原倉(cāng)庫(kù)的內(nèi)容.修改完畢后,再把副本上的修改合并過(guò)去.
好的,這時(shí)你已經(jīng)有了分支的思想.
前面見(jiàn)過(guò)的`master`,即是代碼的主干分支,
事實(shí)上,在實(shí)際的開(kāi)發(fā)中,往往不會(huì)直接修改和提交到`master`分支上.
而是創(chuàng)建一個(gè)`dev`分支,在`dev`分支上,修改測(cè)試,沒(méi)問(wèn)題了,再把`dev`分支合并到`master`上.
如果有了分支,剛才的難題就好解決了,如下圖:

在做"微信支付"時(shí),我們創(chuàng)建一個(gè)`wechat`分支.
把`wechat`分支`commit`,此時(shí),`master`分支內(nèi)容不會(huì)變,因?yàn)榉种Р煌?
當(dāng)遇到緊急bug時(shí),創(chuàng)建一個(gè)`AliBug`分支.
修復(fù)bug后,把`AliBug`分支合并到`master`分支上.
再次從容切換到`wechat`分支上,接著開(kāi)發(fā)"微信支付"功能,開(kāi)發(fā)完畢后,
把`wechat`分支合并到`master`分支上.
### 2.2 查看分支
查看所有分支 `git branch`
例
```
git branch
* master # 說(shuō)明只有master分支,且處于master分支.
```
### 2.3 創(chuàng)建分支
創(chuàng)建dev分支 `git branch dev`
```
git branch dev # 創(chuàng)建dev分支
git branch #查看分支
dev
* master # dev分支創(chuàng)建成功,但仍處于master分支
```
### 2.4 切換分支
切換到dev分支 `git checkout dev`
再次查看
```
$ git branch
* dev
master # 已切換到dev分支上
```
### 2.5 合并分支
當(dāng)我們?cè)赿ev上開(kāi)發(fā)某功能,并測(cè)試通過(guò)后,可以把`dev`的內(nèi)容合并到`master`分支.
例:
當(dāng)前的readme.txt 內(nèi)容為"so so",在`dev`分支下,添加一行"from dev"
并提交
```
git add readme.txt
git commit -m "mod in dev"
```
再次切換到`master`,查看readme.txt的內(nèi)容,仍為'so so'
合并`dev`分支,`git merge dev`, 如下:
```
$ git merge dev
Updating c5364fe..412926b
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
```
再次查看readme.txt的內(nèi)容,已變?yōu)?#34;soso from dev";
### 2.6 刪除分支
```
git branch -d dev
Deleted branch dev (was 412926b).
```
### 2.7 快速創(chuàng)建和切換分支
`git checkout -b dev` # 創(chuàng)建dev分支并立即切換到dev分支
即起到`git branch dev`和`git checkout dev`的共同作用.
實(shí)例:
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ mkdir test4
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd test4
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ git init
Initialized empty Git repository in C:/a/test4/.git/
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ touch index.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ git add index.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ git commit -m "add index.php"
[master (root-commit) 14d10c9] add index.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 index.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ git branch dev
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ git branch
dev
* master
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ git checkout dev
Switched to branch 'dev'
cz@XDL-20170621QCO MINGW64 /c/a/test4 (dev)
$ ls
index.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (dev)
$ touch admin.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (dev)
$ git add admin.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (dev)
$ git commit -m "add admin.php"
[dev 26d93e0] add admin.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 admin.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (dev)
$ ls
admin.php index.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (dev)
$ git checkout master
Switched to branch 'master'
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ ls
index.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ git merge dev
Updating 14d10c9..26d93e0
Fast-forward
admin.php | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 admin.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ ls
admin.php index.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ git branch -d dev
Deleted branch dev (was 26d93e0).
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ git branch
* master
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
$ ls
admin.php index.php
cz@XDL-20170621QCO MINGW64 /c/a/test4 (master)
## 第3章 git的特點(diǎn)及誕生
### 3.1 分布式版本控制器
何為分布式? 與集中式相比有何特點(diǎn)?
以SVN為例:

中心的svn服務(wù)器中,存儲(chǔ)著代碼版本的變遷,及日志.
你想查看改動(dòng)日志,請(qǐng)聯(lián)網(wǎng)SVN服務(wù)器.
你想退回上個(gè)版本,請(qǐng)聯(lián)網(wǎng)SVN服務(wù)器.
你想創(chuàng)建新的分支,請(qǐng)聯(lián)網(wǎng)SVN服務(wù)器.
聯(lián)網(wǎng)不說(shuō),萬(wàn)一SVN服務(wù)器要是壞了???后果你說(shuō)呢.
而git是這樣的:

每個(gè)開(kāi)發(fā)者的電腦上,都有完整的版本,日志,及分支信息.
但開(kāi)發(fā)者不依賴(lài)于服務(wù)器,可以查看日志,回退版本,創(chuàng)建分支.
當(dāng)然,世界各地的開(kāi)發(fā)需要交換最新的版本信息,
因此,git往往也需要服務(wù)器.
但是,本質(zhì)的區(qū)別在于:
git服務(wù)器是供開(kāi)發(fā)者"交換"代碼,服務(wù)器數(shù)據(jù)丟了沒(méi)關(guān)系,分分鐘再建一臺(tái).
svn的服務(wù)器,不僅交換代碼,還控制著日志,版本,分支.服務(wù)器數(shù)據(jù)丟了就完了.
### 3.2 發(fā)展歷史
Linux之父Linus Torvalds在1991年創(chuàng)建了linux開(kāi)源項(xiàng)目,并把項(xiàng)目放在互聯(lián)網(wǎng)上,引來(lái)世界大量的黑客,大神為項(xiàng)目貢獻(xiàn)代碼.
問(wèn)題是,這么多的人同時(shí)貢獻(xiàn)代碼,如何管理代碼成了一件頭疼的事.
隨著linux內(nèi)核的管理工作越來(lái)越吃力,linus選擇了一款商業(yè)版本控制器-BitKeeper.
BitKeeper是BitMover公司旗下的產(chǎn)品.
公司的老大Larry也希望借機(jī)擴(kuò)大產(chǎn)品的影響力,因此授權(quán)Linux社區(qū)免費(fèi)使用BitKeeper.
這件事,在開(kāi)源圈引起了不小的騷動(dòng).
因?yàn)?BitKeeper只是free(免費(fèi)),而非free(自由).
開(kāi)源教主RMS為這事兒還說(shuō)過(guò)linus.
2002年2月,Linus 開(kāi)始用它來(lái)管理Linux內(nèi)核代碼主線(xiàn),Linus對(duì)BitKeeper的評(píng)價(jià)是the best tool for the job.
確實(shí),自從Linus使用BitKeeper之后,Linux的開(kāi)發(fā)步伐加快了兩倍.
可惜的是,就像黑幫電影中,老大蒸蒸日上的事業(yè),往往壞在一個(gè)不懂事的小弟手中.
這幫視free(自由)如信仰的牛人中,一個(gè)叫Andrew的,試圖破解BitKeeper的協(xié)議,且被BitMover公司警告幾次后仍不停手.
最終,出事了!
Linus在A(yíng)ndrew和Larry兩人間費(fèi)力調(diào)停,但沒(méi)有成功.
既如此,Linus說(shuō):"我的兄弟只是做錯(cuò)事不是做壞事. 我扛!"
于是,10天后,git誕生了!
## 第4章 代碼管理
### 4.1 工作區(qū)和版本庫(kù)
如果你想更清晰的學(xué)習(xí)git,你必須要了解3個(gè)重要區(qū)域.
+ 工作區(qū), 即開(kāi)發(fā)者的工作目錄.
+ 暫存區(qū), 修改已被記錄,但尚未錄入版本庫(kù)的區(qū)域.
+ 版本庫(kù), 存儲(chǔ)變化日志及版本信息.

## 第5章 遠(yuǎn)程倉(cāng)庫(kù)管理之github
### github 定義?
github 是一個(gè)面向開(kāi)源及私有軟件項(xiàng)目的托管平臺(tái),簡(jiǎn)單的理解為,他是一個(gè)網(wǎng)站,網(wǎng)址為:https://github.com
### github 能做什么?
允許用戶(hù)在平臺(tái)上創(chuàng)建版本庫(kù),進(jìn)行多人合作開(kāi)發(fā)
### 5.1 注冊(cè)github
準(zhǔn)備常用郵箱 163或者qq郵箱,執(zhí)行下一步下一步...

創(chuàng)建項(xiàng)目:

郵箱激活用戶(hù):

### 5.2 github 基本使用1
創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)項(xiàng)目,通過(guò)git克隆到本地,添加文件后,推送到遠(yuǎn)程倉(cāng)庫(kù)里
`命令1:git clone 遠(yuǎn)程倉(cāng)庫(kù)地址`
`命令2:git push origin master` 把本地倉(cāng)庫(kù)內(nèi)容推送到遠(yuǎn)程倉(cāng)庫(kù)里
例:
`git clone https://github.com/guocaijun/project3.git`
實(shí)例:
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ git clone https://github.com/guocaijun/project3.git
Cloning into 'project3'...
warning: You appear to have cloned an empty repository.
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd project3
cz@XDL-20170621QCO MINGW64 /c/a/project3 (master)
$ ls
cz@XDL-20170621QCO MINGW64 /c/a/project3 (master)
$ touch add.php
cz@XDL-20170621QCO MINGW64 /c/a/project3 (master)
$ ls
add.php
cz@XDL-20170621QCO MINGW64 /c/a/project3 (master)
$ git add add.php
cz@XDL-20170621QCO MINGW64 /c/a/project3 (master)
$ git commit -m "add add.php"
[master (root-commit) 9ee6f15] add add.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 add.php
cz@XDL-20170621QCO MINGW64 /c/a/project3 (master)
$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 204 bytes | 204.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/guocaijun/project3.git
* [new branch] master -> master
cz@XDL-20170621QCO MINGW64 /c/a/project3 (master)
$
### 5.3 github 基本使用2
本地創(chuàng)建項(xiàng)目,推送到遠(yuǎn)程倉(cāng)庫(kù)里
`命令1:git remote add origin https://github.com/guocaijun/project4.git` 添加
`命令2:git push -u origin master` 把本地倉(cāng)庫(kù)內(nèi)容推送到遠(yuǎn)程倉(cāng)庫(kù)里
實(shí)例:
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd project4
cz@XDL-20170621QCO MINGW64 /c/a/project4 (master)
$ git init
Initialized empty Git repository in C:/a/project4/.git/
cz@XDL-20170621QCO MINGW64 /c/a/project4 (master)
$ touch index.php
cz@XDL-20170621QCO MINGW64 /c/a/project4 (master)
$ git add index.php
cz@XDL-20170621QCO MINGW64 /c/a/project4 (master)
$ git commit -m "add index.php"
[master (root-commit) 0d3e908] add index.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 index.php
cz@XDL-20170621QCO MINGW64 /c/a/project4 (master)
$ git remote add origin https://github.com/guocaijun/project4.git
cz@XDL-20170621QCO MINGW64 /c/a/project4 (master)
$ git push -u origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 208 bytes | 208.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/guocaijun/project4.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
cz@XDL-20170621QCO MINGW64 /c/a/project4 (master)
$
### 5.4 github 多人開(kāi)發(fā)合作
多人開(kāi)發(fā)合作
申請(qǐng)另外一個(gè)開(kāi)發(fā)者
邀請(qǐng)另外一個(gè)開(kāi)發(fā)者 邀請(qǐng)鏈接必須在另外一個(gè)用戶(hù)登錄的前提下才有效果

`命令1:git push -u origin master` 把本地倉(cāng)庫(kù)內(nèi)容推送到遠(yuǎn)程倉(cāng)庫(kù)里
`命令2:git pull` 把github 遠(yuǎn)程倉(cāng)庫(kù)內(nèi)容拉回到本地
實(shí)例:
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ mkdir project5
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd project5
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$ git init
Initialized empty Git repository in C:/a/project5/.git/
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$ touch index.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$ git add index.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$ git commit -m "add index.php"
[master (root-commit) b4cb34b] add index.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 index.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$ git remote add origin https://github.com/guocaijun/project5.git
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$ git push -u origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 207 bytes | 207.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/guocaijun/project5.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$ cd ..
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ git clone https://github.com/guocaijun/project5.git guocaijun1
Cloning into 'guocaijun1'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd guocaijun1
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (master)
$ ls
index.php
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (master)
$ touch admin.php
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (master)
$ git add admin.php
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (master)
$ git commit -m "add admin.php"
[master d493474] add admin.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 admin.php
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (master)
$ git push -u origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 236 bytes | 236.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To https://github.com/guocaijun/project5.git
b4cb34b..d493474 master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (master)
$ cd ..
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd project5
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$ git pull
remote: Counting objects: 2, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 0), reused 2 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), done.
From https://github.com/guocaijun/project5
b4cb34b..d493474 master -> origin/master
Updating b4cb34b..d493474
Fast-forward
admin.php | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 admin.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$
### 5.5 github 分支推送
將其他分支代碼推送到遠(yuǎn)程github里

`命令1:git push -u origin develop` 把本地倉(cāng)庫(kù)分支develop內(nèi)容推送到遠(yuǎn)程倉(cāng)庫(kù)里
`命令2:git checkout -b develop` 創(chuàng)建develop和切換到develop里
實(shí)例:
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd project5
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$ ls
admin.php index.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (master)
$ git checkout -b develop
Switched to a new branch 'develop'
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$ ls
admin.php index.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$ touch user.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$ git add user.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$ git commit -m "add user.php"
[develop e1f0902] add user.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 user.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$ git push -u origin develop
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 244 bytes | 244.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To https://github.com/guocaijun/project5.git
* [new branch] develop -> develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$
### 5.6 github 分支拉取
將遠(yuǎn)程倉(cāng)庫(kù)分支代碼拉取到本地倉(cāng)庫(kù)里
`命令1:git pull origin develop` 將遠(yuǎn)程倉(cāng)庫(kù)分支代碼拉取到本地倉(cāng)庫(kù)里
實(shí)例:
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd guocaijun1
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (master)
$ ls
admin.php index.php
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (master)
$ git checkout -b develop
Switched to a new branch 'develop'
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (develop)
$ git pull origin develop
remote: Counting objects: 2, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 0), reused 2 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), done.
From https://github.com/guocaijun/project5
* branch develop -> FETCH_HEAD
* [new branch] develop -> origin/develop
Updating d493474..e1f0902
Fast-forward
user.php | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 user.php
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (develop)
$ ls
admin.php index.php user.php
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (develop)
$ touch center.php
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (develop)
$ git add center.php
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (develop)
$ git commit -m 'add center.php'
[develop 6cbd4a9] add center.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 center.php
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (develop)
$ git push -u origin develop
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 227 bytes | 227.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/guocaijun/project5.git
e1f0902..6cbd4a9 develop -> develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
cz@XDL-20170621QCO MINGW64 /c/a/guocaijun1 (develop)
$ cd ..
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd project5
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$ git checkout develop
Already on 'develop'
Your branch is up to date with 'origin/develop'.
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$ git pull origin develop
remote: Counting objects: 2, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 2 (delta 1), reused 2 (delta 1), pack-reused 0
Unpacking objects: 100% (2/2), done.
From https://github.com/guocaijun/project5
* branch develop -> FETCH_HEAD
e1f0902..6cbd4a9 develop -> origin/develop
Updating e1f0902..6cbd4a9
Fast-forward
center.php | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 center.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$ ls
admin.php center.php index.php user.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$
### 5.7 github 分支合并 pullrequest 請(qǐng)求
將本地倉(cāng)庫(kù)分支代碼推送到遠(yuǎn)程分支里 ,確定無(wú)誤后,進(jìn)行合并
`命令1:git push origin test` 將本地倉(cāng)庫(kù)分支代碼推送到遠(yuǎn)程倉(cāng)庫(kù)里
實(shí)例:
cz@XDL-20170621QCO MINGW64 /c/a (master)
$ cd project5
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$ git branch
* develop
master
cz@XDL-20170621QCO MINGW64 /c/a/project5 (develop)
$ git checkout -b test
Switched to a new branch 'test'
cz@XDL-20170621QCO MINGW64 /c/a/project5 (test)
$ touch shop.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (test)
$ git add shop.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (test)
$ git commit -m "add shop.php"
[test 02a821e] add shop.php
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 shop.php
cz@XDL-20170621QCO MINGW64 /c/a/project5 (test)
$ git push origin test
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 225 bytes | 225.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/guocaijun/project5.git
* [new branch] test -> test
cz@XDL-20170621QCO MINGW64 /c/a/project5 (test)
$

轉(zhuǎn)載于:https://www.cnblogs.com/vinzen/p/9596195.html
總結(jié)
以上是生活随笔為你收集整理的git 快速入门笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MyBatis学习与使用(一)
- 下一篇: oracle执行计划走偏处理步骤