- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
下面是一个使用 Mercurial 的小例子,同样使用 Git。我无法理解如何使用 Git 进行 hg update
:
我有一个带有 4 次提交的小型 Mercurial 设置 - 我退回一次提交
hg init
echo "1" > a.txt; hg commit -A -m "1. commit" a.txt
echo "2" >> a.txt; hg commit -m "2. commit" a.txt
echo "3" >> a.txt; hg commit -m "3. commit" a.txt
echo "4" >> a.txt; hg commit -m "4. commit" a.txt
hg update -r 3
thg # or hg view`
这给出了这张照片
请注意,我看到了所有四个提交 - 即前历史和后续提交
让我尝试使用 Git 做同样的例子
git init
echo "1" > a.txt; git add a.txt; git commit -m "1. commit" a.txt
echo "2" >> a.txt; git commit -m "2. commit" a.txt
echo "3" >> a.txt; git commit -m "3. commit" a.txt
echo "4" >> a.txt; git commit -m "4. commit" a.txt # gives for me [master 57bb375]
让我看看提交:
git log --graph --pretty=format:'%h -%d %s (%cr) <%an>'
* 57bb375 - (HEAD, master) 4. commit (14 minutes ago) <Peter Toft>
* 724a493 - 3. commit (14 minutes ago) <Peter Toft>
* bb38732 - 2. commit (14 minutes ago) <Peter Toft>
* 879c593 - 1. commit (15 minutes ago) <Peter Toft>
好 - 四个提交符合预期。让我返回一个提交(类似于 hg 更新)
git checkout 724a493
现在 git 日志呢?
git log --graph --pretty=format:'%h -%d %s (%cr) <%an>'
* 724a493 - (HEAD) 3. commit (19 minutes ago) <Peter Toft>
* bb38732 - 2. commit (19 minutes ago) <Peter Toft>
* 879c593 - 1. commit (19 minutes ago) <Peter Toft>
gitk 还会只显示前 3 个提交吗?
所以“git checkout”不只是类似于“hg update”。以下提交在哪里?
最佳答案
hg update -r 3
为您提供了一个自动分支头,您可以继续向其提交。在 git 中,checkout
带你到正确的提交,但不会给你一个新的分支头。如果你想要,你可以说
git checkout -b new_branch_name 724a493
当然可以用任何你喜欢的名字。如果你不使用 -b
,就像你的问题一样,你会进入分离 HEAD 的状态......这正是 hg update -r 3
和 git checkout 724a493
。请注意 checkout 时 Git 打印的消息(来 self 运行您的示例):
Note: checking out '2ffb5e0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at 2ffb5e0... 3. commit
关于Git 等同于 hg update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20505176/
判断这2个相似的Uris实际上相同的标准方法是什么? var a = new Uri("http://sample.com/sample/"); var b = new Uri("http://sam
这个问题在这里已经有了答案: Why does "true" == true show false in JavaScript? (5 个答案) 关闭 5 年前。 可能我很困惑,但我无法理解这个愚蠢
我是一名优秀的程序员,十分优秀!