Skip to content

Remotes, Fetch & Push

Remote operations are available via repo.remotes. Network operations (fetch, push) are async.

let remotes = try repo.remotes.list()
for remote in remotes {
print(remote.name, remote.url)
}
try repo.remotes.add(name: "origin", url: "https://github.com/user/repo")
try repo.remotes.remove(named: "origin")
try repo.remotes.rename("old-name", to: "new-name")
try await repo.remotes.fetch(
remote: "origin",
credentials: .token("ghp_yourtoken")
)
try await repo.remotes.fetch(
remote: "origin",
credentials: .token("ghp_yourtoken"),
progress: { p in
print("Objects: \(p.receivedObjects)/\(p.totalObjects)")
}
)
try await repo.remotes.push(
to: "origin",
branch: "main",
credentials: .token("ghp_yourtoken")
)

See Credentials for all authentication options.