天天看點

Git/SVN

Git常用操作指令收集:--------------------------------------------------------------------------------------------------------------------------------------------------- 1) 遠端倉庫相關指令 檢出倉庫:$ git clone git://github.com/jquery/jquery.git 檢視遠端倉庫:$ git remote -v 添加遠端倉庫:$ git remote add [name] [url] 删除遠端倉庫:$ git remote rm [name] 修改遠端倉庫:$ git remote set-url --push[name][newUrl] 拉取遠端倉庫:$ git pull [remoteName] [localBranchName] 推送遠端倉庫:$ git push [remoteName] [localBranchName]   2)分支(branch)操作相關指令 檢視本地分支:$ git branch 檢視遠端分支:$ git branch -r 建立本地分支:$ git branch [name] ----注意新分支建立後不會自動切換為目前分支 切換分支:$ git checkout [name] 建立新分支并立即切換到新分支:$ git checkout -b [name] 删除分支:$ git branch -d [name] ---- -d選項隻能删除已經參與了合并的分支,對于未有合并的分支是無法删除的。如果想強制删除一個分支,可以使用-D選項 合并分支:$ git merge [name] ----将名稱為[name]的分支與目前分支合并 建立遠端分支(本地分支push到遠端):$ git push origin [name] 删除遠端分支:$ git push origin :heads/[name]

我從master分支建立了一個issue5560分支,做了一些修改後,使用git push origin master送出,但是顯示的結果卻是'Everything up-to-date',發生問題的原因是git push origin master 在沒有track遠端分支的本地分支中預設送出的master分支,因為master分支預設指向了origin master 分支,這裡要使用git push origin issue5560:master 就可以把issue5560推送到遠端的master分支了。

    如果想把本地的某個分支test送出到遠端倉庫,并作為遠端倉庫的master分支,或者作為另外一個名叫test的分支,那麼可以這麼做。

$ git push origin test:master         // 送出本地test分支作為遠端的master分支

$ git push origin test:test              // 送出本地test分支作為遠端的test分支

如果想删除遠端的分支呢?類似于上面,如果:左邊的分支為空,那麼将删除:右邊的遠端的分支。

$ git push origin :test              // 剛送出到遠端的test将被删除,但是本地還會儲存的,不用擔心 3)版本(tag)操作相關指令 檢視版本:$ git tag 建立版本:$ git tag [name] 删除版本:$ git tag -d [name] 檢視遠端版本:$ git tag -r 建立遠端版本(本地版本push到遠端):$ git push origin [name] 删除遠端版本:$ git push origin :refs/tags/[name]   4) 子子產品(submodule)相關操作指令 添加子子產品:$ git submodule add [url] [path] 如:$ git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs 初始化子子產品:$ git submodule init ----隻在首次檢出倉庫時運作一次就行 更新子子產品:$ git submodule update ----每次更新或切換分支後都需要運作一下 删除子子產品:(分4步走哦) 1)$ git rm --cached [path] 2) 編輯“.gitmodules”檔案,将子子產品的相關配置節點删除掉 3) 編輯“.git/config”檔案,将子子產品的相關配置節點删除掉 4) 手動删除子子產品殘留的目錄   5)忽略一些檔案、檔案夾不送出 在倉庫根目錄下建立名稱為“.gitignore”的檔案,寫入不需要的檔案夾名或檔案,每個元素占一行即可,如 target bin *.db   Svn常用操作指令收集:---------------------------------------------------------------------------------------------------------------------------------------------------          1、将檔案checkout到本地目錄

svn checkout path(path是伺服器上的目錄)

例如:svn checkout svn://192.168.1.1/pro/domain

簡寫:svn co

         2、往版本庫中添加新的檔案

svn add file

例如:svn addtest.php(添加test.php)

svn add *.php(添加目前目錄下所有的php檔案)

         3、将改動的檔案送出到版本庫

svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果選擇了保持鎖,就使用–no-unlock開關)

例如:svn commit -m “add test file for my test“ test.php

簡寫:svn ci

        4、加鎖/解鎖

svn lock -m “LockMessage“ [--force] PATH

例如:svn lock -m “lock test file“ test.php

