일반적인 Git 명령어

GitLab에서 직접 많은 Git 작업을 수행할 수 있습니다. 그러나 고급 작업에는 명령줄이 필요합니다.

로컬 디렉터리를 리포지터리로 변환

로컬 폴더를 리포지터리로 추적하도록 Git에 초기화할 수 있습니다.

  1. 변환하려는 디렉터리에서 터미널을 엽니다.
  2. 다음 명령어를 실행합니다.

    git init
    

    .git 폴더가 디렉터리에 생성됩니다. 이 폴더에는 Git 레코드와 구성 파일이 포함되어 있습니다. 이 파일은 직접 편집해서는 안 됩니다.

  3. 원격 리포지터리의 경로를 추가하여 Git이 올바른 프로젝트로 파일을 업로드할 수 있도록 합니다.

원격 리포지터리 추가

특정 로컬 폴더에 연결된 특정 GitLab 원격 리포지터리를 알려주기 위해 “원격”을 추가합니다. 원격은 Git에게 무엇을 밀어넣거나 당겨올지 알려줍니다.

로컬 사본에 원격을 추가하려면:

  1. GitLab에서 파일을 보관할 프로젝트를 생성합니다.
  2. 이 프로젝트의 홈페이지를 방문하여 기존 폴더 푸시로 스크롤하여 git remote add로 시작하는 명령을 복사합니다.
  3. 컴퓨터에서 초기화한 디렉터리에서 명령을 붙여넣고 Enter를 누릅니다.

    git remote add origin git@gitlab.com:username/projectpath.git
    

원격 리포지터리 보기

원격 리포지터리를 보려면 다음을 입력합니다:

git remote -v

-v 플래그는 자세함을 나타냅니다.

프로젝트의 최신 변경사항 다운로드

프로젝트의 최신 변경 내용에 대해 업데이트된 사본에서 작업하려면 사용자가 만든 모든 변경 사항을 받기 위해 pull합니다. 마지막으로 프로젝트를 클론하거나 풀한 후 사용자가 만든 변경 사항입니다. <name-of-branch> 을 다음 중 하나로 바꿉니다:

  • 기본 브랜치의 이름인 경우(기본 브랜치의 이름을 참조) 메인 브랜치 코드를 사용합니다.
  • 사용 중인 브랜치의 이름인 경우.
git pull <REMOTE> <name-of-branch>

리포지터리를 클론할 때 REMOTE는 일반적으로 origin입니다. 원격은 리포지터리가 클론된 곳이며, 원격 서버의 리포지터리의 SSH 또는 HTTPS URL을 나타냅니다. <name-of-branch>은 보통 기본 브랜치의 이름의 이름입니다. 그러나 다른 기존 브랜치일 수 있습니다. 필요에 따라 이미 존재하는 이름을 가진 원격과 브랜치를 추가로 만들 수 있습니다.

Git의 원격 리포지터리 관리 방법에서 Git이 원격 리포지터리를 관리하는 방법에 대해 자세히 알아볼 수 있습니다.

원격에 다른 URL 추가

push에서 두 개의 원격 리포지터리를 업데이트하도록 다른 URL을 원격에 추가합니다.

git remote set-url --add <remote_name> <remote_url>

Git 참조의 변경사항 표시

Git의 참조는 특정 커밋을 가리키거나 다른 참조를 가리키는 이름입니다. HEAD 참조는 특별합니다. 대개 현제 작업 중인 브랜치의 끝을 가리키는 참조를 가리킵니다:

$ git show HEAD
commit ab123c (HEAD -> main, origin/main, origin/HEAD)

로컬 리포지터리에서 참조가 변경되면 Git은 참조 로그에 변경 사항을 기록합니다. 참조의 이전 값들을 찾아야 하는 경우 참조 로그 내용을 표시할 수 있습니다. 예를 들어, 변경을 되돌리기 위해 HEAD의 변경사항을 표시하고 싶을 수 있습니다.

HEAD의 변경 내용 디렉터리을 표시하려면:

git reflog

파일의 Git 히스토리 확인

파일의 Git 히스토리를 확인하는 기본 명령어입니다:

git log <file>

이 오류 메시지를 받으면:

fatal: ambiguous argument <file_name>: unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:

파일의 Git 히스토리를 확인하려면 다음을 사용합니다:

git log -- <file>

파일의 각 변경 내용 표시

gitk <file>

변경 사항 삭제

변경을 되돌리려면 Git 명령을 사용하여 리포지터리의 이전 버전으로 돌아갈 수 있습니다.

변경 사항을 삭제하는 것은 종종 되돌릴 수 없는 파괴적인 행동입니다. 가능하다면 이전 커밋을 되돌리는 대신 추가적인 커밋을 추가해야 합니다.

스테이징하지 않은 변경 사항 덮어쓰기

추적되었던 변경 사항을 버리는 바로 가기로 git checkout를 사용할 수 있습니다.

추적 파일의 모든 변경 사항을 버리려면 다음을 사용합니다:

git checkout .

변경 사항은 브랜치의 가장 최근 커밋으로 덮어씌워집니다. 추적되지 않은 파일은 영향을 받지 않습니다.

변경 사항 및 커밋 재설정

caution
이미 원격 리포지터리에 푸시한 커밋을 되돌리려 하면 안 됩니다.

git add로 변경 사항을 스테이징하고 커밋하지 않기로 결정한 후, 변경 사항을 스테이징 해제할 수 있습니다. 변경 사항을 스테이징하고 커밋하지 않았지만(원격 리포지터리에 푸시하지 않았을 경우) 커밋을 되돌릴 수 있습니다.

git reset HEAD~<number>

여기서 <number>은 되돌릴 커밋의 수입니다. 예를 들어, 가장 최근의 커밋만 되돌리려면:

git reset HEAD~1

커밋이 되돌아가고 변경 사항은 로컬 리포지터리에 남습니다.

다양한 변경 사항을 되돌리는 방법에 대해 자세히 알아보려면 Git 변경 사항 되돌리기 문서를 참조하십시오.

기본 브랜치로 브랜치 Merge

기본 브랜치에 변경 사항을 추가할 준비가 되었을 때 기능 브랜치를 Merge합니다:

git checkout <default-branch>
git merge <feature-branch>

GitLab에서 명령줄 대신 변경 사항을 Merge하는데 Merge Request을 사용하는 것이 일반적입니다.

포크에서 상류 리포지터리로 Merge Request을 만들려면 포킹 워크플로를 참조하십시오.

포크된 리포지터리의 변경 사항을 상류 리포지터리와 동기화하기

네임스페이스에 리포지터리의 사본을 만들려면 리포지터리를 복제합니다. 리포지터리의 사본에서 만든 변경 사항은 자동으로 원래와 동기화되지 않습니다. 이 프로젝트를 원본 프로젝트와 동기화하려면 원본 리포지터리에서 pull해야 합니다.

원본 리포지터리에서 변경 사항을 받으려면 원격 리포지터리에 대한 링크를 생성해야 합니다. 일반적으로 이 원격 리포지터리를 상류라고 부릅니다.

이제 upstream을 사용하여 원본 리포지터리에서 새로운 업데이트를 가져오고 origin을 사용하여 로컬 변경 사항을 푸시하고 Merge Request을 만들 수 있습니다.

관련 주제