<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 教程 - 生成第一個[變更] 完成了[教程-歷史](/wiki/ChineseTutorialHistory) 的學習之后, 我們來到 `my-hello` [倉庫]里面,就是我們在 [教程-克隆](/wiki/ChineseTutorialClone)中 [克隆] 得到的。 在 [Mercurial](/wiki/ChineseMercurial) 開發實踐中一個好的做法是把每個變更隔離在各自的[倉庫](/wiki/Repository)里。這樣可以避免把不相關的代碼混雜起來, 并且便于一個接一個的測試每一部分工作。我們現在就開始采用這一模式。 我們的目標很簡單,讓“hello, world”程序打印另外一行輸出。 首先, 我們給這個小項目創建一個新的倉庫叫做 `my-hello-new-output`,方法是對`my-hello`做克隆。 ``` $ cd .. $ hg clone my-hello my-hello-new-output ``` updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved **注:** 注意我們給新的 [倉庫](/wiki/Repository) 命名了一個描述性 的名字,基本上是說明這個[倉庫](/wiki/Repository)的目的。 在[Mercurial](/wiki/ChineseMercurial)里面給一個[倉庫](/wiki/Repository)創建[克隆]很方便,我們會很快的積攢起很多稍微不同的倉庫。如果我們不給他們描述性的命名, 很快就會沒法分辨它們。 現在可以在新的倉庫里面進行修改了 。 我們進入[工作目錄](/wiki/WorkingDirectory),使用我們喜歡的編輯軟件修改源文件。 ``` $ cd my-hello-new-output * Placed in the public domain by Bryan O'Sullivan * * This program is not covered by patents in the United States or other * countries. */ #include <stdio.h> int main(int argc, char **argv) { printf("hello, world!\n"); return 0; } ``` 我們要修改 `main` 讓它再多打印一行輸出: ``` (...) int main(int argc, char **argv) { printf("hello, world!\n"); printf("sure am glad I'm using Mercurial!\n"); return 0; } ``` 完成之后退出我們喜歡的編輯器,任務完成。 有了剛才的修改我們就可以創建一個[變更集](/wiki/ChangeSet)。 可是萬一我們被別的事情打擾,在創建變更集之后忘記了它里面有哪些變更,怎么辦呢? 這時候我們要用到`status`命令。 ``` $ hg status M hello.c ``` 輸出很簡短。總之以 `M` 開頭的行意思就是`hello.c`文件修改過了,那么我們的變更已經可以加入一個變更集了。 使用 `diff` 命令我們可以檢查文件實際的改變: ``` $ hg diff diff -r 82e55d328c8c hello.c --- a/hello.c Fri Aug 26 01:21:28 2005 -0700 +++ b/hello.c Fri Sep 30 10:27:47 2005 +0800 @@ -12,5 +12,6 @@ int main(int argc, char **argv) { printf("hello, world!\n"); + printf("sure am glad I'm using Mercurial!\n"); return 0; } ``` ![&lt;!&gt;](https://box.kancloud.cn/2016-05-12_5733f30cbacf2.png "&lt;!&gt;") 萬一我們希望**放棄**我們的變更并重新開始,我們可以用`revert`命令來恢復`hello.c`到我們沒有更改的狀態(或者用`--all`選項來恢復所有文件)。請確認你確實知道這是你真的希望做的(參見 [Revert](/wiki/Revert))。 ``` $ hg revert hello.c ``` `revert`重命名被編輯文件`hello.c`為`hello.c.orig`并恢復`hello.c`到它的未編輯狀態。 `status`命令現在會將`hello.c.orig`視為不被追蹤的(以"?"為前綴)。 ``` $ hg st ? hello.c.orig ``` 如果我們又改變主意想要重用我們做的修改,我們只需要移除未編輯狀態的`hello.c`然后重命名我們改過的`hello.c.orig`為`hello.c` ``` $ rm hello.c $ mv hello.c.orig hello.c $ hg st M hello.c ``` 創建一個變更集的動作稱為[提交](/wiki/Commit)它。我們用`commit`命令來執行[提交](/wiki/Commit)。 ``` $ hg commit ``` 這個命令把我們帶到一個編輯器內,同時給我們展示了幾行語焉不詳的文字。 **注:** 缺省的編輯器是`vi`。這可以用環境變量`EDITOR` 或 [HGEDITOR](/wiki/HGEDITOR) 來改變。同樣,根據你怎樣輸入和保存文件,變更集記錄哈希表可能不一樣。 ``` HG: Enter commit message. Lines beginning with 'HG:' are removed. HG: -- HG: user: mpm@selenic.com HG: branch 'default' HG: changed hello.c ``` 第一行是空的,接下來的幾行標明用戶,分支名和哪些文件將進入本變更集。 默認的分支名是 "default" (參見[NamedBranches](/wiki/NamedBranches)). "user"的默認值來自于`~/.hgrc`配置文件UI段下"username"屬性的值(參見[hgrc(5)](http://www.selenic.com/mercurial/hgrc.5.html#ui)). 或者,用命令行選項-u來指定 (參見`hg?help?ci`或者[hg.1.html#commit](http://www.selenic.com/mercurial/hg.1.html#commit)). 為了[提交](/wiki/Commit)變更集,我們必須描述它的原因(參見變更集注釋)。讓我們輸入一些: ``` Express great joy at existence of Mercurial HG: Enter commit message. Lines beginning with 'HG:' are removed. HG: -- HG: user: mpm@selenic.com HG: branch 'default' HG: changed hello.c ``` 接著,我保存測試并退出編輯器,如果一切正常,`commit`命令將沒有任何提示地退出。 ![&lt;!&gt;](https://box.kancloud.cn/2016-05-12_5733f30cbacf2.png "&lt;!&gt;") 如果你在沒有保存文本的情況下退出編輯器,`commit` 將中斷操作,這樣你可以在提交前改變你的想法。 讓我們看看`status`命令現在告訴我們什么? ``` $ hg status ``` 什么也沒有!我們的變更已經[提交](/wiki/Commit)到變更集里了,那里沒有修改的文件需要提交的。我們的[末端](/wiki/Tip)現在和我們工作目錄的內容一致了。 [par](/wiki/Parent)命令向我們展示我們的倉庫的工作路徑現在與新提交的變更集同步了 (參見[更新](/wiki/Update)) (這里,我們只有一個父修訂版, 它即是每次提交之后的修訂版。我們將在[TutorialMerge](/wiki/TutorialMerge)里看到兩個父修訂版的情況): ``` $ hg par changeset: 2:86794f718fb1 tag: tip user: mpm@selenic.com date: Mon May 05 01:20:46 2008 +0200 summary: Express great joy at existence of Mercurial ``` 就是它了!我們已經[提交](/wiki/Commit)了一個變更集。 我們現在可以為我們的新工作檢查變更的歷史: ``` $ hg log changeset: 2:86794f718fb1 tag: tip user: mpm@selenic.com date: Mon May 05 01:20:46 2008 +0200 summary: Express great joy at existence of Mercurial (...) ``` **注:** 用戶,日期和[變更集號](/wiki/ChangeSetID)當然和我的是不一樣的。 正如我們在[教程--復制](/wiki/ChineseTutorialClone)中討論的,新的[變更集](/wiki/ChangeSet)只存在于本倉庫中。 這是[Mercurial](/wiki/ChineseMercurial)關鍵的一部分工作方法。 如果要分享變更,我們必須繼續[教程 - 與別的倉庫分享改變](/wiki/ChineseTutorialShareChange)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看