精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Git歷險記(5):Git里的分支與合并

系統 Linux
本文是《Git歷險記》系列的第五篇,譯者劉輝通過翻譯《Git Community Book》為我們具體講解Git里的分支與合并以及如何處理沖突的方法。如果你對Git還不了解,可以參看《Git歷險記(1):初識版本控制系統Git》。以下是正文。

 51CTO編者按:本文是《Git歷險記》系列的第五篇,譯者劉輝通過翻譯《Git Community Book》為我們具體講解Git里的分支與合并以及如何處理沖突的方法。如果你對Git還不了解,可以參看《Git歷險記(1):初識版本控制系統Git》。以下是正文。

分支與合并

在Git里面我們可以創建不同的分支,來進行調試、發布、維護等不同工作,而互不干擾。下面我們還是來創建一個試驗倉庫,看一下Git分支運作的臺前幕后:

$rm -rf test_branch_proj
$mkdir test_branch_proj
$cd test_branch_proj
$git init
Initialized empty Git repository in /home/test/test_branch_proj/.git/

我們如以往一樣,創建一個“readme.txt”文件并把它提交到倉庫中:

$echo "hello, world" > readme.txt
$git add readme.txt
$git commit -m "project init"
[master (root-commit) 0797f4f] project init 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 readme.txt

我們來看一下工作目錄(working tree)的當前狀態:

$git status
# On branch master
nothing to commit (working directory clean)

大家如果注意的話,可以看到“# On branch master”這么一行,這表示我們現在正在主分支(master)上工作。當我們新建了一個本地倉庫,一般就是默認處在主分支(master)上。下面我們一起看一下Git是如何存儲一個分支的:

$cd .git
$cat HEAD
ref: refs/heads/master

“.git/HEAD”這個文件里保存的是我們當前在哪個分支上工作的信息。

在Git中,分支的命名信息保存在“.git/refs/heads”目錄下:

$ls refs/heads
master

我們可以看到目錄里面有一個名叫“master”文件,我們來看一下里面的內容:

$cat refs/heads/master
12c875f17c2ed8c37d31b40fb328138a9027f337

大家可以看到這是一個“SHA1哈希串值”,也就是一個對象名,我們再看看這是一個什么類型的對象:

$cat refs/heads/master | xargs git cat-file -t
commit

是的,這是一個提交(commit),“master”文件里面存有主分支(master)最新提交的“對象名”;我們根據這個“對象名”就可以可找到對應的樹對象(tree)和二進制對象(blob),簡而言之就是我能夠按“名”索引找到這個分支里所有的對象。

讀者朋友把我們文章里的示例在自己的機器上執行時會發現,“cat refs/heads/master”命令的執行結果和和文章中的不同。在本文里這個提交(commit)的名字是: “12c875f17c2ed8c37d31b40fb328138a9027f337”,前面我講Git是根據對象的內容生成“SHA1哈希串值”作為 名字,只要內容一樣,那么的對應的名字肯定是一樣的,為什么這里面會不一樣呢? Git確實根據內容來生成名字的,而且同名(SHA1哈希串值)肯定會有 相同內容,但是提交對象(commit)和其它對象有點不一樣,它里面會多一個時間戳(timestamp),所以在不同的時間生成的提交對象,即使內容 完全一樣其名字也不會相同。

下面命令主是查看主分支最新提交的內容:

$cat refs/heads/master | xargs git cat-file -p
tree 0bd1dc15d804534cf25c5cb53260fd03c84fd4b9
author liuhui998 1300697913 +0800
committer liuhui998 1300697913 +0800 project init

“1300697913 +0800”這就是時間戳(timestamp)。

現在查看此分支里面所包含的數據(blob)

$cat refs/heads/master | xargs git cat-file -p | head -n 1 | cut -b6-15 | xargs git cat-file -p
100644 blob 4b5fa63702dd96796042e92787f464e28f09f17d readme.txt

查看當前的readme.txt

$git cat-file -p 4b5fa63
hello, world
$cd ..

好的,前面是在主分支(master)里面玩,下面我們想要創建一個自己的測試分支來玩一下。git branch命令可以創建一個新的分支,也可以查看當前倉庫里有的分支。下面先創建一個叫“test”的分支: $git branch test

