1
我有一個存儲庫,但是在某些情況下,本地文件可能會發生更改。我想要做一個git pull,然後用git2go寫更改。在正常的git - 即在終端上我可以做Git2Go抓取或硬拉
git fetch --all
git reset --hard origin/master
因此,我正試圖做使用git2go相同
func Pull(source string, dest string) error {
repo, err:= git.OpenRepository(dest)
remote, err:= repo.LookupRemote("origin")
log.Println(repo) //print repo address
cbs := &git.RemoteCallbacks{
CredentialsCallback: credentialsCallback,
CertificateCheckCallback: certificateCheckCallback,
}
err = remote.SetCallbacks(cbs)
err = remote.Fetch([]string{}, "")
log.Println("fetch error: ", err) //print fetch error
remote_master, err := repo.LookupReference("refs/remotes/origin/master")
mergeRemoteHead, err := repo.AnnotatedCommitFromRef(remote_master)
mergeHeads := make([]*git.AnnotatedCommit, 1)
mergeHeads[0] = mergeRemoteHead
err = repo.Merge(mergeHeads, nil, nil)
log.Println("err: ", err)
repo.StateCleanup() //print merge error
return err
}
它編譯罰款,並似乎運行 - 它記錄錯誤是但是被覆蓋的文件不會改變爲它們遠程的內容。我覺得我缺少的一個關鍵因素...../
我得到的輸出是:
2015/05/19 20:40:15 GitHandler.go:44: &{0x7f46cc000a40}
2015/05/19 20:40:22 GitHandler.go:53: fetch error: <nil>
2015/05/19 20:40:22 GitHandler.go:59: err: <nil>
我不想保留本地更改。我希望應用程序始終複製git存儲庫主分支。然而有時候服務器上的東西可能會改變,所以當一個新的PULL完成時,它會清理所有的變化,以確保拉取成功。也就是說,清洗 - 重置 - 重新設置 - 等同,然後再次拉動。即,我不想保存本地更改。 – amlwwalker