小编vas*_*vas的帖子

如何在Git中有选择地合并或选择来自另一个分支的更改?

我在一个新项目上使用git,该项目有两个并行 - 但目前是实验性的 - 开发分支:

  • master:导入现有的代码库加上一些我一般都知道的mod
  • exp1:实验分支#1
  • exp2:实验分支#2

exp1exp2代表两种截然不同的架构方法.直到我走得更远,我无法知道哪一个(如果有的话)会起作用.当我在一个分支中取得进展时,我有时会在另一个分支中进行编辑,并且只想合并那些.

将选择性更改从一个开发分支合并到另一个开发分支而将其他所有内容合并的最佳方法是什么?

我考虑过的方法:

  1. git merge --no-commit 然后手动取消大量编辑,我不想在分支之间做出共同点.

  2. 手动将公共文件复制到临时目录,然后git checkout移动到另一个分支,然后更多地手动从临时目录复制到工作树中.

  3. 以上的变化.暂时放弃exp分支并使用另外两个本地存储库进行实验.这使得手动复制文件更加简单.

所有这三种方法都显得乏味且容易出错.我希望有更好的方法; 类似于过滤器路径参数的东西会git-merge更具选择性.

git git-merge git-patch git-cherry-pick

1374
推荐指数
22
解决办法
69万
查看次数

使用GIT,我如何有选择地将一个提交的更改合并到另一个'fork'上?

采取这种情况:

  1. 我决定在github.com上"分叉"代码库,并开始执行我的例程:编辑 - 提交 - 推送; 又名hack hack hack.
  2. 在我做了一些更改后,我看到另一个人在同一个项目上做了一些更改,我喜欢它们!
  3. 我决定将它们合并到我的中.问题是,我只想要一个特定提交的"部分",在他做过的几个提交中.

获得这些选择的更改量的最有效方法是什么,合并到我的'fork'中?

git merge pull

79
推荐指数
1
解决办法
3万
查看次数

Git能否真正跟踪单个函数从1个文件到另一个文件的移动?如果是这样,怎么样?

有几次,我遇到过这样的说法:如果你将一个函数从一个文件移动到另一个文件,Git可以跟踪它.例如,这个条目说,"Linus说,如果你将一个函数从一个文件移动到另一个文件,Git会告诉你整个移动过程中单个函数的历史."

但我对Git的一些引擎盖设计有一点了解,我不知道这是怎么回事.所以我想知道......这是正确的陈述吗?如果是这样,这怎么可能?

我的理解是Git将每个文件的内容存储为Blob,每个Blob都有一个全局唯一的标识,该标识来自其内容和大小的SHA哈希.然后Git将文件夹表示为树.任何文件名信息都属于Tree,而不属于Blob,因此文件重命名例如显示为对Tree的更改,而不是Blob.

因此,如果我有一个名为"foo"的文件,其中包含20个函数,以及一个名为"bar"的文件,其中包含5个函数,我将其中一个函数从foo移动到bar(分别生成19和6), Git如何检测到我将该函数从一个文件移动到另一个文件?

根据我的理解,这将导致2个新的blob存在(一个用于修改的foo,一个用于修改的条).我意识到可以计算diff以显示函数从一个文件移动到另一个文件.但是我没有看到关于函数的历史如何可能与bar而不是foo相关联(反正不是自动的).

如果Git的是真正看里面单个的文件,并计算每个函数BLOB(这将是疯狂的/不可行的,因为你必须知道如何解析任何可能的语言),那么我可以看到这是可能的.

所以...声明是否正确?如果它是正确的,那么我理解中缺少什么?

git git-diff git-log

66
推荐指数
4
解决办法
8415
查看次数

有没有办法在JetBrains IDE之间同步设置?

JetBrains IDE中同步类似设置的最佳方法是什么?例如,我有PyCharmPhpStorm,它们都支持CSS和HTML,我想让PyCharmPhpStorm的所有语法着色,检查等都相同.同样,我在两个IDE中都有TODO模式,我想要同步.

有没有办法实现这个可靠而不繁琐或复杂的方法?

intellij-idea pycharm phpstorm webstorm goland

48
推荐指数
6
解决办法
9406
查看次数

防止不适当的导入并在 Typescript 中强制执行项目层次结构

在 TS 项目中,我希望阻止以下内容:

  • 来自文件夹的文件 common 从文件夹导入 projectA
  • 来自文件夹 projectB 的文件从文件夹导入 projectA

我希望允许以下内容:

  • 从文件夹 projectA 导入的文件common

我知道参考文献。但是,据我了解,它们需要构建用于类型检查(如果进行了这种分离,则必须先构建以创建 d.ts 文件),我宁愿避免这种情况。

我有哪些选择?是否可以简单地通过每个项目/文件夹的单独 tsconfig 文件来实现?

dependency-management typescript typescript3.0

14
推荐指数
2
解决办法
3004
查看次数

如何将 Markdown 解析为 AST,对其进行操作,然后将其写回 Markdown?