再來看一下當前項目倉庫中有幾個分支:

$git branch
* master test

我們現在簽出“test”分支到工作目錄里:

$git checkout test

現在再來看一下我們處在哪個分支上:

$git branch master
* test

好的,我們現在在“test”分支里面了,那么我們就修改一下“readme.txt”這個文件,再把它提交到本地的倉庫里面支:

$echo "In test branch" >> readme.txt
$git add readme.txt
$git commit -m "test branch modified"
[test 7f3c997] test branch modified 1 files changed, 1 insertions(+), 0 deletions(-)

當看當前版本所包含的blob:

$git cat-file -p HEAD | head -n 1 | cut -b6-15 | xargs git cat-file -p

我們現在再像前面一樣的看看Git如何存儲“test”這個分支的,先來看看“.git/HEAD”這個文件是否指向了新的分支:

$cd .git
$cat HEAD
ref: refs/heads/test

沒錯,“.git/HEAD”確實指向的“test”分支。再來看看“.git/refs/heads”目錄里的內容:

$ls refs/heads
master
test

我們可以看到目錄里面多了一個名叫“test”文件,我們來看一下里面的內容:

$cat refs/heads/test
7f3c9972577a221b0a30b58981a554aafe10a104

查看測試分支(test)最新提交的內容:

$cat refs/heads/test | xargs git cat-file -p
tree 7fa3bfbeae072063c32621ff08d51f512a3bac53
parent b765df9edd4db791530f14c2e107aa40907fed1b
author liuhui998 1300698655 +0800
committer liuhui998 1300698655 +0800 test branch modified

再來查看此分支里面所包含的數據(blob):

$cat refs/heads/test | xargs git cat-file -p | head -n 1 | cut -b6-15 | xargs git cat-file -p
100644 blob ebe01d6c3c2bbb74e043715310098d8da2baa4bf readme.txt

查看當前”readme.txt”文件里的內容:

$git cat-file -p ebe01d6
hello, world
In test branch
cd ..

我們再回到主分支里面:

$git checkout master
Switched to branch 'master'
$git checkout master
$cat readme.txt
hello, world

如我們想看看主分支(master)和測試分支(test)之間的差異,可以使用git diff命令來查看它們之間的diff:

$git diff test
diff --git a/readme.txt b/readme.txt
index ebe01d6..4b5fa63 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1 @@ hello, world
-In test branch

大家可以以到當前分支與測試分支(test)相比,少了一行內容:“-In test branch”。

如果執行完git diff命令后認為測試分支(test)的修改無誤,能合并時,可以用git merge命令把它合并到主分支(master)中:

$git merge test
Updating b765df9..7f3c997
Fast-forward readme.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)

“Updating b765df9..7f3c997”表示現在正在更新合并“b765df9”和“7f3c997”兩個提交(commit)之間的內容;“b765df9”代表著主分支(master),“7f3c997”代表測試分支(test)。

“Fast-forward”在這里可以理解為順利合并,沒有沖突。“readme.txt | 1 +”表示這個文件有一行被修改,“1 files changed, 1 insertions(+), 0 deletions(-)”,表示這一次合并只有一個文件被修改,一行新數據插入,0 行被刪除。

我們現在看一下合并后的“readme.txt”的內容:

$cat readme.txt
hello, world
In test branch

內容沒有錯,是“master”分支和“test”分支合并后的結果,再用“git status”看一下,當前工作目錄的狀態也是干凈的(clean)。

$git status
# On branch master
nothing to commit (working directory clean)

好的,現在測試分支(test)結束了它的使命,沒有存在的價值的,可以用“git branch -d”命令把這個分支刪掉:

$git branch -d test
Deleted branch test (was 61ce004).

如果你想要刪除的分支還沒有被合并到其它分支中去,那么就不能用“git branch -d”來刪除它,需要改用“git branch -D”來強制刪除。

#p#

如何處理沖突(conflict)

前面說了分支的一些事情,還簡單地合并了一個分支。但是平時多人協作的工作過程中,幾乎沒有不碰到沖突(conflict)的情況,下面的示例就是剖析一下沖突成因及背后的故事:

