为什么分支报告为未合并,尽管它已合并
Why branch reported as not merged despite on it is merged
我有分支,该分支的所有更改都在 master (HEAD) 中。但是 git diff master...feature/5492_new_currency
告诉我事实并非如此。我哪里错了?
$ git diff master...feature/5492_new_currency
diff --git a/app/locale/ru/LC_MESSAGES/lang.po b/app/locale/ru/LC_MESSAGES/lang.po
index 9274c9e..6b9d1ae 100644
--- a/app/locale/ru/LC_MESSAGES/lang.po
+++ b/app/locale/ru/LC_MESSAGES/lang.po
@@ -4531,6 +4531,10 @@ msgstr "$"
msgid "currency:UZS"
msgstr "сум."
+# Британский фунт
+msgid "currency:GBP"
+msgstr "£"
+
msgid "datepicker:prevText"
msgstr "Пред>"
diff --git a/app/protos/defaults.ini b/app/protos/defaults.ini
index 4742982..4de9ea3 100644
--- a/app/protos/defaults.ini
+++ b/app/protos/defaults.ini
@@ -2,8 +2,8 @@ BASE_DOMAIN = xxxxx
INSTANCE_COUNTRY = ru
INSTANCE_LANGS = ru en
DEFAULT_LANGUAGE = ru
-# Доступные валюты стран для магазинов: РФ, США, Евро, Казахстан, Украина, Китай, Молдова, Армения,
-INSTANCE_CURRENCY = RUB USD EUR KZT UAH CNY MDL AMD UZS AZN KGS TJS TMT GEL LVL LTL
+# Доступные валюты стран для магазинов: РФ, США, Евро, Казахстан, Украина, Китай, Молдова, Армения,
+INSTANCE_CURRENCY = RUB USD EUR KZT UAH CNY MDL AMD UZS AZN KGS TJS TMT GEL LVL LTL GBP
MAIL_FROM = xxxxx
MAIL_FEEDBACK = xxxxx
kes@backend01:~/site/app$ git branch
feature/5492_new_currency
* master
production
kes@backend01:~/site/app$ cat locale/ru/LC_MESSAGES/lang.po | grep -A 5 -B 5 'msgid "currency:GBP"'
# Узбекистан
msgid "currency:UZS"
msgstr "сум."
# Британский фунт
msgid "currency:GBP"
msgstr "£"
msgid "datepicker:prevText"
msgstr "Пред>"
kes@backend01:~/site/app$ git branch -d feature/5492_new_currency
warning: deleting branch 'feature/5492_new_currency' that has been merged to
'refs/remotes/origin/feature/5492_new_currency', but not yet merged to HEAD.
Deleted branch feature/5492_new_currency (was ab38009).
您是否尝试过 git fetch
查看存储库是否已更新?您可能没有在计算机上更新它。
在网络上检查您的存储库。如果它显示您的分支已合并,那就是。如果是,强制将更新推送到 Github 桌面。
希望对您有所帮助!
git diff master...feature/5492_new_currency
[shows some differences]
three-dot 语法 A...B
在 Git 中具有特殊含义。更准确地说,它有 两个 特殊含义,一个专用于 git diff
。 (在其他 Git 命令中,它具有其他特殊含义。)对于 git diff
(并且 仅 对于 git diff
),A...B
表示:
- 首先,运行
git merge-base --all A B
。将其输出 ID 保存在一个变量中——我们称之为 $base
。 (在 shell 脚本中你可以写 base=$(git merge-base --all A B)
然后 echo $base
来查看是否只有一个 ID。)
- 然后,只要输出一个commit ID,就选择那个commit ID,然后运行:
git diff $base B
。否则产生一些 not-useful 输出。 (这个 "otherwise" 部分是一个错误。它实际上并没有像您在 headers 中看到的 diff --cc
那样发生在这里,所以我们知道实际上只有一个 ID。)
因为 A
这里是 master
而 B
这里是 feature/5492_new_currency
,并且有一些差异输出,告诉我:
git merge-base master feature/5492_new_currency
和:
git rev-parse feature/5492_new_currency
会生成两个不同的 ID。
这反过来意味着 master
不是 feature/5492_new_currency
的祖先。如果是,master
和 feature/5492_new_currency
的合并基础将是 与 feature/5492_new_currency
相同的 提交 ID。
您的下一个命令及其结果实际上提供了更直接的信息:
kes@backend01:~/site/app$ git branch -d feature/5492_new_currency
warning: deleting branch 'feature/5492_new_currency' that has been merged to
'refs/remotes/origin/feature/5492_new_currency', but not yet merged to HEAD.
Deleted branch feature/5492_new_currency (was ab38009).
这两个加在一起意味着你的主张:
I have branch and all changes at that branch are at master (HEAD)
错了!特别是,第二个结果证明给定的两个 ID 将由以下内容生成:
git rev-parse HEAD
和:
git rev-parse feature/5492_new_currency
前者的 ID 不是 "less than or equal to" 后者的 ID,即 HEAD
不是 feature/5492_new_currency
的祖先。假设 HEAD
实际上是对 master
的引用,这反过来意味着 master
不是 feature/5492_new_currency
的祖先,正如我们从第一个命令中看到的那样。它可能是 "greater than"(即超前),但如果是这样的话,git diff
会比较 feature/5492_new_currency
和它自己。所以 feature/5492_new_currency
肯定是 而不是 合并到 master
。不过,它 被 推到了它的上游(它的上游是 origin/5492_new_currency
)。也就是说,来自名称 feature/5492_new_currency
的 ID 是 "less than or equal to" 您仍然可以从 origin/5492_new_currency
.
获得的 ID
现在您的 branch-name feature/5492_new_currency
已被删除,您将必须使用 [=31 以外的其他名称对您的本地名称 master
进行任何操作=].最直接的可能是 运行:
$ git checkout master && git merge origin/5492_new_currency
这将 fast-forward master
,或者进行新的合并提交。 (即使 fast-forward 是可能的,要强制进行新的合并提交,请使用 git merge --no-ff
。)
我们发现问题是什么:
有人刚刚 cherry-pick
将这些更改转换为 master 分支。
因此尽管更改相同,但分支不在 master
我有分支,该分支的所有更改都在 master (HEAD) 中。但是 git diff master...feature/5492_new_currency
告诉我事实并非如此。我哪里错了?
$ git diff master...feature/5492_new_currency
diff --git a/app/locale/ru/LC_MESSAGES/lang.po b/app/locale/ru/LC_MESSAGES/lang.po
index 9274c9e..6b9d1ae 100644
--- a/app/locale/ru/LC_MESSAGES/lang.po
+++ b/app/locale/ru/LC_MESSAGES/lang.po
@@ -4531,6 +4531,10 @@ msgstr "$"
msgid "currency:UZS"
msgstr "сум."
+# Британский фунт
+msgid "currency:GBP"
+msgstr "£"
+
msgid "datepicker:prevText"
msgstr "Пред>"
diff --git a/app/protos/defaults.ini b/app/protos/defaults.ini
index 4742982..4de9ea3 100644
--- a/app/protos/defaults.ini
+++ b/app/protos/defaults.ini
@@ -2,8 +2,8 @@ BASE_DOMAIN = xxxxx
INSTANCE_COUNTRY = ru
INSTANCE_LANGS = ru en
DEFAULT_LANGUAGE = ru
-# Доступные валюты стран для магазинов: РФ, США, Евро, Казахстан, Украина, Китай, Молдова, Армения,
-INSTANCE_CURRENCY = RUB USD EUR KZT UAH CNY MDL AMD UZS AZN KGS TJS TMT GEL LVL LTL
+# Доступные валюты стран для магазинов: РФ, США, Евро, Казахстан, Украина, Китай, Молдова, Армения,
+INSTANCE_CURRENCY = RUB USD EUR KZT UAH CNY MDL AMD UZS AZN KGS TJS TMT GEL LVL LTL GBP
MAIL_FROM = xxxxx
MAIL_FEEDBACK = xxxxx
kes@backend01:~/site/app$ git branch
feature/5492_new_currency
* master
production
kes@backend01:~/site/app$ cat locale/ru/LC_MESSAGES/lang.po | grep -A 5 -B 5 'msgid "currency:GBP"'
# Узбекистан
msgid "currency:UZS"
msgstr "сум."
# Британский фунт
msgid "currency:GBP"
msgstr "£"
msgid "datepicker:prevText"
msgstr "Пред>"
kes@backend01:~/site/app$ git branch -d feature/5492_new_currency
warning: deleting branch 'feature/5492_new_currency' that has been merged to
'refs/remotes/origin/feature/5492_new_currency', but not yet merged to HEAD.
Deleted branch feature/5492_new_currency (was ab38009).
您是否尝试过 git fetch
查看存储库是否已更新?您可能没有在计算机上更新它。
在网络上检查您的存储库。如果它显示您的分支已合并,那就是。如果是,强制将更新推送到 Github 桌面。
希望对您有所帮助!
git diff master...feature/5492_new_currency
[shows some differences]
three-dot 语法 A...B
在 Git 中具有特殊含义。更准确地说,它有 两个 特殊含义,一个专用于 git diff
。 (在其他 Git 命令中,它具有其他特殊含义。)对于 git diff
(并且 仅 对于 git diff
),A...B
表示:
- 首先,运行
git merge-base --all A B
。将其输出 ID 保存在一个变量中——我们称之为$base
。 (在 shell 脚本中你可以写base=$(git merge-base --all A B)
然后echo $base
来查看是否只有一个 ID。) - 然后,只要输出一个commit ID,就选择那个commit ID,然后运行:
git diff $base B
。否则产生一些 not-useful 输出。 (这个 "otherwise" 部分是一个错误。它实际上并没有像您在 headers 中看到的diff --cc
那样发生在这里,所以我们知道实际上只有一个 ID。)
因为 A
这里是 master
而 B
这里是 feature/5492_new_currency
,并且有一些差异输出,告诉我:
git merge-base master feature/5492_new_currency
和:
git rev-parse feature/5492_new_currency
会生成两个不同的 ID。
这反过来意味着 master
不是 feature/5492_new_currency
的祖先。如果是,master
和 feature/5492_new_currency
的合并基础将是 与 feature/5492_new_currency
相同的 提交 ID。
您的下一个命令及其结果实际上提供了更直接的信息:
kes@backend01:~/site/app$ git branch -d feature/5492_new_currency warning: deleting branch 'feature/5492_new_currency' that has been merged to 'refs/remotes/origin/feature/5492_new_currency', but not yet merged to HEAD. Deleted branch feature/5492_new_currency (was ab38009).
这两个加在一起意味着你的主张:
I have branch and all changes at that branch are at master (HEAD)
错了!特别是,第二个结果证明给定的两个 ID 将由以下内容生成:
git rev-parse HEAD
和:
git rev-parse feature/5492_new_currency
前者的 ID 不是 "less than or equal to" 后者的 ID,即 HEAD
不是 feature/5492_new_currency
的祖先。假设 HEAD
实际上是对 master
的引用,这反过来意味着 master
不是 feature/5492_new_currency
的祖先,正如我们从第一个命令中看到的那样。它可能是 "greater than"(即超前),但如果是这样的话,git diff
会比较 feature/5492_new_currency
和它自己。所以 feature/5492_new_currency
肯定是 而不是 合并到 master
。不过,它 被 推到了它的上游(它的上游是 origin/5492_new_currency
)。也就是说,来自名称 feature/5492_new_currency
的 ID 是 "less than or equal to" 您仍然可以从 origin/5492_new_currency
.
现在您的 branch-name feature/5492_new_currency
已被删除,您将必须使用 [=31 以外的其他名称对您的本地名称 master
进行任何操作=].最直接的可能是 运行:
$ git checkout master && git merge origin/5492_new_currency
这将 fast-forward master
,或者进行新的合并提交。 (即使 fast-forward 是可能的,要强制进行新的合并提交,请使用 git merge --no-ff
。)
我们发现问题是什么:
有人刚刚 cherry-pick
将这些更改转换为 master 分支。
因此尽管更改相同,但分支不在 master