hg 的使用簡介


克隆倉庫

倉庫是一個目錄,它包含所有我們希望保留歷史的源代碼和這些源代碼的歷史記錄。

克隆就是生產一個倉庫的副本,這樣可以有一個本地私有的倉庫來工作.

hg clone http://遠程倉庫地址:端口 

需要說明的是:在 Mercurial 中, 每一個倉庫是自包含的。當你克隆一個倉庫后,新倉庫變成克隆時它的精確復本, 但是后續的兩個倉庫當中任一方改變都不會在對方顯示,除非你用 Pull 或 Push 明確地傳遞改變。

本地克隆

hg clone curRepoPath toRepoPath 

查看倉庫的歷史

hg log 

$ cd my-hello

$ hg log

changeset: 1:97455d972b91

tag: tip

user: mpm@xxx.com

date: 2014-06-19

summary: Create a file

changeset: 0:97455d972b91

tag: tip

user: mpm@xxx.com

date: 2014-06-19

summary: Create a file

changeset 標識了一個 改變集.

冒號前面的數字代表版本號; 它是一種標識改變集的本地縮寫.只是在你的本地倉庫中這個版本號才有意義.

冒號后面的那個很長的十六進制串是 ChangeSetID; 它是標識改變集的全局唯一標識符, 在所有包含這個改變集的倉庫中都相同. 如果你正在和其他人討論某個改變集,請使用這個 ChangeSetID,而不是上面說的版本號.

查看指定版本號的改動,並且顯示改動在哪

hg log -r版本號 -p 

處理改動

與倉庫同步后,如果本地有任何改動,則hg自動給我們生成了一個變更集(changeset,簡寫為 cset),

它自動收集記錄了本地倉庫(俗稱版本庫)中的文件的任何改動,用 changeset ID 唯一標識(identify)一個變更集.

查看變更:

hg status 或簡寫 hg st 

查看改動:

hg diff 

放棄變更並重新開始:

hg revert hello.c 或者用--all選項來恢復所有文件 

revert重命名被編輯文件hello.c為hello.c.orig並恢復hello.c到它的未編輯狀態。 status命令現在會將hello.c.orig視為不被追蹤的(以"?"為前綴)。

如果我又改變主意想要重用我做的修改,我只需要移除未編輯狀態的hello.c然后重命名我改過的hello.c.orig為hello.c

rm hello.c

mv hello.c.orig hello.c

hg st

M hello.c

執行提交

hg commit 

第一次,通常會出現

abort: no username supplied

這使因為沒有配置本地倉庫使用者的用戶名,可以去.hg目錄下簡歷hgrc文件,

[ui]

username = yourname

或者是這樣

hg config --edit 

設定username后,再次commit,會出現一個編輯框,提示要輸入一些變更信息

如果不習慣那樣,那么可以這樣

hg commit -m 'Add description of xxxxxx' 

與別的倉庫分享改變

查看其他倉庫的狀況

可以使用 tip 命令來找出每一個倉庫的Tip(Tip 是最后一個變更集).

localhost:my-hello cyk$ hg tip<br>

changeset: 2:b5b427d8a2ef

tag: tip

user: CodingLion

date: Thu Jun 19 22:50:11 2014 +0800

summary: have anything to say?

localhost:my-hello cyk$ hg tip

changeset: 3:863a46da4e7a

tag: tip

user: CodingLion

date: Thu Jun 19 22:52:11 2014 +0800

summary: wo qu !

可以看到,tip在不同的倉庫中是不同的.

別人有,我也要有,pull之,

這個命令所有在別的倉庫中有而在本倉庫中沒有的 變更集 從別的倉庫拉到本倉庫。

我有,別人沒有,push之.

合並改變

已經對 A 倉庫中的 hello.c 作了一個變更 , 同時對 B 倉庫 中的 hello.c 作了另一個變更. 怎樣合並這兩個分叉開發主線?

hg pull B 
hg merge 

但是, 經常是不能自動合並的,因為同樣源文件的相同的代碼在每個ChangeSet中被不同的方式更改(一個是我們提交的更改方式,一個是我們[Pull]來的)。

hg merge時,會發生什么決定於電腦中安裝了什么樣的程序。如果裝了圖形的合並程序,我們就能夠看到在兩個更改之間發生了什么沖突,並決定如何去做。

三路合並,分別是:

  1. 本地文件(當前倉庫)
  2. 其它文件(正在被合並的倉庫)
  3. 基文件 (在分支分開前的最后一個版本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM