GitHub 저장소에서 zip 파일을 추출하는 방법은 무엇입니까?

GitHub 저장소에서 zip 파일을 추출하는 방법은 무엇입니까?

GitHub GUI를 사용하면 zip 파일을 저장소에 업로드할 수 있지만 추출할 수는 없습니다.

파일을 직접 업로드할 수 있지만(아카이브되지 않음) 문제는 일부 파일이 디렉터리이고 GitHub GUI에서는 디렉터리 업로드를 허용하지 않는다는 것입니다.

명령줄에서 이 문제를 해결할 수 있는 방법이 있습니까?

답변1

  1. 할 수 없다GitHub에서 zip 파일의 압축을 풉니다. 서버이기 때문에저장GitHub를 사용하지 않으면 컴퓨팅 서비스가 없습니다.행동[주제를 벗어].

  2. 할 수 있는디렉터리와 파일을 추가하는 한 (반복적으로) 업로드하는 데에는 문제가 없습니다. github add .요점 .은 해당 디렉터리에 있는 모든 것입니다.

  3. GitHub [댓글]에서 zip 파일을 다운로드 github clone한 다음 압축을 풀면 컴퓨터[Compute Engine, CPU]에서 수행됩니다. 디렉터리에서 다음을 수행하세요.

    git init
    git add .
    git commit -m "first commit"
    
    • git initgit을 시작하고 .git.
    • git add .폴더, 파일 등을 포함하여 제출하려는 모든 항목을 선택하세요.
    • git commit -m메시지와 함께 커밋을 저장하면 됩니다.
    git add origin master url_from_github_repository
    git push origin master
    
    • addgit에게 원격 주소 [url-server]를 추가하라고 지시하세요.
    • origin원격 주소 [단축키]의 이름이며 무엇이든 가능하므로 입력할 필요가 없습니다.URL매번 [www.github.com/user/repo].
    • master브랜치의 이름입니다. 많은 브랜치를 가질 수 있지만 master일반적으로 변경하는 브랜치는 브랜치입니다.
    • git push커밋 [모든 콘텐츠]를 GitHub.com의 저장소에 업로드하는 것입니다.섬기는 사람].
마침내

대용량 파일[이미지, 비디오, psd]을 서버에 업로드하고 이러한 파일[git]의 변경 사항을 지속적으로 추적하기 위해 타사에서 제공하는 또 다른 서비스가 있지만아니요 업로드GitHub.com으로. 이름은 git lfs. 이것은 git을 사용하는 또 다른 프로그램이므로 먼저 설치해야 합니다.
git 대용량 파일 저장

답변2

나는 이 프로젝트의 저자입니다: https://unzipgit.github.io

설명하다:

Github에서는 저장소에 있는 아카이브의 압축을 풀 수 있는 옵션을 제공하지 않지만 해결책이 있습니다. 이 문제는 Github API(https://docs.github.com/en/rest/repos/contents). 해당 API를 사용하면 저장소에 파일을 업로드할 수 있습니다. 물론 아카이브를 보내면 아카이브가 업로드되지만 아카이브를 구문 분석하고 반복하면 각 파일을 자체 저장소로 보낼 수 있습니다.

개인적인 경험에서도 이 문제가 발생했습니다. 이 솔루션은 생성 이후 Github를 기다려온 것으로 나타났습니다. 종종 그렇듯이, 대기업이 무언가를 구현하기를 기다리기보다는 직접 수행하는 것이 더 쉽습니다.

JavaScript에 대해 이야기하면 JSZip을 사용하여 ZIP 아카이브의 내용을 얻을 수 있습니다(https://stuk.github.io/jszip/). 놀랍게도 이것은 매우 편리한 라이브러리입니다(파일 읽기 모드 선택 덕분에 특히 그렇습니다). 매우 단순화하면 업로드 아카이브는 다음과 같습니다.

// reading the archive
zipFile = await zip.loadAsync(inputArchive, { binary: true });
// loop
for (const [p,f] of Object.entries(zipFile.files)) {
  // read as base64
  base64file = await f.async("base64");
  // upload to github
  await reqest("PUT",`${url}/${fileName}`,{content: base64file});
}

이를 직접 구현하거나 제가 직접 만든 솔루션을 사용할 수 있습니다. 논리는 내가 이미 말한 것과 같습니다. 편의를 위해 컴퓨터에서 아카이브를 보내거나 이미 저장소에 있는 아카이브를 선택하는 기능을 구현했습니다. 두 경우 모두 브라우저는 아카이브를 로드하고 반복하여 각 파일을 저장소로 보냅니다.

관련 정보