青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 18,  comments - 21,  trackbacks - 0

如果正在使用svn,打算換到git,又暫時不想放棄已有的svn代碼庫,可以選擇git-svn。說一說我自己從svn到git的經(jīng)驗吧。

開始

安裝最新版本的git,從git 1.5.3以后支持git-svn,git和svn的配合就要借助這個功能。

安裝完畢后要做一些簡單的配置。最直接的做法就是創(chuàng)建修改~/.gitconfig。下面是我的.gitconfig

[user]
        name = Robin Lu
        email = ---@gmail.com
[color]
        diff = auto
        status = auto
        branch = auto
[alias]
  st = status
  rb = svn rebase
  ci = commit -a
  co = checkout

[user]部分標示出使用者的身份,你提交的代碼會自動引用這一身份信息。[color]設(shè)置命令輸出的顏色。[alias]部分可以簡化一些常用命令,比如在這里將git status簡化為git st。

初始化代碼庫

首先用git-svn來初始化本地的代碼庫(repository)

git svn clone -s svn-repository-url

svn-repository-url部分使用svn代碼庫的url。如果要從trunk目錄或者某個branch目錄里check out,要把-s換成-T、-b等選項。具體參看man git-svn。這個命令時間比較長,因為需要同步所有的提交歷史,還好只此一次,以后不會這么慢了。做完這一步,在本地就有了一個完整的代碼庫,包括所有commit的歷史和log,已經(jīng)可以開始用它來進行開發(fā)工作了。

不過,在開始開發(fā)之前,最好先做一次垃圾搜集:

git gc

它對代碼庫的信息進行垃圾搜集和壓縮,最明顯的作用就是減小磁盤占用空間。第一次做效果尤其明顯。

你可以檢查一下代碼庫的狀態(tài):

git status

現(xiàn)在應(yīng)該在一個叫”master”的分支(branch)上。

用這個命令來顯示出所有的分支(branch):

git branch -a

master前有一個*號,代表你現(xiàn)在所處的分支,另外還有一個分支叫trunk,它是一個遠程分支(remote branch),對應(yīng)的是遠程svn代碼庫。master實際上是trunk的一個本地分支。

接下來,需要配置忽略文件,讓git忽略一些目錄中不希望加入代碼庫的文件,類似svn propset svn:ignore。全局有效的忽略文件列表可以添加在./.git/info/exclude文件中。比如我需要忽略所有vi產(chǎn)生的swp文件:

.*.swp

對于和目錄有關(guān)的忽略文件設(shè)置可以在該目錄下創(chuàng)建.gitignore,然后加入需要忽略的內(nèi)容,比如我希望忽略根目錄下的log,tmp等目錄,可以直接在根目錄下的.gitignore中加入:

log
tmp
開發(fā)流程

可以開始工作了。用git后開始養(yǎng)成一個新習慣,就是工作前先創(chuàng)建新分支:

git checkout -b new_branch

-b后是分支名,創(chuàng)建的同時,你要轉(zhuǎn)到了新分支上。盡量保持master上沒有未提交到svn的commit,這樣隨時都可以很容易的產(chǎn)生一個干凈的分支。

接下來你可以寫代碼,修改文件或者添加文件。如果想看看修改了什么,可以用:

git diff

如果對某個修改不滿意,希望恢復原狀,可以使用:

git checkout path/filename

相當于svn revert

git引入一個索引(index)的概念,提交前,需要把要提交的文件加入到git索引(index)中:

git add path/filename1
git add path/filename2
...

然后提交

git commit -m "提交感言"

每次commit都是提交索引(index)中的內(nèi)容。

如果要一次提交所有修改過的文件,可以一次性添加,然后提交

git add .
git commit -m "提交感言"

如果只是修改,并沒有添加新文件,可以直接用下面的命令:

git commit -a -m "提交感言"

將被修改文件加入索引并提交,一次完成全過程。

在修改加入所索引后,如果想看看索引內(nèi)容中都所了什么修改,可以用:

git diff --cached

適合在提交前做最后的code review。

查看最近一次提交的內(nèi)容,可以使用

git show

修改中隨時查看當前代碼庫的狀態(tài):

git status

相當于svn status

刪除和移動某個文件:

git rm file
git mv file newfile
提交到svn

