使用 git2go 我在新克隆的目录上执行 AddAll() 和 CreateCommit()。Push() 工作正常,当我将遥控器克隆到另一个地方时,我得到了所有提交的文件。但是如果我调用git status第一个目录,那么我会得到:(对不起德语,我没有正确的翻译,这意味着分支与起源/主人在同一位置,'gelöscht'手段'deleted'和'Unbeobachtete dateien'手段'unwatched files')Auf Branch masterIhr Branch ist auf dem selben Stand wie 'origin/master'.zum Commit vorgemerkte Änderungen: (benutzen Sie "git reset HEAD <Datei>..." zum Entfernen aus der Staging-Area) gelöscht: .gitignore gelöscht: html/.gitignore gelöscht: images/.gitignore gelöscht: json/.gitignore gelöscht: pjs/.gitignore gelöscht: pjs/test37.pjs gelöscht: pjs/test37.png gelöscht: sounds/.gitignoreUnbeobachtete Dateien: (benutzen Sie "git add <Datei>...", um die Änderungen zum Commit vorzumerken) .gitignore html/ images/ json/ pjs/ sounds/我期望的是以下内容:Nothing to commit. No files changed. (or similar)我的代码: // Addrepo, err := git.OpenRepository(dir)index, err := repo.Index()err = index.AddAll([]string{}, git.IndexAddDefault, nil)treeId, err := index.WriteTreeTo(repo)tree, err := repo.LookupTree(treeId)// Commitsig := &git.Signature{ Name: userName, Email: userName + "@" + beego.AppConfig.String("userdata::emailserver"), When: time.Now(),}commitId, err := repo.CreateCommit("HEAD", sig, sig, message, tree)// Pushremote, err := repo.LookupRemote("origin") err = remote.Push([]string{"refs/heads/master"}, nil, sig, message)(我把所有的错误处理都去掉了,让它更短)
1 回答
万千封印
TA贡献1891条经验 获得超3个赞
您正在打开当前存储库的索引:
index, err := repo.Index()
你正在改变它,并创建一个新的树,然后你创建一个提交:
err = index.AddAll([]string{}, git.IndexAddDefault, nil) treeId, err := index.WriteTreeTo(repo)
与git add
命令行不同,AddAll
没有将索引写回磁盘。此功能允许您将索引用作数据结构,而无需立即实际暂存更改。(许多 libgit2 函数,如 merge 和 rebase 使用索引作为通用数据结构,您可以继续修改或转换为树。)
因此,此时,对索引的所有更改都保留在内存中。如果要保留更改,则必须将索引显式写回磁盘:
index.Write()
- 1 回答
- 0 关注
- 127 浏览
添加回答
举报
0/150
提交
取消