diff --git a/translated/tech/20231101 Confusing git terminology.md b/published/20231101 Confusing git terminology.md similarity index 92% rename from translated/tech/20231101 Confusing git terminology.md rename to published/20231101 Confusing git terminology.md index 67b7c55841..d36390513b 100644 --- a/translated/tech/20231101 Confusing git terminology.md +++ b/published/20231101 Confusing git terminology.md @@ -3,13 +3,15 @@ [#]: author: "Julia Evans https://jvns.ca/" [#]: collector: "lujun9972/lctt-scripts-1693450080" [#]: translator: "ChatGPT" -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " +[#]: reviewer: "wxy" +[#]: publisher: "wxy" +[#]: url: "https://linux.cn/article-16451-1.html" 解读那些令人困惑 Git 术语 ====== +![][0] + 我正在一步步解释 Git 的方方面面。在使用 Git 近 15 年后,我已经非常习惯于 Git 的特性,很容易忘记它令人困惑的地方。 因此,我在 [Mastodon][1] 上进行了调查: @@ -51,7 +53,7 @@ 我认为,“head 是一个分支,`HEAD` 是当前的分支” 或许是 Git 中最奇怪的术语选择,但已经设定好了,想要更清晰的命名方案已经为时已晚,我们继续。 -“HEAD 是当前的分支”有一些重要的例外情况,我们将在下面讨论。 +“HEAD 是当前的分支” 有一些重要的例外情况,我们将在下面讨论。 ### “分离的 HEAD 状态” @@ -66,11 +68,11 @@ state without impacting any branches by switching back to a branch. [...] ``` -(你处于 “分离 HEAD” 的状态。你可以四处看看,进行试验性的更改并提交,你可以通过切换回一个分支来丢弃这个状态下做出的任何提交。) +(消息译文:你处于 “分离 HEAD” 的状态。你可以四处看看,进行试验性的更改并提交,你可以通过切换回一个分支来丢弃这个状态下做出的任何提交。) 这条信息的实质是: - * 在 Git 中,通常你有一个已经检出的“当前分支”,例如 `main`。 + * 在 Git 中,通常你有一个已经检出的 “当前分支”,例如 `main`。 * 存放当前分支的地方被称为 `HEAD`。 * 你做出的任何新提交都会被添加到你的当前分支,如果你运行 `git merge other_branch`,这也会影响你的当前分支。 * 但是,`HEAD` 不一定**必须**是一个分支!它也可以是一个提交 ID。 @@ -106,7 +108,7 @@ $ git rebase ours # 我们正在变基到的目标分支是 “ours” [这个精巧的小网站][22] 对 “ours” 和 “theirs” 的术语进行了解释。 -人们也提到,VSCode 将 “ours”/“theirs” 称作 “current change”/“incoming change”,同样会引起混淆。 +人们也提到,VSCode 将 “ours”/“theirs” 称作 “当前的更改”/“收到的更改”,同样会引起混淆。 ### “你的分支已经与 `origin/main` 同步” @@ -145,7 +147,7 @@ $ git rebase ours # 我们正在变基到的目标分支是 “ours” - `git log main..test` - `git log main...test` -我不太常用 `..` 和 `...` 这两个命令,所以我得查一下 [man git-range-diff][23]。我的理解是比如这样一个情况: +我从没用过 `..` 和 `...` 这两个命令,所以我得查一下 [man git-range-diff][23]。我的理解是比如这样一个情况: ``` A - B main @@ -164,7 +166,7 @@ A - B main 有关这个的更多讨论可以参考 [这篇博客文章][24]。 -### “可以快速前进” +### “可以快速前移” 在 `git status` 中,我们会经常遇到如下的信息: @@ -175,11 +177,9 @@ Your branch is behind 'origin/main' by 2 commits, and can be fast-forwarded. (use "git pull" to update your local branch) ``` -(你现在处于 `main` 分支上 -你的分支比 `origin/main` 分支落后了 2 个提交,可以进行快速前进。 - (使用 `git pull` 命令可以更新你的本地分支)) +(消息译文:你现在处于 `main` 分支上。你的分支比 `origin/main` 分支落后了 2 个提交,可以进行快速前进。 (使用 `git pull` 命令可以更新你的本地分支)) -但“快速前进” 到底是何意?本质上,它在告诉我们这两个分支基本如下图所示(最新的提交在右侧): +但“快速前移” 到底是何意?本质上,它在告诉我们这两个分支基本如下图所示(最新的提交在右侧): ``` main: A - B - C @@ -211,7 +211,7 @@ A - B - C - X (main) - - D - E (origin/main) ``` -此时,`main` 分支上有一个 `origin/main` 分支上无的提交(`X`),所以无法执行快速前进。在此种情况,`git status` 就会如此显示: +此时,`main` 分支上有一个 `origin/main` 分支上无的提交(`X`),所以无法执行快速前移。在此种情况,`git status` 就会如此显示: ``` $ git status @@ -243,7 +243,7 @@ and have 1 and 2 different commits each, respectively. 我对这段代码的含义并不十分清楚,我通常只是在使用 `git clone` 或 `git remote add` 配置远程仓库时采用默认配置,并没有动机去深究或改变。 -### tree-ish +### “tree-ish” 在 `git checkout` 的手册页中,我们可以看到: @@ -290,9 +290,9 @@ git checkout [-f|--ours|--theirs|-m|--conflict=