在完成了幾輪工作后,要將本地內(nèi)容提交到遠程svn中,可以先讓當前分支和遠程svn同步:

git svn rebase

然后將所有已經(jīng)合并到master分支的本地修改提交到svn

git svn dcommit

如果在git svn rebase時發(fā)生代碼沖突,需要先手動解決沖突,然后用git add將修改加入索引,然后繼續(xù)rebase

git svn rebase --continue
缺點

最后說說這種工作方式的缺點。這個話題稍微復雜一點。

svn和git的工作原理畢竟不同,git對代碼提交的非線性特性在svn中難以再現(xiàn),如果使用了git-merge或者git-pull,再提交到svn,相關(guān)分支上的提交歷史有可能無法體現(xiàn)在svn上。從svn的使用者的角度,無法辨別這是一個提交還是一次合并,所以在和svn協(xié)作過程中,盡量不要使用merge,或者說,盡量讓代碼庫保持線性。

我的經(jīng)驗是,如果不在乎svn中是否反映出提交歷史,使用merge也無妨。比如完成工作后,可以將工作分支合并到主分支中去:

git checkout master
git merge new_branch

先用checkout命令切換回master分支,然后將新分支中內(nèi)容合并進來。然后在master分支上做git svn rebase和dcommit。從svn來看,這就是一個commit,new_branch上的提交歷史在svn上體現(xiàn)不出來。(有例外情況,以后再討論)。

還有一個解決辦法是盡量保持git代碼庫的線性特征。比如在new_branch分支中,先和master做rebase,再合并到master分支中:

git rebase master
git checkout master
git merge new_branch

然后在master上做dcommit,就可以在svn代碼庫中看到完整的提交歷史。

如果看到這已經(jīng)有點頭暈了,可以干脆不管它,就按照前面的做法,直接在你的工作分支里dcommit,等對非線性開發(fā)有一定了解再來看各種情況。

好了,基本上知道這些就可以干活了。

posted on 2009-12-09 11:39 大日如來 閱讀(782) 評論(0)  編輯 收藏 引用 所屬分類: 游戲-編程