還是老規矩,新建一個空的Git倉庫作試驗:

$rm -rf test_merge_proj
$mkdir test_merge_proj
$cd test_merge_proj
$git init
Initialized empty Git repository in /home/test/test_merge_proj/.git/

在主分支里建一個“readme.txt”的文件,并且提交本地倉庫的主分支里(master):

$echo "hello, world" > readme.txt
$git add readme.txt
$git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached ..." to unstage)
#
# new file: readme.txt
#
git commit -m "project init"
[master (root-commit) d58353e] project init 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 readme.txt

當看當前版本所包含的blob:

$git cat-file -p HEAD | head -n 1 | cut -b6-15 | xargs git cat-file -p
100644 blob 4b5fa63702dd96796042e92787f464e28f09f17d readme.txt

雖然前面把“readme.txt”這個文件提交了,但是暫存區里還是會暫存一下,直到下次“git add”時把它沖掉:

$git ls-files --stage
100644 4b5fa63702dd96796042e92787f464e28f09f17d 0 readme.txt

然后再創建測試分支(test branch),并且切換到測試分支下工作:

$git branch test
$git checkout test
Switched to branch 'test'

再在測試分支里改寫“readme.txt”的內容,并且提交到本地倉庫中:

$echo "hello, mundo" > readme.txt
$git add readme.txt
$git commit -m "test branch modified"
[test 7459649] test branch modified 1 files changed, 1 insertions(+), 1 deletions(-)

現在看一下當前分支里的“readme.txt”的“SHA1哈希串值”確實不同了:

$git cat-file -p HEAD | head -n 1 | cut -b6-15 | xargs git cat-file -p
100644 blob 034a81de5dfb592a22039db1a9f3f50f66f474dd readme.txt

暫存區里的東東也不一樣了:

$git ls-files --stage
100644 034a81de5dfb592a22039db1a9f3f50f66f474dd 0 readme.txt

現在我們切換到主分支(master)下工作,再在“readme.txt”上作一些修改,并把它提交到本地的倉庫里面:

$git checkout master
Switched to branch 'master'
$git add readme.txt
echo "hola,world" > readme.txt
$git add readme.txt
$git commit -m "master branch modified"
[master 269ef45] master branch modified 1 files changed, 1 insertions(+), 1 deletions(-)

現在再來看一下當前分支里的“readme.txt”的“SHA1哈希串值”:

$git cat-file -p HEAD | head -n 1 | cut -b6-15 | xargs git cat-file -p
100644 blob aac629fb789684a5d9c662e6548fdc595608c002 readme.txt

暫存區里的內容也改變了:

$git ls-files --stage
100644 aac629fb789684a5d9c662e6548fdc595608c002 0 readme.txt

主分支(master) 和測試分支(test)里的內容已經各自改變了(diverged),我們現在用“git merge”命令來把兩個分支合一下看看:

$git merge test
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

合并命令的執行結果不是“Fast-foward”,而是“CONFLICT”。是的,兩個分支的內容有差異,致使它們不能自動合并(Auto-merging)。

還是先看一下工作目錄的狀態:

$git status
# On branch master
# Unmerged paths:
# (use "git add/rm ..." as appropriate to mark resolution)
#
# both modified: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

現在Git提示當前有一個文件“readme.txt”沒有被合并,原因是“both modified”。

再看一下暫存區里的內容:

$git ls-files --stage
100644 4b5fa63702dd96796042e92787f464e28f09f17d 1 readme.txt
100644 aac629fb789684a5d9c662e6548fdc595608c002 2 readme.txt
100644 034a81de5dfb592a22039db1a9f3f50f66f474dd 3 readme.txt

看一下里面的每個blob對象的內容:

$git cat-file -p 4b5fa6
hello, world
$git cat-file -p aac629
hola,world
$git cat-file -p 034a81
hello, mundo

我們不難發現,“aac629”是當前主分支的內容,“034a81”是測試分支里的內容,而“4b5fa6”是它們共同父對象(Parent)里的內容。因為在合并過程中出現了錯誤,所以Git把它們三個放到了暫存區了。

現在我們再來看一下工作目錄里的“readme.txt”文件的內容:

$cat readme.txt
<<<<<<< HEAD
hola,world
=======
hello, mundo
>>>>>>> test

“<<<<<<< HEAD“下面就是當前版本里的內容;而“=======”之下,“>>>>>>> test”之上則表示測試分支里與之對應的有沖突的容。修復沖突時我們要做的,一般就是把“ <<<<<<< HEAD”,“=======”和“ >>>>>>> test”這些東東先去掉,然后把代碼改成我們想要的內容。

假設我們用編輯器把“readme.txt“改成了下面的內容:

$cat readme.txt
hola, mundo

然再把改好的“readme.txt”用“git add”添加到暫存區中,最后再用“git commit”提交到本地倉庫中,這個沖突(conflict)就算解決了:

$git add readme.txt
$git commit -m "fix conflict"
[master ebe2f18] fix conflict

這里看起來比較怪異的地方是Git解決了沖突的辦法:怎么用“git add”添加到暫存區去,“git add”不是用來未暫存文件的吧,怎么又來解決沖突了。不過我想如果你仔細讀過上一篇文章的話就不難理解,因為Git是一個“snapshot”存儲系統,所有新增加的內容都是直接存儲的,而不是和老版本作一個比較后存儲新舊版本間的差異。

Git里面合并兩個版本之間的同一文件,如果兩者間內容相同則不作處理,兩者間內容不同但是可以合并則產生一個新的blob對象,兩者間內容不同但是合并時產生了沖突,那么我們解決了沖突后要把文件“git add”到暫存區中再“git commit”提交到本地倉庫即可,這就和前面一樣產生一個新的blob對象。

假設我們對合并的結果不滿意,可以用下面的命令來撤消前面的合并:

$git reset --hard HEAD^
HEAD is now at 050d890 master branch modified

從git reset(2)命令的輸出結果可以看到,主分支已經回到了合并前的狀態了。

我們再用下面的命令看一下“readme.txt”文件,確認一下文件改回來沒有:

$cat readme.txt
hola,world

小結

由于Git采用了“SHA1哈希串值內容尋值”、“快照存儲(snapshot)”等方法, Git中創建分支代價是很小的速度很快;也這是因為如此,它處理合并沖突的方法與眾不同。

在這里我想起了“C語言就是匯編(計算機硬件)的一個馬甲”這句話,其實Git也就是底層文件系統的一個馬甲,只不過它帶了版本控制功能,而且更加高效。Git里有些命令可能不是很好理解(如解決合并沖突用git add),但是對于系統層而言,它是最高效的,就像是C語言的數組下標從0開始一樣。

原文連接:http://www.infoq.com/cn/news/2011/03/git-adventures-branch-merge

【編輯推薦】

  1. Git歷險記(4):索引與提交的那些事
  2. Git歷險記(3):創建一個自己的本地倉庫
  3. Git歷險記(2):Git的安裝和配置


 

責任編輯:黃丹 來源: InfoQ
相關推薦

2011-01-26 10:05:36

Git安裝配置

2011-03-18 09:35:39

GitLinux版本控制

2011-01-26 09:09:06

版本控制系統GitLinux

2009-10-15 09:21:00

CCNA考試歷險記CCNA

2022-05-26 21:38:02

開源分布式Hadoop

2022-05-05 19:26:17

Druid分布式存儲

2011-02-28 14:37:43

GitLinux版本控制

2021-02-22 08:20:32

Activity動畫界面

2020-05-28 10:45:31

Git分支合并

2011-09-16 16:05:10

MySQL

2023-12-01 11:05:29

Git 分支

2024-10-14 08:35:29

2014-04-01 09:13:23

程序員招聘

2014-08-08 10:20:23

Git版本管理系統

2017-06-30 17:54:04

2023-10-09 08:39:33

Git Flow分支管理模型

2025-07-31 00:00:15

2022-10-26 09:22:19

git命令Linux

2022-11-07 08:01:18

Git分支管理

2020-07-09 08:00:25

Git分支模式
點贊
收藏

51CTO技術棧公眾號

