gpt4 book ai didi

Git 等同于 hg update

转载 作者:太空狗 更新时间:2023-10-29 12:59:55 28 4
gpt4 key购买 nike

下面是一个使用 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`

这给出了这张照片

thg

请注意,我看到了所有四个提交 - 即前历史和后续提交

让我尝试使用 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 3git 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com