<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品主播| 久久午夜电影网| 一区二区三区国产在线观看| 欧美电影免费观看高清| 亚洲精品网址在线观看| 亚洲国产高清在线| 欧美国产日本高清在线| 夜夜精品视频一区二区| 99精品免费网| 国产女优一区| 久久午夜av| 欧美激情亚洲自拍| 亚洲欧美日本日韩| 欧美一区亚洲二区| 最新国产成人av网站网址麻豆| 亚洲激情另类| 国产精品九九久久久久久久| 欧美一区精品| 欧美不卡福利| 先锋影音国产精品| 免费高清在线一区| 亚洲午夜国产一区99re久久| 欧美一级欧美一级在线播放| 亚洲人成在线播放| 亚洲永久免费av| 亚洲欧洲综合另类| 亚洲在线视频免费观看| 尤物网精品视频| 中国成人黄色视屏| 亚洲第一中文字幕| 一本色道久久综合亚洲二区三区| 国产精品制服诱惑| 亚洲高清在线观看一区| 国产欧美精品在线观看| 亚洲区一区二| 一区二区三区在线观看欧美 | 国产精品免费视频观看| 久久综合五月| 国产精品久久久久毛片大屁完整版| 久久久午夜电影| 欧美天天在线| 亚洲国产精品久久久久婷婷884| 国产精品久久77777| 亚洲第一区在线观看| 国产喷白浆一区二区三区| 亚洲三级免费观看| 激情偷拍久久| 性欧美8khd高清极品| 亚洲视频久久| 欧美电影在线观看| 欧美不卡三区| 国产综合在线看| 亚洲在线成人精品| 一二三四社区欧美黄| 美女久久一区| 免费日韩av片| 国语对白精品一区二区| 亚洲免费在线观看视频| 亚洲欧美福利一区二区| 欧美精品在线播放| 亚洲激情偷拍| 亚洲精品国产精品久久清纯直播| 久久久久一本一区二区青青蜜月| 性色av一区二区三区红粉影视| 欧美伦理在线观看| 亚洲人成77777在线观看网| 亚洲电影免费| 久久夜色精品国产亚洲aⅴ| 久久亚洲色图| 在线精品视频在线观看高清| 久久黄色级2电影| 久久亚洲高清| 在线看日韩欧美| 久久尤物视频| 亚洲国产毛片完整版| 99天天综合性| 国产精品扒开腿爽爽爽视频| 中日韩男男gay无套 | 国产欧美 在线欧美| 亚洲在线观看视频网站| 久久国产乱子精品免费女| 国产欧亚日韩视频| 久久er99精品| 亚洲国产精品成人综合色在线婷婷| 亚洲国产精品成人综合| 欧美福利电影在线观看| 在线视频欧美日韩| 久久国产乱子精品免费女| 精品二区视频| 欧美日韩精品一区视频| 亚洲综合社区| 女主播福利一区| 日韩一区二区精品| 国产欧美日韩另类视频免费观看| 久久久91精品国产| 亚洲激情综合| 欧美一区二区三区视频在线| 红桃视频国产一区| 欧美日韩国产区| 亚洲欧美在线网| 欧美激情bt| 欧美一区二区三区在线看| 影音先锋亚洲一区| 欧美日韩亚洲三区| 久久精品视频播放| 日韩一区二区电影网| 久久久久久久高潮| 一本色道**综合亚洲精品蜜桃冫 | 亚洲福利视频网站| 欧美日韩激情网| 久久久噜噜噜久久久| 亚洲精品一区二区三区四区高清 | 亚洲国产精品一区二区第四页av | 国产视频一区在线观看一区免费| 老司机一区二区| 在线视频欧美一区| 免费观看在线综合| 欧美一级夜夜爽| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲欧美在线磁力| 亚洲成人在线视频播放| 亚洲免费高清| 久久亚洲国产精品一区二区| 中文日韩在线| 亚洲日本成人女熟在线观看| 国产午夜亚洲精品不卡| 欧美日韩激情小视频| 免费欧美高清视频| 久久精品国产精品亚洲综合| 亚洲天堂av高清| 亚洲免费观看高清完整版在线观看熊 | 午夜精品视频在线| 亚洲作爱视频| 91久久久久久国产精品| 久久综合亚州| 久久久亚洲成人| 欧美一区二区大片| 亚洲男女自偷自拍| 一区二区欧美日韩| 亚洲精品一区中文| 亚洲黑丝一区二区| 在线精品观看| 亚洲福利视频二区| 亚洲大片av| 在线日韩视频| 亚洲第一成人在线| 在线观看日韩精品| 亚洲福利视频网站| 亚洲精品久久| 日韩午夜电影av| 宅男精品视频| 亚洲一区二区三区中文字幕| 中文一区字幕| 午夜一区二区三视频在线观看| 亚洲视频在线观看一区| 亚洲一区国产视频| 欧美在线视频观看| 久久精品一二三| 美女黄色成人网| 亚洲国产精品一区制服丝袜 | 亚洲高清资源综合久久精品| 欧美激情精品久久久久久大尺度| 免费日韩精品中文字幕视频在线| 蜜臀91精品一区二区三区| 欧美大片国产精品| 亚洲欧洲中文日韩久久av乱码| 最新日韩欧美| 亚洲专区一二三| 久久精品夜色噜噜亚洲a∨ | 久久九九久精品国产免费直播 | 亚洲视频一二区| 欧美与黑人午夜性猛交久久久| 久久久精品性| 欧美日韩成人一区二区三区| 国产精品国产三级欧美二区| 国产日韩欧美一区二区三区在线观看| 国产偷自视频区视频一区二区| 激情另类综合| 一本大道久久a久久精二百| 亚洲欧美日韩一区二区三区在线| 欧美一区二区| 亚洲国产成人精品视频| 在线亚洲精品福利网址导航| 欧美在线你懂的| 欧美日韩国语| 伊人天天综合| 亚洲欧美在线磁力| 亚洲高清不卡av| 先锋影音国产一区| 欧美成人精品在线播放| 国产精品免费看久久久香蕉| 亚洲经典在线| 欧美一区二区三区免费观看视频| 免费成人毛片| 亚洲综合欧美日韩| 欧美国产精品一区| 国产亚洲欧美aaaa| 亚洲视频大全| 亚洲国产精品尤物yw在线观看| 亚洲欧美日韩在线高清直播|