我想以编程方式修改 Markdown 文件。

我一直在研究 Markdown 解析器并尝试了其中的一些;即 Marked、Markdown-it 和 Commonmark。他们允许访问 AST,这使我可以轻松修改内容。

问题是它们仅呈现为 HTML。我找不到任何有关渲染回 Markdown 的信息。

我现在看到两个选择,要么为这些库之一编写自定义渲染器(这将非常耗时),要么使用单独的工具将 HTML 转换回 Markdown。

有更简单的选择吗?为什么 Markdown 解析器只渲染为 HTML?

javascript markdown abstract-syntax-tree

13
推荐指数
1
解决办法
5914
查看次数

“这个表达式不可调用。联合类型的每个成员......都有签名,但这些签名都不互相兼容。” 为什么?

如何在打字稿中连接联合类型的数组?

当我尝试使用concat联合类型的数组时,出现以下错误:

该表达式不可调用。联合类型的每个成员 '{ (...items: ConcatArray<{...}>[]): { ... }[]; (...项目: ({ ... } | ConcatArray<{ ...; }>)[]): { ...; }[]; } | { ...; }' 有签名,但这些签名都不相互兼容。

CodeSandbox:https://codesandbox.io/s/modern-breeze-qt9mb?file=/src/index.ts

代码示例:

const arr1 = [
  { val1: 1, val2: 2, val3: 3 },
  { val1: 11, val2: 22, val3: 33 }
];

const arr2 = [
  { val1a: "1a", val2a: "2a", val3a: "3a" },
  { val1a: "11a", val2a: "22a", val3a: "33a" }
];

const arr3 = [
  { foo: "lfsfs", …
Run Code Online (Sandbox Code Playgroud)

ecmascript-5 typescript

11
推荐指数
1
解决办法
3万
查看次数

如何使用 Enum 类型的字段执行 Typesafe JSON?

我有一些符合我定义的 TypeScript 接口的 JSON 文件。

大多数情况下,在导入此类 JSON 文件并将它们分配给类型化变量时,TypeScript 能够自动推断类型签名(参见behaves exactly as I want下面的代码)。但是,当类型包含字符串 enums 时,它不再起作用(请参阅参考资料DOES NOT behave)。

以下是一个工作最小、可重现的示例

有效的.json

{ "id": 3.14159 }
Run Code Online (Sandbox Code Playgroud)

无效的.json

{ "id": "3.14159" }
Run Code Online (Sandbox Code Playgroud)

有效枚举.json

{ "color": "red" }
Run Code Online (Sandbox Code Playgroud)

无效枚举.json

{ "color": "chartreuse" }
Run Code Online (Sandbox Code Playgroud)

索引.ts

import validJson from './valid.json'
import invalidJson from './invalid.json'
import validJsonEnum from './validEnum.json'
import invalidJsonEnum from './invalidEnum.json'

type ColorType = 'red' | 'blue' | 'yellow'

type IJsonType = {"id": number}
type IJsonTypeWithEnum = …
Run Code Online (Sandbox Code Playgroud)

enums json typescript

10
推荐指数
2
解决办法
1438
查看次数

`brew list` 显示了许多我没有安装的东西。为什么?如果安装的某些东西取决于它们,我怎么知道?

在一台新机器上,我使用brew只安装了四个东西:gitnode和。后来,当我跑步时,我被告知许多其他我没有安装的东西都是“过时的”。我跑了并得到以下信息:sqlitelessbrew updatebrew list

brotli              less               pcre2
c-ares              libnghttp2         python@3.9
ca-certificates     libuv              readline
gdbm                mpdecimal          sqlite
gettext             ncurses            xz
git                 node
icu4c               openssl@1.1
Run Code Online (Sandbox Code Playgroud)

这些是从哪里来的?如果它们是因为安装git或需要它们nodeless安装的,我如何找到?

macos homebrew package-managers

10
推荐指数
1
解决办法
3101
查看次数

尝试运行“git rebase --continue”时出现错误,无法锁定引用“refs/heads/Head-feature”

我正在运行命令git rebase --continue并收到错误:

error: update_ref failed for ref 'refs/heads/HEAD-feature': cannot lock ref 'refs/heads/HEAD-feature': is at db50dd34de1e90c0616bf9318be489ee8d9a012a but expected 83f09532b2352418c0f562f48929dc504e6a0452 error: could not update refs/heads/HEAD-feature

我查看了几个类似的问题,但没有一个答案有效。

我尝试了以下方法:

1. git update-ref -d refs/remotes/origin/HEAD-feature
2. git --no-optional-locks fetch --prune origin
3. git gc --prune=now
4. git remote prune origin
Run Code Online (Sandbox Code Playgroud)

我发现克服这个问题的唯一方法是这样做git rebase --abort,但随后我会丢失在交互式变基期间所做的所有更改。有任何想法吗?

git git-rebase

10
推荐指数
1
解决办法
1万
查看次数