如何将提交链从一个 git(或 svn)存储库复制到另一个存储库?
如果我只有一次提交,我会这样做:
cd Git1
git diff commitHash^ commitHash > patch.txt
cd Git2
git branch CommitsFromGit1
git checkout CommitsFromGit1
patch -i ....Git1/patch.txt
git ci -am "CommitFromGit1Name"
Run Code Online (Sandbox Code Playgroud)
但我的提交太多,无法一一手动进行。有没有办法创建某种带有一组提交更改的多补丁?
我今天一直在向我的本地存储库git commit -a提交并输入我的提交消息。一切都很好。
在一天结束时,我想通过单行提交来提交一个小的更改,所以我使用git commit -m "some message"并得到了以下内容:
On branch ChartFeature
Your branch is ahead of 'origin/ChartFeature' by 2 commits.
(use "git push" to publish your local commits)
Changes not staged for commit:
modified: SomeFolder/Scripts/app/SomeScript.js
no changes added to commit
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
我如何让 gitcommit -m再次允许?
脚注:在-m几次失败后,git log origin/ChartFeature..HEAD我git commit -a像以前一样尝试并没有发现任何问题,但它git commit -m仍然有效(按预期),但仍然没有。
提交是
提交或“修订”是对文件(或文件集)的单独更改。这就像当你保存一个文件时,除了使用 Git,每次保存它都会创建一个唯一的 ID(也称为“SHA”或“哈希”),它允许你记录何时以及由谁进行了哪些更改。提交通常包含提交消息,它是对所做更改的简要描述。
但我没有得到
commit在 git 和 git hub 中的确切含义是什么?
注意:-这不是任何 QI 的重复git push
如果您在文档中搜索 %b 和 %B ,除了神秘的“(未包装的主题和正文)”之外,没有解释它们之间的区别。
这是来自 repo 的示例提交(使用 git 版本 2.9.3)以及使用 %b 与 %B 打印的不同结果。提交命令是git commit -m 'Automated version update from Jenkins.'
$ git log -1 origin/master
commit 30ac57e...
Author: Jenkins <email@email.com>
Date: Wed Jul 12 16:28:41 2017 +0000
Automated version update from Jenkins.
$ git log -1 --format=%B origin/master
Automated version update from Jenkins.
$ git log -1 --format=%b origin/master
$
Run Code Online (Sandbox Code Playgroud)
我不明白为什么 %b 无法生成提交消息正文,也不明白为什么 %B (如果它在某种意义上包含“主题和正文”)只提供消息正文。
从日志进行漂亮打印的 %b 和 %B 之间的根本区别是什么?
如果您只想可靠地打印最近的提交消息(仅消息),您应该怎么做?我认为应该是,git log -1 --format=%b …
我不知道为什么,但我的 Visual Studio Code 显示了错误的提交作者姓名。我正在尝试更改提交的作者。我怎样才能做到这一点?我已经有很多东西了,但没有运气。

这是我尝试过的:
由于我有 3 次提交,我尝试过git rebase -i HEAD~3,但出现此错误:
无法变基:您有未暂存的更改。请提交或隐藏它们。
这是git merge情景。当我合并时,New merge commit被创建,所以如果我从 返回New merge commit,我可以看到所有Master和Feature分支提交的预定历史记录,直到Common base。这是我不明白的场景:如果我删除Feature分支,我认为 Feature 分支提交会被删除,但实际情况是,当我站在 上时New merge commit,删除Feature分支后,我仍然可以Feature在键入时看到分支提交git log。这怎么可能?我是不是误会了什么?
我假设 git commit hash (5743a31610d38064af35573b91e3bbe39d808b9b) 将始终映射到 0 或 1 git 分支?有没有可靠的方法来跟踪创建 git commit 时的分支名称?据我所知,git 分支是一个指向提交的指针,给定一个提交,我们能否可靠地指向一个分支(如果该分支仍然存在)?
上下文:我正在创建一些 devops 部署更改日志,以便我们可以跟踪我们更改的内容 - 我想知道是否值得命名已发布的 git 分支,或者只是将 git commit 哈希放在那里,我们可以反转如果我们真的想要查找分支名称?
我需要从 git 存储库访问当前获取的提交消息,同时sh在 jenkins 中完成管道不同阶段的一些步骤;但我没有找到任何合适的解决方案。如果我可以将提交消息设置为环境变量,以便我以后可以访问它,那也很好。
请注意,这不是一个重复的问题,因为 stackoverflow 上的类似问题都没有解决我所需要的问题。我需要在sh我的管道的所有步骤中都有提交消息。
每当我尝试通过命令行提交更改时,我都会收到此错误消息:
error: cannot spawn gpg2: No such file or directory
Run Code Online (Sandbox Code Playgroud)
更新:我正在运行 Windows 10
大多数提交都有 1 个父提交。但是,一些提交有多个父级。例如,在--no-ff(无快进)标志下创建的合并提交至少有 2 个父项。
git 中是否有一个命令可以显示特定提交具有的确切父级数量?