Git2go:在 CreateCommit() 之后,所有文件看起来都像是被添加删除

使用 git2go 我在新克隆的目录上执行 AddAll() 和 CreateCommit()。Push() 工作正常,当我将遥控器克隆到另一个地方时,我得到了所有提交的文件。但是如果我调用git status第一个目录,那么我会得到:


(对不起德语,我没有正确的翻译,这意味着分支与起源/主人在同一位置,'gelöscht'手段'deleted'和'Unbeobachtete dateien'手段'unwatched files')


Auf Branch master

Ihr 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/.gitignore


Unbeobachtete 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)

我的代码:


 // Add

repo, 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)


// Commit

sig := &git.Signature{

    Name:  userName,

    Email: userName + "@" + beego.AppConfig.String("userdata::emailserver"),

    When:  time.Now(),

}

commitId, err := repo.CreateCommit("HEAD", sig, sig, message, tree)


// Push

remote, err := repo.LookupRemote("origin")    

err = remote.Push([]string{"refs/heads/master"}, nil, sig, message)

(我把所有的错误处理都去掉了,让它更短)


萧十郎
浏览 128回答 1
1回答

万千封印

您正在打开当前存储库的索引:index,&nbsp;err&nbsp;:=&nbsp;repo.Index()你正在改变它,并创建一个新的树,然后你创建一个提交:err&nbsp;=&nbsp;index.AddAll([]string{},&nbsp;git.IndexAddDefault,&nbsp;nil) treeId,&nbsp;err&nbsp;:=&nbsp;index.WriteTreeTo(repo)与git add命令行不同,AddAll没有将索引写回磁盘。此功能允许您将索引用作数据结构,而无需立即实际暂存更改。(许多 libgit2 函数,如 merge 和 rebase 使用索引作为通用数据结构,您可以继续修改或转换为树。)因此,此时,对索引的所有更改都保留在内存中。如果要保留更改,则必须将索引显式写回磁盘:index.Write()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go