我有一个简单的存储库,其中包含线性的提交历史记录,例如:
[A] -> [B] -> [C] -> [D] -> [E] ...
Run Code Online (Sandbox Code Playgroud)
我基本上需要删除提交A和B,所以我想我会创建一个新的存储库,并希望实现类似的东西:
[X] -> [C] -> [D] -> [E] ...
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个新的存储库,手动创建了提交X,它从A和B获取存储相关信息,现在需要一个命令,它将从原始存储库中提交C,D,E等提交,并将其放在我的新存储库之上提交X.
怎么做?
编辑:我建议的樱桃挑选方法有两个问题:
git branch -D myoriginalrepo/master,它表示没有这样的分支存在,而我可以在我的GUI工具中清楚地看到这些提交.我在新发布的VS 2015中看到了这一点:

但是,单击它不会做任何事情(也尝试双击,大喊大叫等).如何与这个元素进行交互?
如果我选择RavenDB作为一个相当标准的类似CMS的Web应用程序,与SQL Server相比,我会失去什么?
编辑:标题中有一个"好处",这是一个有点争议的术语.也许我应该说"可能性"或"功能"之类的东西,希望我很清楚我追求的是什么.
想到的一些事情(但我是RavenDB的新手,所以这只是一些建议,有些可能是错的,我希望有人会提供更完整和准确的列表):
一个更完整/准确的列表将不胜感激.
(注意:我并不是说我需要所有这些(或任何),我只是想了解如果我选择RavenDB会有什么不可用.另外,请不要讨论RavenDB的优势,我知道他们很容易从官方网站上消化.)
假设在我的TypeScript项目中,我使用Express和这样的方法:
response.send('Hello');
Run Code Online (Sandbox Code Playgroud)
我想看看该send()方法是如何实现的.但是,当我按住Ctrl键并单击WebStorm中的方法名称时,它会将我带到一个.d.ts文件(TypeScript定义)而不是真正的源.可以理解,但有点不愉快.什么是最简单的来源?
我的用例:请求的RequestResponse类型定义缺少body属性,如下所示:
declare namespace request {
// ...
export interface RequestResponse extends http.IncomingMessage {
request: Options;
}
// ...
}
declare var request: request.RequestAPI<request.Request, request.CoreOptions, request.RequiredUriUrl>;
export = request;
Run Code Online (Sandbox Code Playgroud)
我试图通过创建一个这样的request-fix.d.ts文件来修复它:
import * as http from 'http';
declare namespace request {
export interface RequestResponse extends http.IncomingMessage {
body: any;
}
}
Run Code Online (Sandbox Code Playgroud)
但它没有效果.我的最终目标是在我身上app.ts,我可以这样做:
import * as rp from 'request-promise';
import { RequestResponse } from 'request';
let response = rp.get(url);
response.statusCode; // works
response.body; // doesn't …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个包含主要内容区域和侧边栏的网站,类似Stack Overflow上的内容.目标是当您向下滚动时,侧边栏保持可见.
我见过两种方法:
position:fixed;方法没有.1,据我所知,当视口小于侧边栏内容时会出现问题所以我想这是不能可靠使用的,我见过的JavaScript脚本通常是动画的或者通常是"慢"的(你可以看到)每次滚动后都会重新绘制).
有人能指出一个不会受上述问题影响的JavScript库/ CSS方法吗?
编辑:一个例子是这个页面, 但侧边栏没有动画时粘在顶部,并且当侧边栏高于内容/视口时正确处理情况.
我想要这样的功能:
export async function* iterateDir(dir: string) {
let list = await fs.readdir(dir); // fs-promise implementation of readdir
for (let file of list) {
yield file;
}
}
Run Code Online (Sandbox Code Playgroud)
我会用的是:
for (let file in iterateDir(dir)) {
processFile(file);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为函数不能同时是异步和生成器.
我将如何构造代码以实现相同的目标?
await fs.readdirto回调,我假设外部for..of循环不会等待.iterateDir()将会很慢.供参考:异步生成器功能提议
在 Dockerfiles 中,我已经习惯于看到这种模式(在Docker 的最佳实践中也有说明):
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)
最近,我经常遇到这样的模式:
RUN set -ex; \
apt-get update; \
apt-get install -y curl; \
rm -rf /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)
我想知道有什么区别。我试过这个:
$ (echo one; exit 0) && (echo two; exit 0)
one
two
$ (echo one; exit 1) && (echo two; exit 0)
one
$ (echo one; exit 1) ; (echo two; exit 0)
one
two
$ set -ex; (echo one; exit 1) ; …Run Code Online (Sandbox Code Playgroud) 注意:有一个类似的问题How to keep commit hashs not change when use git filter-repo rewrite the History,但答案集中在Git如何不能做到这一点上。在这个问题中,我想探讨理论上是否可以编写自定义脚本来保留提交哈希值。
Gitfilter-branch和BFG Repo-Cleaner是两种流行的工具,用于从存储库历史记录中删除大文件和其他内容。它们导致不同的提交 SHA/散列,这就是 Git 的工作方式,因为它“指纹”提交的内容、其父项等。
然而,我们面临的情况是,不久前发生了不幸的大文件提交,并且我们有各种对较新提交的引用,例如在 GitHub 问题(“参见提交 f0ec467”)和其他外部系统中。如果我们使用过滤器分支或 BFG,很多东西都会被破坏。
所以我来这里询问是否有一些肮脏的、低级的技巧如何保留提交 ID / SHA-1,即使是重写提交。我想,对于我们想要重写的错误提交,自定义脚本将创建一个新的 Git 对象,但“硬编码”相同/旧的 SHA-1,跳过它的计算。我认为较新的提交(其子级/后代)应该继续工作(?!)。
如果这行不通,我想了解为什么。Git 是否定期检查哈希值是否与实际内容一致?它是否仅在某些操作(例如gc推或拉)期间执行此操作?
(我知道这是一个非常薄冰的情况,在我们接受我们将永远在我们的仓库中拥有一个大型二进制文件之前,我只是在技术上探索我们的选择,其所有影响包括永远拥有更大的备份,完整克隆需要更长的时间, ETC。)
更新:现在有一个被接受的答案,但与此同时,没有答案提到git replace这可能是解决方案?我已经做了一些基本实验,但还不确定。
我需要从我的.NET代码访问一些DVCS,因为我熟悉Mercurial和Git,其中一个有更好的.NET客户端库?我并不仅仅意味着一个包装器,我的意思是一个完整的.NET实现,不需要在后台进行任何命令行调用.
注意:如果答案是Bazaar或其他我不熟悉的DVCS,那没关系,实际的DVCS并不重要.
编辑:我正在寻找那些实际尝试过.NET客户端并能判断其质量的人的答案.
git ×3
typescript ×3
javascript ×2
.net ×1
async-await ×1
bash ×1
comparison ×1
css ×1
docker ×1
dockerfile ×1
dom ×1
generator ×1
html ×1
mercurial ×1
ravendb ×1
resharper ×1
roslyn ×1
sql-server ×1
webstorm ×1