我需要编写一个脚本,为SHA1提交号列表创建补丁.
我尝试过使用git format-patch <the SHA1>
,但是从那个SHA1开始为每个提交生成一个补丁.在生成几百个补丁之后,我不得不杀死这个过程.
有没有办法只为特定的SHA1生成补丁?
情况:
这样:
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
Run Code Online (Sandbox Code Playgroud)
然后我开始研究quickfix2,但不小心将quickfix1作为源分支进行复制,而不是master.现在quickfix2处于X + 2提交+ 2相关提交.
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
\
q2a--q2b (quickfix2 HEAD)
Run Code Online (Sandbox Code Playgroud)
现在我希望有一个quickfix2分支,但没有属于quickfix1的2次提交.
q2a'--q2b' (quickfix2 HEAD)
/
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
Run Code Online (Sandbox Code Playgroud)
我尝试从quickfix2中的某个修订版创建补丁,但补丁不保留提交历史记录.有没有办法保存我的提交历史记录,但有一个分支没有更改quickfix1?
我的客户端如何应用git diff
未安装git 创建的补丁?我试图使用patch
命令,但它总是要求文件名修补.
我有2个git本地存储库,它们都指向同一个远程存储库.
在一个git存储库中,如果我这样做git format-patch 1
,如何将该补丁应用于其他存储库?
我正在寻找从最后一次提交创建补丁的神奇命令.
我的工作流程有时看起来像这样
vi some.txt
git add some.txt
git commit -m "some change"
Run Code Online (Sandbox Code Playgroud)
现在我只想写
git create-patch-from-last-commit-to-file SOME-PATCH0001.patch
Run Code Online (Sandbox Code Playgroud)
但是我应该把它放在那里而不是create-patch-from-last-commit-to-file
?
我最近发现了git 命令的patch
选项add
,我必须说它真的是一个很棒的功能.我还发现通过s按键可以将大块子分成较小的块,这增加了提交的精度.但如果我想要更精确,如果分裂的大块不够小怎么办?
例如,考虑这已经拆分的大块头:
@@ -34,12 +34,7 @@
width: 440px;
}
-/*#field_teacher_id {
- display: block;
-} */
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
+#user-register form.table-form .field-type-checkbox label {
width: 300px;
}
Run Code Online (Sandbox Code Playgroud)
如何仅将CSS注释删除添加到下一次提交?该s
选项不再可用!
我PUT
在我的Rails应用程序中使用了一个请求.现在,PATCH
浏览器已经实现了一个新的HTTP动词.所以,我想知道PATCH
和PUT
请求之间的主要区别是什么,以及什么时候应该使用其中一个.
我在一个分支上有八个提交,我想通过电子邮件发送给一些不是git开悟的人.到目前为止,我所做的每件事都给了我8个补丁文件,或者从一开始就开始给分支历史上每次提交的补丁文件.我使用git rebase --interactive来压缩提交,但是现在我尝试的所有内容从一开始就给了我数以万计的补丁.我究竟做错了什么?
git format-patch master HEAD # yields zillions of patches, even though there's
# only one commit since master
Run Code Online (Sandbox Code Playgroud) 有很多程序可以创建一个差异补丁,但我有一点时间试图应用一个.我正在尝试分发补丁,我从用户那里得到了一个关于如何应用补丁的问题.所以我试着自己搞清楚,发现我没有线索,我能找到的大多数工具都是命令行.(我可以处理一个命令行,但是很多人在没有友好的GUI的情况下会丢失.所以这些都不利于此目的.)
我尝试过使用TortoiseSVN.我有我想申请的补丁.我右键单击补丁,TortoiseSVN子菜单下有一个选项,上面写着"Apply patch".它只是拉出一个空窗口.
所以我试着点击Open.它有两个选项:合并和应用统一差异.(幸运的是,补丁采用统一的差异格式.)但是普通的apply选项不起作用:它要求补丁和文件夹.不知怎的,它忘了要求文件应用补丁!所以TortoiseSVN只是简单的不起作用.是否有基于Windows GUI的实用程序,它将获取补丁和文件并正确应用它?
编辑:看看到目前为止的回复,似乎Tortoise只会在它已经版本化的文件中正确执行.情况并非如此.我需要能够将补丁应用于不是来自SVN存储库的文件.我只是尝试使用Tortoise,因为我碰巧知道SVN使用差异并且必须知道如何创建它们并应用它们.
我在基于WordPress的项目上工作,我想在每个新版本的WP上修补我的项目.为此,我想在两个提交或标签之间生成一个补丁.
例如,在我的回购中,/www/WP
我这样做:
$git patch-format com1..com2 --stdout > ~/patchs/mypatch.patch
要么
$git patch-format tag1..tag2 --stdout > ~/patchs/mypatch.patch
/www/WP
git natif WordPress
/www/myproject
我的git项目基于WordPress
该git apply
命令行是不行的,我想是因为我们是在不同的存储库.
我可以生成一个没有提交的补丁文件,只是一个差异并将其应用到另一个git存储库吗?
谢谢你.