svn unlock PATH

        5、更新到某個版本

svn update -r m path

例如:

svn update如果後面沒有目錄,預設将目前目錄以及子目錄下的所有檔案都更新到最新版本。

svn update -r 200 test.php(将版本庫中的檔案test.php還原到版本200)

svn update test.php(更新,于版本庫同步。如果在送出的時候提示過期的話,是因為沖突,需要先update,修改檔案,然後清除svn resolved,最後再送出commit)

簡寫:svn up

        6、檢視檔案或者目錄狀态

1)svn status path(目錄下的檔案和子目錄的狀态,正常狀态不顯示)

【?:不在svn的控制中;M:内容被修改;C:發生沖突;A:預定加入到版本庫;K:被鎖定】

2)svn status -v path(顯示檔案和子目錄狀态)

第一列保持相同,第二列顯示工作版本号,第三和第四列顯示最後一次修改的版本号和修改人。

注:svn status、svn diff和 svn revert這三條指令在沒有網絡的情況下也可以執行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。

簡寫:svn st

         7、删除檔案

svn delete path -m “delete test fle“

例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”

或者直接svn delete test.php 然後再svn ci -m ‘delete test file‘,推薦使用這種

簡寫:svn (del, remove, rm)

        8、檢視日志

svn log path

例如:svn log test.php 顯示這個檔案的所有修改記錄,及其版本号的變化

        9、檢視檔案詳細資訊

svn info path

例如:svn info test.php

        10、比較差異

svn diff path(将修改的檔案與基礎版本比較)

例如:svn diff test.php

svn diff -r m:n path(對版本m和版本n比較差異)

例如:svn diff -r 200:201 test.php

簡寫:svn di

         11、将兩個版本之間的差異合并到目前檔案

svn merge -r m:n path

例如:svn merge -r 200:205 test.php(将版本200與205之間的差異合并到目前檔案,但是一般都會産生沖突,需要處理一下)

        12、SVN 幫助

svn help

svn help ci

——————————————————————————

以上是常用指令,下面寫幾個不經常用的

——————————————————————————

        13、版本庫下的檔案和目錄清單

svn list path

顯示path目錄下的所有屬于版本庫的檔案和目錄

簡寫:svn ls

        14、建立納入版本控制下的新目錄

svn mkdir: 建立納入版本控制下的新目錄。

用法: 

        1、mkdir PATH…

        2、mkdir URL…

建立版本控制的目錄。

        1、每一個以工作副本 PATH 指定的目錄,都會建立在本地端,并且加入新增排程,以待下一次的送出。

        2、每個以URL指定的目錄,都會透過立即送出于倉庫中建立。在這兩個情況下,所有的中間目錄都必須事先存在。

         15、恢複本地修改 svn revert: 恢複原始未改變的工作副本檔案 (恢複大部份的本地修改)。revert:

         用法: revert PATH…

         注意: 本子指令不會存取網絡,并且會解除沖突的狀況。但是它不會恢複被删除的目錄

         16、代碼庫URL變更 svn switch (sw): 更新工作副本至不同的URL。

用法: 1、switch URL [PATH]

          2、switch –relocate FROM TO [PATH...]

          1、更新你的工作副本,映射到一個新的URL,其行為跟“svn update”很像,也會将伺服器上檔案與本地檔案合并。這是将工作副本對應到同一倉庫中某個分支或者标記的方法。

          2、改寫工作副本的URL中繼資料,以反映單純的URL上的改變。當倉庫的根URL變動(比如方案名或是主機名稱變動),但是工作副本仍舊對映到同一倉庫的同一目錄時使用這個指令更新工作副本與倉庫的對應關系。

          17、解決沖突

svn resolved: 移除工作副本的目錄或檔案的“沖突”狀态。

用法: resolved PATH…

注意: 本子指令不會依文法來解決沖突或是移除沖突标記;它隻是移除沖突的

相關檔案,然後讓 PATH 可以再次送出。

         18、輸出指定檔案或URL的内容。

svn cat 目标[@版本]…如果指定了版本,将從指定的版本開始查找。

svn cat -r PREV filename > filename (PREV 是上一版本,也可以寫具體版本号,這樣輸出結果是可以送出的)