업스테이지 경진대회 서버 초기 설정하기 (←클릭)

APT 업데이트

apt update

APT란?

  • Advanced Package Tool의 약자로 Debian시스템에 포함된 핵심 도구들의 집합체이다. 즉, 우분투에서 쓰이는 데비안 계열의 패키지를 관리하는데 쓰이는 도구이다. Apt를 활용해 다음과 같은 작업들을 처리할 수 있다.
  • 응용 프로그램 설치
  • 응용 프로그램 삭제
  • 응용 프로그램을 항상 최신 버전으로 유지하기
  • 그 이상 작업들...

SUDO 설치

apt install sudo

sudo란?

  • Super Usder Do의 약자(최근에는 Substitute User Do도 쓰임)
  • 유닉스 및 리눅스 계열에서 다른 사용자의 보안 권한과 관련된 프로그램을 구동할 수 있게 도와주는 것
  • etc/sudoers파일에 지정된 사용자만 sudo명령어를 사용 가능
  • 현재 계정에서 다른 계정의 권한만 빌림
  • root가 아닌 사용자가 root에 준하는 능력으로 sudo 다음에 나오는 명령을 실행하게 하는 명령어.
  • 슈퍼유저, 관리자 권한을 가지지만, 근본적으로 해당 사용자가 내리는 명령

Git 설치

sudo apt install git -y


Git 원격 저장소 클론 (방법1: SSH)

SSH 키 설정 확인

참고 블로그

SSH를 사용한 접근 방식입니다.
먼저 SSH 키가 설정되어 있는지 확인해야 합니다.
SSH 키가 있는지 확인:

ls ~/.ssh
id_rsa 또는 id_ed25519 파일이 있다면 이미 SSH 키가 생성된 상태입니다.

없으면 새 SSH 키를 생성:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
생성된 키는 ~/.ssh/id_rsa와 ~/.ssh/id_rsa.pub에 저장됩니다.
깃헙 이메일 넣는게 좋지만 필수는 아님

Enter file in which to save the key (/root/.ssh/id_rsa):
키를 기본 위치에 저장하려면 그냥 Enter를 누릅니다:

Enter passphrase (empty for no passphrase): [비밀번호 입력 또는 Enter]
Enter same passphrase again: [비밀번호 재입력 또는 Enter]

키를 보호하기 위해 비밀번호를 입력할 수 있습니다.
입력하지 않고 그냥 Enter를 누르면 비밀번호 없이 키가 생성됩니다.

완료되면 다음 메세지가 나옵니다.
Your public key has been saved in "SSH가 저장된 경로"

키를 복사합니다
cat "위에서 나온 SSH가 저장된 경로"
업스테이지 서버에서 경로 예시 /root/.ssh/id_rsa.pub

깃헙에 SSH키를 저장합니다
GitHub > Settings > SSH and GPG keys > New SSH key > 붙여넣기.

서버에서 깃헙에 연결합니다(아래 이메일은 깃헙 기본이므로 변경X)
ssh -T git@github.com

성공 메시지가 표시되면 SSH 설정이 완료된 것입니다.
Hi 이름! You've successfully authenticated

Git 저장소 클론:

저장소 클론

원하는 디렉토리로 이동: cd /path/to/your/directory


git clone "깃헙 저장소 SSH 주소"

Git 클론되었으면, 깃 프로필 설정 (해야 push가 됩니다)

git config user.name "깃헙 프로필에 있는 이름"

  • 로컬 Git 설정에서 커밋에 표시될 이름입니다. 이 이름은 GitHub 계정의 이름과 일치할 필요는 없고, 원하는 이름을 자유롭게 사용할 수 있습니다
  • 협업 시 커밋에 표시될 이름이므로 인식 가능한 이름(실제 이름 또는 닉네임)을 사용하는 것이 좋습니다.

git config user.email "깃헙 프로필에 있는 이메일"

git config --list 제대로 설정되었는지 확인하기


Git 사용

  • 수정한 내용 전부 Stage로 올리기 git add .
  • Stage에 올린 내용 전부 commit git commit -m "수정한 내용"
  • github에 저장 git push
  • 혹시 충돌나면, git rebase로 github에 있는 내용 한번 땡겨받고 다시 git push

(잘 안 됨)

Git 원격 저장소 클론 (방법2: Token)

git clone "원격저장소URL"

  • 비밀번호 입력하라고 나오면
  • github 사이트 우측 상단에 본인 프로필사진 누르고
    -> Settings
    -> Developer Settings
    -> Personal access tokens
    -> Tokens(classic)
    -> Generate new token (유효기간이 1달인 토큰이 발급됩니다)
    -> 발급된 토큰 (복잡한 비밀번호같이 되어있음)을 서버에서 비밀번호 요청하는 곳에 넣어주시면 됩니다.
  • 간혹 인증이 잘 안 되었다고 뜨면 아래 명령어를 차례로 실행해 본다.
    • git remote set-url origin https://<YOUR_TOKEN>@github.com/UpstageAILab5/upstageailab-ir-competition-ir_s3.git

    • git config --global credential.helper cache
      • git config --global credential.helper store

