小编don*_*ote的帖子

Cherry-pick并将一系列提交压缩到子目录或子树中

我怎么能告诉樱桃选择一个被压缩的提交范围?

或者换句话说,将两个提交之间的差异应用于存储库的当前状态?

以下就不能正常工作(摘樱桃没有--squash选项):

git cherry-pick --squash e064480..eab48b59c
Run Code Online (Sandbox Code Playgroud)

注意:我的用例是在一个子树场景中 - 在任何人开始争论我不应该压制之前.

以下工作,但后来我有一系列单独的提交.之后,我可以使用交互式rebase手动压缩它们.

git cherry-pick -X subtree=vendor/package e064480..eab48b59c
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以挤压作为樱桃挑选的一部分?

git git-cherry-pick git-squash

53
推荐指数
4
解决办法
2万
查看次数

git diff算法不会破坏功能?(语言识别差异)

是否可以配置git diff来尊重缩进和语法?我不是在谈论忽略缩进和空格,而是使用空行,缩进级别和可能的括号,以帮助将旧行与新行匹配.

例如,git diff经常切换函数及其docblock,如下所示:

 class C {

   /**
+   * Goes to the bar.
+   */
+  function bar() {
+    return 'bar';
+  }
+
+  /**
    * Gets your foo up to date.
    */
   function foo() {
Run Code Online (Sandbox Code Playgroud)

当我愿意的时候

 class C {
+
+  /**
+   * Goes to the bar.
+   */
+  function bar() {
+    return 'bar';
+  }

   /**
    * Gets your foo up to date.
    */
   function foo() {
Run Code Online (Sandbox Code Playgroud)

在这个例子中它仍然是非常无害的,但是有些例子中函数及其docblock由于贪婪和天真的diff实现而被撕裂.

注意:我已经配置*.php diff=php了 …

language-agnostic git diff semantic-diff

47
推荐指数
1
解决办法
1466
查看次数

git cherry-在没有共同历史的提交之间选择差异?

场景:具有完全断开的历史记录的存储库.例如,来自不同的遥控器,没有共同的git历史.(这通常发生在使用git子树的场景中.)

是否有可能在这两个提交之间挑选差异,即使它们没有共同的历史?(并且活动提交与这两者中的任何一个都没有共同的历史)

我试过这个(进入带-X subtree=sub/dir选项的子目录):

git cherry-pick -X subtree=vendor/package aaa/aaa..bbb/bbb
Run Code Online (Sandbox Code Playgroud)

没有子树,这会更简单:

git cherry-pick aaa/aaa..bbb/bbb
Run Code Online (Sandbox Code Playgroud)

其中aaa/aaa和bbb/bbb是两个具有断开历史记录的提交.

不幸的是,这不起作用:aaa/aaa..bbb/bbb不是作为差异读取,而是其他东西.

同样可以显示git show aaa/aaa..bbb/bbb,这是完全不同的git diff aaa/aaa bbb/bbb.例如,如果两者都有相同的文件,那么git diff将为空,但是git show a..b将仅显示b,但不显示a.


注意:我的个人用例是子树背景.我提到这是为了避免人为使用案例,人们通常会开始讨论用例的有效性而不是实际的问题.

理想的答案首先解决一般情况,然后解决子树案例.

git git-cherry-pick

6
推荐指数
2
解决办法
4298
查看次数

图标字体的 CSS font-family 后备?

我的 IDE 检查我的 CSS 文件,并抱怨我是否放置了font-family没有通用后备的规则。一般来说,我必须同意我的IDE,我会很乐意添加字体回调。

例子:

.selector {
  font-family: Arial;  /* IDE complains. */
  font-family: Arial, sans-serif;  /* IDE is happy. */
}
Run Code Online (Sandbox Code Playgroud)

但是,有时 font-family 是一种图标字体(我认为 fontawesome 就是其中之一),并且回退并没有真正意义。或者是吗?

.my-icon {
  font-family: 'my-icon-font';  /* IDE complains. */
  font-family: 'my-icon-font', serif;  /* IDE is happy, but it does not make sense. */
}
Run Code Online (Sandbox Code Playgroud)

是否有任何合理的回退可以将图标字体附加到字体系列规则中?

额外的动机

就我而言,主要是我的 IDE 促使我添加通用字体回调。作为最后的手段,我可​​以禁用、抑制或忽略此检查。

然而,在其他团队中,可能有关于代码约定的严格规则,甚至可能是一种机制,如果他们不遵守就阻止提交。

或者,如果我是代码检查工具的作者,或者正在定义要在项目中使用的编码约定怎么办?那么我肯定想知道什么是“正确”或最聪明的方法来做到这一点:)

css font-family

6
推荐指数
1
解决办法
1969
查看次数

在多重启动时共享Apache/MySQL/PHP设置

简而言之:
我有一台带有Win XP,Windows 7和Ubuntu的多重启动机器,我希望我的localhost web项目能够被所有三个操作系统共享.

详细信息:
我最终想要摆脱Windows XP进行Web开发工作,但是我的本地Apache + PHP + MySQL堆栈与我的旧操作系统相关联,我花了一些时间思考将这种设置调整到它的方式现在.

如果我可以将数据库和Web文件放在独立于当前操作系统的位置,那将是很好的,因此我可以使用不同的操作系统重新启动并继续处理相同的项目.

理想情况下,我还想保留和共享其他应用程序的设置和文件(Firefox插件,Opera键盘快捷键,邮件和聊天帐户,Eclipse设置等),但这可能是另一个问题.

如果可能的话,我想避免严重的性能命中.

最后,一旦我选择了解决方案,如果我能找到一种简单的方法将设置从Windows XP设置移植到新的共享环境,那就太好了.特别是:数据库,htdocs文件夹,vhost设置.

VirtualBox或vmware是解决方案吗?或者便携式应用的东西?或者我应该在每个操作系统上运行单独的Apache/MySQL/PHP,然后让它们共享它们的设置和htdocs文件?

谢谢!

xampp lamp shared localhost multiboot

5
推荐指数
1
解决办法
445
查看次数

Meteor:将多个javascript文件合并为一个?

Drupal可以选择将多个js或css文件"聚合"(即组合)成一个文件,以减少通过网络传输的文件数量.

Meteor有类似的东西吗?显然,对于开发来说,将文件全部分开是更好的.但是在生产中将它们捆绑(并缩小)会很棒.

meteor

5
推荐指数
1
解决办法
1515
查看次数

查找补丁程序适用的第一个或最后一个提交

假设补丁是从过去的特定提交创建的,并且不再适用于HEAD。

我如何找到HEAD历史记录中的第一个提交或更好的最后一个提交,在此补丁中加上“ git apply”?也许有git bisect吗?但是哪个命令会告诉我是否有补丁?

理想情况下,除非有冲突,否则我想返回到该提交,应用补丁,然后基于原始HEAD或与之合并,然后再次进行比较以创建新补丁。在此之后,我想回到原始的HEAD,以便可以继续安装更多补丁。

背景:有许多补丁需要重新发布...(是的,在某些生态系统中,补丁仍然很重要。)

git patch git-bisect git-patch git-apply

5
推荐指数
1
解决办法
214
查看次数

使用php yield / Generator :: send()进行“数据输出流”

我知道yield可以用于创建数据迭代器,例如从CSV文件读取数据。

function csv_generator($file) {    
  $handle = fopen($file,"r");
  while (!feof($handle)) {
    yield fgetcsv($file);
  }
  fclose($file);
}
Run Code Online (Sandbox Code Playgroud)

但是Generator :: send()方法建议我可以对顺序写入而不是读取进行相同的操作。

例如,我想使用这样的东西:

function csv_output_generator($file) {
  $handle = fopen('file.csv', 'w');
  while (null !== $row = yield) {
    fputcsv($handle, $row);
  }
  fclose($handle);
}

$output_generator = csv_output_generator($file);
$output_generator->send($rows[0]);
$output_generator->send($rows[1]);
$output_generator->send($rows[2]);
// Close the output generator.
$output_generator->send(null);
Run Code Online (Sandbox Code Playgroud)

我认为以上方法会起作用。

但是$output_generator->send(null);对于关闭似乎是错误的,还是不理想的。这意味着我永远无法发送原义的null。可以用csv编写,但是也许有一个发送null的用例。

是否有使用PHP生成器进行顺序编写的“最佳实践”?

php php-generators

5
推荐指数
1
解决办法
694
查看次数

git 交互式变基:停止而不提交

(TLDR) 有没有办法在git rebase -i没有提交 ID 的情况下停止编辑?(/TLDR)

更长的版本:

背景

使用git rebase -i,我得到了一个文本编辑器,可以在其中定义命令列表,从pick COMMIT_ID每行开始。

其中一个选项是将“pick COMMIT_ID”替换为“edit COMMIT_ID”,这意味着它将在提交后停止,以便我修改提交,或者进行一些手动操作。然后我就可以继续了git rebase --continue

从选项列表中:

#  e, edit = use commit, but stop for amending
Run Code Online (Sandbox Code Playgroud)

问题

我想知道是否有一个选项可以停止编辑,而不选择任何提交。

动机/用例

例如,如果我想压缩一系列提交,然后停止进行一些手动操作,我必须将编辑 + 压缩放在同一个提交 ID 前面 - 这是不允许的。

相反,我会做这样的事情:

pick COMMIT_0 Change some colors
pick COMMIT_1 Make it faster
squash COMMIT_2 Fix a typo in previous commit
squash COMMIT_3 Fix another typo in previous commit
edit
pick COMMIT_4 Refactor some things
pick …
Run Code Online (Sandbox Code Playgroud)

git rebase git-interactive-rebase

5
推荐指数
1
解决办法
1080
查看次数

.htpasswd没有.htaccess

我想通过.htpasswd保护一个Web文件夹.但是,由于.htaccess文件受版本控制,我宁愿不要乱用它.

相反,我想在
/ etc/apache2/sites-enabled/mysite
/etc/apache2/.htpasswd中进行配置

知道我需要在"mysite"apache配置文件中添加什么内容吗?

到目前为止它是这样的,

<VirtualHost (ip address):80>
  ServerName   my.domain
  DocumentRoot /var/sites/sitename
  ServerAdmin  ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

.htpasswd

4
推荐指数
1
解决办法
3884
查看次数