假设您有一个包含三个提交A,B和C的历史记录:
A-B-C
Run Code Online (Sandbox Code Playgroud)
我想将两个提交A和B组合到一个提交AB:
AB-C
Run Code Online (Sandbox Code Playgroud)
我试过了
git rebase -i A
Run Code Online (Sandbox Code Playgroud)
这打开了我的编辑器,其中包含以下内容:
pick e97a17b B
pick asd314f C
Run Code Online (Sandbox Code Playgroud)
我改成这个
squash e97a17b B
pick asd314f C
Run Code Online (Sandbox Code Playgroud)
然后Git 1.6.0.4说:
Cannot 'squash' without a previous commit
Run Code Online (Sandbox Code Playgroud)
有办法还是不可能?
我遇到了硬盘故障导致Git存储库的某些文件损坏.运行时,git fsck --full我得到以下输出:
error: .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack SHA1 checksum mismatch
error: index CRC mismatch for object 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129
error: inflate: data stream error (invalid code lengths set)
error: cannot unpack 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129
error: inflate: data stream error (invalid stored block lengths)
error: failed to read object 0dcf6723cc69cc7f91d4a7432d0f1a1f05e77eaa at offset 276988017 from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack
fatal: object 0dcf6723cc69cc7f91d4a7432d0f1a1f05e77eaa is corrupted
Run Code Online (Sandbox Code Playgroud)
我有存储库的备份,但包含包文件的唯一备份已经损坏了.所以我认为我必须找到一种方法从不同的备份中检索单个对象,并以某种方式指示Git生成一个只有正确对象的新包.
你能否告诉我如何修复我的存储库?
在我的应用程序中,我随机生成文件.为了确保独特的命名,我尝试使用自1970年1月1日以来的纳秒时间:
long time = DateTime.Now.Ticks;
String fileName = Convert.ToString(time);
Console.WriteLine(fileName);
Run Code Online (Sandbox Code Playgroud)
现在我发现了一些奇怪的东西.为什么输出是这样的?我的意思是为什么最后4个数字总是一样的?我可以使用它作为文件名,这不是问题,但我只是想知道它.
634292263478068039
634292263512888039
634292263541368039
634292263603448039
634292263680078039
Run Code Online (Sandbox Code Playgroud) 由于Google Maps API在以色列不可用(请参阅此处),我想使用OpenStreetMap.我对所有不同的地理编码方式感到困惑,即找到lat,地址为long.
我也在寻找最佳的路由方式,即使用OSM在两个位置之间显示路由.
我在客户端上寻找JavaScript,在我的服务器上寻找.NET.
我也在寻找一种可以与希伯来语中的名字一起使用的解决方案,但我不认为这是一个限制.
我注意到,在C#中我使用非常短的变量名称.我的代码被污染了
foreach(var (v|f|i) in SOMETHING)
for(int (i|n|z)=0
var (ret|r) = blah();
...
return ret;
var sw = new StringWriter();
using(var r = cmd.ExecuteNonQuery()) {
while(r.Read()) {
r.GetSomething(3)
Run Code Online (Sandbox Code Playgroud)
我不知道这是坏还是不好.我当然可以读它.我没看过5个月前或更早的代码所以我不能说我是否理解旧代码.我的所有函数都很简短并且做了一件事,所以通过阅读函数可以很好地了解变量是什么,特别是因为函数中的函数是<= 5vars.
人们常常大吼大叫我没有使用好的变量名.我没有使用好的变量名称或者这样可以吗?
在尝试使用迭代器块之后,我注意到生成的IL代码不是我期望的那样.而不是try-finally块,生成了一个try-fault块,这是我从未见过的.我注意到编译器不允许我在'手写'C#中使用fault关键字.
2之间有什么区别吗?
C#代码:
static IEnumerable<string> ReadAllLines(string fileName)
{
using (var file = System.IO.File.OpenText(fileName))
{
string s;
while ((s = file.ReadLine()) != null)
{
yield return s;
}
}
}
Run Code Online (Sandbox Code Playgroud)
MSIL代码:
.method private hidebysig newslot virtual final instance bool MoveNext() cil managed
{
.override [mscorlib]System.Collections.IEnumerator::MoveNext
.maxstack 3
.locals init (
[0] bool CS$1$0000,
[1] int32 CS$4$0001,
[2] string CS$0$0002,
[3] bool CS$4$0003)
L_0000: ldarg.0
// try body
L_008d: leave.s L_0097
L_008f: ldarg.0
L_0090: call instance void ConsoleApplication2.Program/<ReadAllLines>d__0::System.IDisposable.Dispose()
L_0095: nop
L_0096: endfinally …Run Code Online (Sandbox Code Playgroud) Chocolatey如何确定本地系统上安装了哪些软件包?
以某种方式choco list -localonly列出本地安装的包并nuget.exe在此过程中调用.在NuGet我知道packages.config列出已安装的软件包,但在Chocolatey我似乎找不到类似的文件.
宪兵有AvoidAssemblyVersionMismatchRule以下描述:
此规则检查
[AssemblyVersion]匹配两者[AssemblyFileVersion]何时出现在程序集中.部署应用程序后,在两个属性中具有不同的版本号可能会造成混淆.
例如,此规则会警告Microsoft System.dll具有以下属性:
[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("2.0.50727.3053")]
Run Code Online (Sandbox Code Playgroud)
我不同意宪兵的规则.接下来它将使您无法使用类似于Microsoft使用的版本控制方案,即
AssemblyFileVersion每个构建,AssemblyVersion只在公共接口或其他大的变化,AssemblyVersion并AssemblyFileVersion共享一个共同的前缀,我认为这个版本控制方案是为什么能够区分AssemblyVersion和AssemblyFileVersion首先区分的设计原因.
我无法想出为什么强制两个装配属性相等是一个好习惯,但也许你可以!我会对你的意见感兴趣.
如果确实没有充分的理由,我很快会建议宪兵开发者将规则改为
当规则内部存在两个前缀时,此规则检查
[AssemblyVersion]并且具有公共的非空前缀.[AssemblyFileVersion]
在我的C++ DLL中的一个函数中,我将一个std :: string返回给我的c#应用程序.它几乎看起来像这样:
std::string g_DllName = "MyDLL";
extern "C" THUNDER_API const char* __stdcall GetDLLName()
{
return g_DllName.c_str();
}
Run Code Online (Sandbox Code Playgroud)
但是当我的C#代码调用此函数时,我在输出窗口中收到此消息:
Invalid Address specified to RtlFreeHeap( 00150000, 0012D8D8 )
Run Code Online (Sandbox Code Playgroud)
c#中的函数声明如下所示:
[DllImport("MyDll", EntryPoint = "GetDLLName")]
[return: MarshalAs(UnmanagedType.LPStr)]
public static extern string GetDLLName();
Run Code Online (Sandbox Code Playgroud)
从我在网上找到的内容来看,有时这个消息会出现在与删除一起使用的新版本(调试版或发布版等)之间存在不一致的情况.但我不确定这是不是我的情况.所以我不确定究竟是什么导致了它.也许MashallAs可能与它有关?
有任何想法吗?
谢谢!
Visual Studio - 确定项目中没有项目代码行 - 这在VS 2008中是否可行?
c# ×4
.net ×3
git ×2
api ×1
assemblyinfo ×1
attributes ×1
c++ ×1
chocolatey ×1
cil ×1
code-metrics ×1
coding-style ×1
corruption ×1
datetime ×1
gendarme ×1
geocode ×1
git-rebase ×1
marshalling ×1
rebase ×1
routing ×1
string ×1
variables ×1
versioning ×1