GitSalt Docs
API & 개발자 가이드
Git Data API
여러 파일을 한 번의 커밋으로 저장소에 반영하는 low-level API입니다.
모든 엔드포인트는 Authorization: token <TOKEN> 헤더가 필요합니다.
1. Blob 생성
파일 내용을 git 오브젝트로 저장하고 SHA를 반환합니다.
POST /api/v1/repos/{owner}/{repo}/git/blobs
요청
{
"content": "base64로_인코딩된_내용",
"encoding": "base64" // 또는 "utf-8"
}
응답
{
"sha": "3a0f86fb8...",
"url": "https://gitsalt.com/api/v1/repos/user/repo/git/blobs/3a0f86fb8...",
"size": 1024
}
2. Tree 생성
여러 blob을 묶어 디렉터리 구조(tree)를 만듭니다. base_tree를 지정하면 기존 트리 위에 덮어씁니다.
POST /api/v1/repos/{owner}/{repo}/git/trees
{
"base_tree": "현재_tree_SHA",
"tree": [
{
"path": "src/index.ts",
"mode": "100644",
"type": "blob",
"sha": "3a0f86fb8..."
}
]
}
3. Commit 생성
tree SHA와 부모 커밋으로 새 커밋 오브젝트를 만듭니다.
POST /api/v1/repos/{owner}/{repo}/git/commits
{
"message": "커밋 메시지",
"tree": "tree_SHA",
"parents": ["부모_commit_SHA"],
"author": {
"name": "홍길동",
"email": "hong@example.com",
"date": "2026-08-19T10:00:00Z"
}
}
4. Ref(브랜치) 업데이트
브랜치를 새 커밋 SHA로 이동합니다. git push와 동일한 효과입니다.
PATCH /api/v1/repos/{owner}/{repo}/git/refs/heads/{branch}
{
"sha": "새_commit_SHA",
"force": false
}
전체 흐름 예시
// 1) 현재 브랜치의 최신 commit SHA, tree SHA 조회
GET /api/v1/repos/{owner}/{repo}/branches/{branch}
// 2) 변경된 파일마다 blob 생성
POST /api/v1/repos/{owner}/{repo}/git/blobs → blob_sha[]
// 3) 기존 tree에 blob 반영하여 새 tree 생성
POST /api/v1/repos/{owner}/{repo}/git/trees → tree_sha
// 4) 새 commit 생성
POST /api/v1/repos/{owner}/{repo}/git/commits → commit_sha
// 5) 브랜치를 새 commit으로 이동
PATCH /api/v1/repos/{owner}/{repo}/git/refs/heads/{branch}