GIT: 修改文件并使用相同的 date/time 提交
GIT: Modifying files and commit with same date/time
似乎提交一个内容不同但内容相同的文件并不容易date/time。
以下情况:
- 创建 git 存储库
- 添加一个文件 "foo.bar" 并定义 date/time fpr creating/lastwrite(例如 2015-01-01 00:00:00)
- 提交此文件
- 修改"foo.bar"内容,将date/time再次设置为相同的值
- 调用 "git status" => 无需提交,工作目录干净
- 呼叫 "git commit" => 无变化;没有什么可承诺的
如何强制提交!?
这是使用 libGit2Sharp 的重现代码:
using System.IO;
using LibGit2Sharp;
using System;
namespace GitWorkingUpdateProblem01
{
class Program
{
static void Main(string[] args)
{
const string repoDir = @".\git-Test";
Repository.Init(repoDir);
using (var repo = new Repository(repoDir))
{
string fileName = Path.Combine(repo.Info.WorkingDirectory, "foo.bar");
var dt = new DateTime(2015, 01, 01, 00, 00, 00);
using (var sw = new StreamWriter(fileName, false))
{
sw.WriteLine("UNIQUE-TEXT-1234");
}
File.SetLastWriteTime(fileName, dt); File.SetCreationTime(fileName, dt);
repo.Stage(fileName); repo.Commit("1");
using (var sw = new StreamWriter(fileName, false))
{
sw.WriteLine("UNIQUE-TEXT-4321");
}
File.SetLastWriteTime(fileName, dt); File.SetCreationTime(fileName, dt);
repo.Stage(fileName); repo.Commit("2"); // ==> THROWS: No changes; nothing to commit.
}
}
}
}
即使没有 libgit2sharp
(使用 TortoiseGit 和 msysgit)我也可以重现它。
这是一个已知问题:
https://github.com/msysgit/git/issues/312
https://groups.google.com/forum/#!topic/git-users/Uo9TDppHTSI
我能够通过 运行ning 让它检测变化:
git read-tree HEAD
在控制台中。如果您的图书馆允许您 运行 此(或任意)命令 - 它也可能有所帮助。
无论如何,这是故意对抗git的东西,所以我建议尽可能不要手动更改ModifiedDate
。
似乎提交一个内容不同但内容相同的文件并不容易date/time。
以下情况:
- 创建 git 存储库
- 添加一个文件 "foo.bar" 并定义 date/time fpr creating/lastwrite(例如 2015-01-01 00:00:00)
- 提交此文件
- 修改"foo.bar"内容,将date/time再次设置为相同的值
- 调用 "git status" => 无需提交,工作目录干净
- 呼叫 "git commit" => 无变化;没有什么可承诺的
如何强制提交!?
这是使用 libGit2Sharp 的重现代码:
using System.IO;
using LibGit2Sharp;
using System;
namespace GitWorkingUpdateProblem01
{
class Program
{
static void Main(string[] args)
{
const string repoDir = @".\git-Test";
Repository.Init(repoDir);
using (var repo = new Repository(repoDir))
{
string fileName = Path.Combine(repo.Info.WorkingDirectory, "foo.bar");
var dt = new DateTime(2015, 01, 01, 00, 00, 00);
using (var sw = new StreamWriter(fileName, false))
{
sw.WriteLine("UNIQUE-TEXT-1234");
}
File.SetLastWriteTime(fileName, dt); File.SetCreationTime(fileName, dt);
repo.Stage(fileName); repo.Commit("1");
using (var sw = new StreamWriter(fileName, false))
{
sw.WriteLine("UNIQUE-TEXT-4321");
}
File.SetLastWriteTime(fileName, dt); File.SetCreationTime(fileName, dt);
repo.Stage(fileName); repo.Commit("2"); // ==> THROWS: No changes; nothing to commit.
}
}
}
}
即使没有 libgit2sharp
(使用 TortoiseGit 和 msysgit)我也可以重现它。
这是一个已知问题:
https://github.com/msysgit/git/issues/312
https://groups.google.com/forum/#!topic/git-users/Uo9TDppHTSI
我能够通过 运行ning 让它检测变化:
git read-tree HEAD
在控制台中。如果您的图书馆允许您 运行 此(或任意)命令 - 它也可能有所帮助。
无论如何,这是故意对抗git的东西,所以我建议尽可能不要手动更改ModifiedDate
。