경진대회 종료 후 github 프로필에 pinned repository 부분에 경진대회 참여 repository 올려놓기

  • Upstage AI Lab 경진대회/프로젝트 참여한 저장소(repository)는 Upstage AI Lab 깃헙 조직에 저장됩니다
  • 저희가 참여한 저장소를 개인 저장소로 fork하고, 프로필 부분에 pinned repository로 올려놓으려고 하니 목록에 안 보여서 fork한 repository 세팅에서 private을 public으로 바꿀려고 하니 비활성화가 되어있더라구요
    • GPT에게 물어보니 : 포크한 원본 레포지토리가 Private(비공개) 상태일 경우, 깃헙 정책상 포크된 레포지토리의 공개 여부를 변경할 수 없도록 제한합니다. 이는 보안 및 원본 데이터 보호를 위해 설정된 깃헙의 기본 정책입니다.

fork한 걸 그대로 올리지 말고,

  1. Upstage AI Lab에 있는 저장소를 내 깃헙 저장소로 fork 하고
  2. 내 깃헙에 별도의 새로운 저장소를 만들고
  3. 위 1번에서 fork해온 저장소를 로컬에 클론하고
  4. 클론한 저장소를 위 2번에서 만든 저장소에 push하라고 하였습니다.
    • git remote remove origin 현재 연결된 원격저장소의 주소를 지우기
    • git remote add origin <새 리포지토리 URL> 새 저장소 주소 등록
    • git push -u origin main 연결된 새 저장소로 fork해온 자료 push


Git 클론되었으면, 깃 프로필 설정 (해야 push가 됩니다)

git config user.name "깃헙 프로필에 있는 이름"

  • 로컬 Git 설정에서 커밋에 표시될 이름입니다. 이 이름은 GitHub 계정의 이름과 일치할 필요는 없고, 원하는 이름을 자유롭게 사용할 수 있습니다
  • 협업 시 커밋에 표시될 이름이므로 인식 가능한 이름(실제 이름 또는 닉네임)을 사용하는 것이 좋습니다.

git config user.email "깃헙 프로필에 있는 이메일"

git config --list 제대로 설정되었는지 확인하기


Git 원격 저장소 클론 (방법3: Github Desktop 설치)

apt install sudo

sudo apt update

sudo apt install git

sudo apt install gnupg

wget -qO - https://packagecloud.io/shiftkey/desktop/gpgkey | sudo apt-key add -

sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/shiftkey/desktop/any/ any main" > /etc/apt/sources.list.d/packagecloud-shiftkey-desktop.list'

sudo apt-get install github-desktop

git config --global user.name "Your Name"

git config --global user.email "your.email@example.com"


VSC에서 깃헙 아이콘 눌르기 -> Clone Repository로 저장소 클론하기.

대용량 파일 업로드 (100MB 이상)

  • 깃헙은 소스 코드 등 텍스트 파일 업로드 용도임
  • 큰 파일은 별도의 LFS (Large File Storage)에 저장하고 깃헙에서는 링크만 올라가는 형태임
  • 100MB 이상 파일은 LFS에 올리지 않고 바로 깃헙으로 push 하면 rejected 될 뿐만 아니라, 그 기록이 계속 남아서 매번 30분 정도씩 GPT랑 씨름해 가면서 괴로웠던 기억이 있어서 한 번 시도해 보니 너무 편하고 좋음

LFS

LFS를 통해서 대용량 파일을 저장하기

  • 설치파일 설치
    • sudo apt-get install git-lfs
  • 처음 리포(저장소)에서 사용할 때(instantiate하는 개념)
    • git lfs install
  • LFS에 저장할 고용량 파일 지정
    • git lfs track "*.ckpt" "*.pth"
    • 현재 저장소에서 위 확장자로 된 파일들을 LFS에 저장하겠다는 선언임
    • 이 명령어를 실행하면 .gitattributes 파일이 생성되거나 업데이트되며, 해당 파일에 다음과 같은 내용이 추가됩니다.
    • *.ckpt filter=lfs diff=lfs merge=lfs -text
    • *.pth filter=lfs diff=lfs merge=lfs -text
  • git lfs push --all origin main

여기서부터는 일반 push

  • git add .
  • git commit -m "large file to github 아무말이나 올리고 싶은 메세지 저장"
  • git push

다른 사람이 올린 LFS파일을 깃헙에서 clone이나 pull 하려면 LFS를 설치해야함

  • sudo apt-get install git-lfs
  • git lfs install

실수로 100MB 넘는 고용량 파일을 LFS 처리 없이 push 했을 때 회복하기

  • 해본 건 아닌데 GPT가 하는 말 기록.
  • 한번 실수로 고용량 파일 올리면, 그 기록이 지워지지 않고, 그 이후에 깃헙에 다른 파일들도 push 안 됨.
  • 이것 해제하려면 보통 엄청나게 이것저것 해야 풀리던데... 이렇게 쉽게 되면 좋겠네...
  LFS로 관리할 파일을 다시 스테이징합니다.
  이렇게 하면 LFS 훅이 작동하여 실제 파일 대신 포인터가 스테이징됩니다.
  git add <실수로_올린_대용량_파일>

이전 커밋을 수정합니다. --no-edit 옵션은 커밋 메시지를 그대로 사용합니다.
git commit --amend --no-edit
git push origin <브랜치명>

이 사람 왜 이리 설명을 잘하지..

github 고용량 파일 올리기 설명 유투브 영상 보러가기 (LFS)

LFS 잘 정리된 블로그

profile
AI 클라우드 웹개발자

0개의 댓글