精品国产乱码久久久久久天美| 日韩无一区二区| 青青草免费观看免费视频在线| 国产精品美女呻吟| 久久最新视频| 亚洲精品国产精品乱码在线观看| 欧美伊人久久久久久午夜久久久久| 欧美激情喷水| www男人天堂| 在线电影一区二区三区| 日韩大尺度黄色| 久久99精品久久久久久青青日本 | 天天插天天操天天干| 污片在线观看一区二区| 婷婷五月综合激情| 久久久伊人欧美| 榴莲视频成人app| 黄色一级片网址| 成人午夜av电影| 日本一区二区网站| 久久深夜福利免费观看| 日韩一区二区三区高清在线观看| 欧美日韩一区二区三区69堂| 久久99精品久久久久婷婷| 欧美风情第一页| 精品国产一区二区三区在线观看| 欧美激情五月| 亚洲一区中文字幕永久在线| 国产精品视频免费观看| 一区二区三区四区蜜桃| 国产精品一站二站| 尤物在线免费视频| 国产精品日韩av| 亚洲国产精品99久久久久久久久 | 久久亚洲国产| 在线观看毛片视频| 亚洲国产激情一区二区三区| 亚洲男子天堂网| 欧美特黄一级大片| 成年人在线免费看片| 精品福利一区二区三区 | 一区二区三区av电影| 高清一区二区三区av| 中文字幕永久在线视频| 精品国产午夜福利在线观看| 99re国产视频| 日韩va亚洲va欧洲va国产| 国产不卡免费视频| 久久久91麻豆精品国产一区| 免费中文字幕在线观看| 国产乱子伦精品视频| 久久久精品影院| 国产亚洲成aⅴ人片在线观看| 欧美大片免费观看网址| 国产污污视频在线观看| 欧美 日韩 国产在线| 精品国产免费久久| 亚洲中字黄色| 一区二区三区精| 开心色怡人综合网站| 国产精品久久久久久妇女6080 | 国产suv精品一区二区四区视频| 国产大屁股喷水视频在线观看| 欧美孕妇与黑人孕交| 成人性色生活片| 欧美日韩影视| 精品国产乱码一区二区三区四区| 久久丝袜美腿综合| 岛国成人毛片| www..com日韩| 在线免费观看日本欧美| 亚洲男人在线| 日韩片在线观看| 欧美精品激情blacked18| 日韩激情在线观看| 1pondo在线播放免费| 浓精h攵女乱爱av| 综合久久久久久| 九九热hot精品视频在线播放| 日本一级淫片免费放| 一区二区三区精品国产| 亚洲欧美精品伊人久久| 波多野结衣精品在线| 欧美日本三级| 狠狠人妻久久久久久综合麻豆| 中文 日韩 欧美| 91精品久久久久久久久久另类| 色播五月激情综合网| 欧美婷婷在线| 国产乱妇乱子在线播视频播放网站| 成人精品在线观看视频| 噜噜噜噜噜久久久久久91| 日韩精品一区在线| 久久99精品国产.久久久久久| 欧美黑人疯狂性受xxxxx野外| 久久久无码一区二区三区| 2021狠狠干| 色综合久久88色综合天天看泰| 一区av在线播放| 一区二区三区福利| 综合毛片免费视频| 一级全黄少妇性色生活片| 精品久久久99| 国产一级特黄a大片99| 国产丝袜精品第一页| www.欧美.com| 欧美色婷婷久久99精品红桃| 免费av在线| 特级西西444www大精品视频免费看| 亚洲五月天综合| 成人激情av| 综合激情国产一区| 无码av中文一区二区三区桃花岛| 蜜臂av日日欢夜夜爽一区| 欧美a视频在线| 日韩a在线观看| 欧美另类视频在线观看| 日韩一级免费片| 黄色99视频| 久久中文字幕国产| 欧美日韩一本到| 成人av网站在线| 欧美精品一卡| 国产色99精品9i| 牛牛影视精品影视| 波多野结衣视频网站| 亚洲麻豆一区二区三区| 天天操天天干天天玩| 国产日韩中文字幕在线| 日韩精品极品视频| 午夜a成v人精品| 在线亚洲精品| 女海盗2成人h版中文字幕| 国产又粗又长视频| 日本妇女毛茸茸| 亚洲欧洲日韩综合| 伊人久久av导航| 国产专区精品视频| 国产一区二区三区在线免费观看| 一本一道久久a久久精品综合蜜臀| 成人激情综合网站| 欧美一级视频| 久久精品色综合| 国产精品高颜值在线观看| 婷婷亚洲一区二区三区| 日韩不卡视频在线| 波多野结衣中文字幕在线播放| 97在线免费视频观看| www.成人av| 国内精品视频在线| 亚洲精品小视频| 欧美另类久久久品| 亚洲第一激情av| 国产女主播视频一区二区| 久久福利视频一区二区| 午夜片欧美伦| 校园春色另类视频| 欧美aa免费在线| 免费在线看黄色| 蜜桃久久一区二区三区| 日日骚av一区二区| 99热精品免费| 破处女黄色一级片| 国产精品20p| 久久久久无码国产精品一区李宗瑞 | 九九热线有精品视频99| 91麻豆精品| 日韩精品亚洲人成在线观看| 女人天堂在线| 亚洲奶汁xxxx哺乳期| 91精品国产乱码久久久久| 在线观看日韩中文字幕| 国产午夜精品一区二区理论影院 | 99国产精品久久久久久久| 999久久久国产精品| 大伊香蕉精品在线品播放| 91成人福利社区| 免费一级欧美在线观看视频| 超碰在线caoporen| 日本不卡不卡| 色香蕉在线视频| 国产乱视频在线观看| 欧美尤物美女在线| 日本不卡网站| 国产精品美女久久久久| 日本免费精品| jizz性欧美23| 伊人久久大香线蕉av不卡| 香蕉久久网站| 极品日韩av| 日产国产高清一区二区三区| 午夜亚洲精品| 日韩欧美电影| 一区二区三区在线| 亚洲性视频h| 日韩av高清在线观看| 日本色综合中文字幕| 六月丁香婷婷色狠狠久久| 国产在线看一区| 国产精品888| 97久久精品人人做人人爽50路| 久久久久久9999| 亚洲欧美精品午睡沙发| 欧美日韩中文在线| 欧美一区二区三区免费视频| 亚洲国产日韩欧美在线动漫| 国产一区二区三区视频| 九九九热精品免费视频观看网站| 久久久久免费视频| 国产精品视频白浆免费视频| 精品久久久久久一区二区里番| 亚洲一区二区在| 成人在线观看a| 稀缺呦国内精品呦| av成人免费网站| 亚洲图片中文字幕| 日本啊v在线| dy888亚洲精品一区二区三区| 欧美一区久久久| 亚洲日本va中文字幕| 91精品福利| 九九热在线视频观看这里只有精品| 91在线一区二区| 亚洲国产精品久久久男人的天堂| 欧美日韩国产中文字幕| 欧美卡1卡2卡| 中文字幕欧美视频在线| 91精品国产九九九久久久亚洲| 国产偷久久久精品专区| www精品久久| 国产免费一区二区三区最新6| 日本爱爱小视频| 中文字幕在线观看视频一区| 国产高清免费av在线| 91久久青草| 亚洲欧美综合| 成人精品免费看| 第一福利永久视频精品| 国产午夜精品久久久 | 国产欧美日韩小视频| 亚洲欧洲国产精品一区| 日韩精品成人在线观看| 午夜久久tv| 国产一区二区三区免费观看| 亚洲图片欧美综合| 亚洲美女精品久久| 国产美女扒开尿口久久久| 久久久成人精品一区二区三区| 三上悠亚av一区二区三区| 一本在线免费视频| 亚洲欧美色视频| 久久天堂影院| 亚洲国产高清一区| 中文字幕免费观看一区| 中日韩美女免费视频网站在线观看| 国产精品日韩一区二区免费视频| 中文字幕第10页| 国产成人精品一区二区无码呦| 日韩国产网站| 日韩中文字幕区一区有砖一区| 亚洲高清一区二区三区| 久久成人精品一区二区三区| 天堂√在线观看一区二区| 久久精品成人av| 台湾av在线二三区观看| 日本欧美韩国国产| 香蕉精品视频在线观看| 国产成人丝袜美腿| 在线观看视频91| 国产精品免费电影| 特级丰满少妇一级| 999视频在线| 樱桃视频成人在线观看| 9色精品在线| 精品国产31久久久久久| 色综合五月天导航| 国产精品三级一区二区| 麻豆视频免费在线播放| 天堂а√在线8种子蜜桃视频| 国产色99精品9i| 国产精品一区二区黑丝| 欧美一区二区黄| 96pao国产成视频永久免费| 中文字幕精品一区二区三区在线| 日日摸天天添天天添破| 日本精品另类| 美女在线观看视频一区二区| 欧美日韩一区二区三区高清| 欧美亚洲国产视频| 亚洲精品无码久久久久久| 日本中文字幕第一页| 日韩制服一区| 国产乱人伦偷精品视频免下载 | 欧美色图校园春色| 亚洲黄色在线免费观看| 精品一区二区三区中文字幕在线 | 久久精品一卡二卡| 亚洲免费成人在线| 五月激情久久久| 亚洲影院免费观看| 国产成人久久久| 肉色超薄丝袜脚交| 欧美孕妇孕交| 国产精品伦理久久久久久| 欧美性xxxx极品hd满灌| 91在线免费观看网站| 亚洲狠狠婷婷综合久久久久图片| www.亚洲.com| 国产日韩亚洲| 欧美xxxx在线观看| 91看片淫黄大片91| 精品国产青草久久久久96| 99re热精品视频| 自拍视频在线观看一区二区| 欧美怡红院视频一区二区三区| 激情在线观看视频| 国产在线观看精品一区| 香蕉久久久久久久av网站| 精品精品欲导航| 美女av免费观看| 亚洲无码精品在线观看| 国产亚洲欧美日韩在线观看一区二区 | 日韩毛片视频| 91精品国产91久久久久久最新毛片 | 欧美一级网站| 最近2019中文字幕在线高清| 五月婷婷激情久久| 老司机福利在线视频| 紧缚捆绑精品一区二区| 午夜精品久久久久久久99热 | 日本欧美大码aⅴ在线播放| 精品国产青草久久久久福利| www插插插无码免费视频网站| 国产剧情精品在线| 888久久久| 欧美精品一区二区久久婷婷| 欧美国产日韩激情| 国产免费a∨片在线观看不卡| 日韩成人精品在线| 久久激情视频久久| 伦理片一区二区| 亚洲承认视频| 亚洲欧洲制服丝袜| 久久久精品国产一区二区三区| 樱花视频在线免费观看| 欧美日韩精品免费观看视频完整| 精品偷拍一区二区三区在线看| 午夜一区二区视频| 日韩伦理在线| 亚洲精品高清视频在线观看| 亚洲午夜精品久久久久久浪潮| www香蕉视频| 美美哒免费高清在线观看视频一区二区| 久久99精品久久久久久青青91| 亚洲精品乱码久久| 51社区在线成人免费视频| 欧美三级电影精品| 乱妇乱女熟妇熟女网站| 免费在线观看av电影| 中文字幕一区二区日韩精品绯色| 韩国成人一区| 欧美日韩影视| 久久精品一区四区| 久久99精品久久久久久三级| 刘玥91精选国产在线观看| 国产一区二区三区视频在线播放| 国产精品福利观看| 亚洲国产精品无码久久久| 亚洲影音一区| 亲子乱一区二区三区电影| 日韩欧美a级片| 丝袜a∨在线一区二区三区不卡| 91国内揄拍国内精品对白| 久久国产精品二区| 99精品欧美| 7m第一福利500精品视频| 黄网在线观看视频| 蜜桃久久精品一区二区| 成人黄色片在线| 成人黄色免费视频| av成人老司机| 视频一区二区在线| 草莓福利社区在线| 亚洲主播在线观看| 国产精品无码一本二本三本色| 另类激情视频| 日韩精品自拍偷拍| 欧美激情aaa| 亚洲一级淫片| 欧洲亚洲免费在线| 国产乱码久久久久| 日韩精品高清不卡| 欧美专区国产专区| 国产日韩欧美一区二区东京热| 26uuu国产日韩综合| 久久久久日韩精品久久久男男| 国产精品第九页| 亚洲一区日本| 久久久免费电影| 欧美激情精品久久久久久免费|