본문 바로가기

내일배움캠프

TIL 14일차

🍎 How's the 14th day going?

오늘 뭔가.. 한게 없는데.. 후다닥 지나간 느낌특강 하나 듣고...조회의하고..
초반 구성만하고 맡은게 없어서.. 깃만 연습해봤네
수업도 안올라와서 정리도 못하고.오늘은 깃 사용법 정리

 

💡 오늘의 정리 목록

깃 사용 순서

git initgit addgit commit

git pull

git pushgit remotegit clonegit branch

다른 git 명령어

깃 사용 순서

 

1. Git 초기화: Git으로 관리할 새로운 프로젝트 디렉토리로 이동한 후에 git init 명령어를 실행하여 Git 저장소를 초기화합니다. 이 명령어는 해당 디렉토리 내에 .git이라는 숨겨진 폴더를 생성합니다.

git init

 

2. 파일 추가: Git으로 관리하고자 하는 파일을 프로젝트 디렉토리에 추가합니다. 예를 들어, README.md 파일을 생성하고 이를 Git으로 관리하고자 한다면 다음과 같이 명령어를 사용할 수 있습니다.

touch README.md

 

3. 파일 스테이징: 변경 사항을 저장소에 추가하기 위해 파일을 스테이징(Staging)합니다. 스테이징은 변경 사항을 추적하고 기록하는 것을 의미합니다. 모든 변경 사항을 스테이징하려면 git add 명령어를 사용합니다.

git add README.md

 

4. 커밋: 스테이징된 변경 사항을 저장소에 커밋(Commit)합니다. 커밋은 변경 사항을 저장소에 기록하는 것을 의미합니다.-m 플래그는 커밋 메시지를 직접 작성하기 위해 사용됩니다. "Initial commit"은 이 커밋의 설명입니다. 커밋 메시지는 변경 사항을 설명하는 간결한 요약이어야 합니다.

git commit -m "Initial commit"

 

5. 원격 저장소 추가: 원격 저장소(remote repository)를 추가하여 로컬 저장소의 변경 사항을 온라인으로 관리합니다. GitHub 또는 GitLab과 같은 호스팅 서비스를 사용하여 원격 저장소를 생성한 후, 다음 명령어를 사용하여 로컬 저장소와 연결합니다.<원격 저장소 URL>에는 원격 저장소의 URL이 들어가야 합니다.

git remote add origin <원격 저장소 URL>
 

6. 푸시: 로컬 저장소의 변경 사항을 원격 저장소에 푸시(Push)하여 온라인으로 백업하거나 협업할 수 있습니다.-u 옵션은 업스트림(upstream) 브랜치를 설정하며, 이후에는 간단히 git push 명령어만으로 변경 사항을 푸시할 수 있습니다.

git push -u origin master

 

 

git init(Git 저장소 초기화 )

  - git 폴더 생성: "git init" 명령어를 실행하면 Git은 현재 디렉토리에 .git이라는 숨겨진 폴더를 생성

  - git init으로 사용

"git init" 명령어 오류와 해결책:

  1. Permission Denied 오류:
    • 오류 메시지: "fatal: could not create work tree dir '폴더 경로': Permission denied"
    • 해결책: 디렉토리에 대한 쓰기 권한이 없기 때문에 Git이 작업 디렉토리를 생성할 수 없는 것으로 보입니다. 이를 해결하려면 디렉토리의 권한을 변경하여 사용자가 쓰기 권한을 가지도록 합니다.
  2. 이미 Git 저장소가 존재하는 경우 오류:
    • 오류 메시지: "Reinitialized existing Git repository in '폴더 경로'"
    • 해결책: 이미 Git 저장소가 있는 디렉토리에서 "git init"을 실행하면 Git은 이미 존재하는 저장소를 다시 초기화하려고 시도합니다. 이미 초기화된 저장소를 사용하거나 다른 디렉토리에서 실행하세요.
  3. 디렉토리 경로에 공백이 있는 경우 오류:
    • 오류 메시지: "fatal: Not a git repository (or any parent up to mount point /volume) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
    • 해결책: 경로에 공백이 포함된 경우 Git이 디렉토리를 올바르게 인식하지 못할 수 있습니다. 이 경우 경로를 변경하거나 공백을 이스케이프 처리해야 합니다.
  4. Git이 설치되어 있지 않은 경우 오류:
    • 오류 메시지: "'git' is not recognized as an internal or external command, operable program or batch file."
    • 해결책: 시스템에 Git이 설치되어 있지 않거나 시스템 경로에 Git이 추가되어 있지 않는 경우 발생합니다. Git을 설치하고 시스템 경로에 추가하세요.

git add(스테이징)

  - 스테이징(Staging)은 Git에서 변경 사항을 준비하는 단계

"git add" 사용법

a. 파일 스테이징: gid add <파일 이름>

b. 모든 변경 사항 스테이징: git add .

c. 디렉토리 스테이징: git add <디렉토리 이름>

"git add" 명령어 오류와 해결책:

1. 파일 또는 디렉토리를 찾을 수 없는 경우:

  • 오류 메시지: "fatal: pathspec '파일 또는 디렉토리 이름' did not match any files"
  • 해결책: 해당 파일 또는 디렉토리가 존재하지 않는 경우, 올바른 경로와 파일 이름을 지정하세요.

2. 파일이 이미 스테이징된 경우:

  • 오류 메시지: "The following paths are ignored by one of your .gitignore files"
  • 해결책: 이미 스테이징된 파일을 다시 추가하려고 하면 해당 오류가 발생할 수 있습니다. 이 경우 파일을 다시 수정하거나, git reset 명령어를 사용하여 스테이징을 취소할 수 있습니다.

3. 권한 문제로 인한 오류:

  • 오류 메시지: "error: open("파일 경로"): Permission denied"
  • 해결책: 해당 파일에 대한 쓰기 권한이 없는 경우 발생할 수 있습니다. 파일에 대한 권한을 변경하여 쓰기 권한을 부여하세요.

git commit(변경사항 저장)

 -   스테이징 영역에 있는 변경 사항을 저장소에 영구적으로 기록합니다. 즉, 변경 사항을 커밋하여 저장소의 이력

 -  사용법 : git commit -m "커밋 메세지" 

 

"git commit " 명령어 오류와 해결책:

1. 오류 메시지: "Changes not staged for commit"

  • 원인: 변경된 파일이 스테이징되지 않았을 때 발생합니다.
  • 해결책: 변경된 파일을 먼저 스테이징하고 커밋하세요.

2. 오류 메시지: "Aborting commit due to empty commit message"

  • 원인: 커밋 메시지를 입력하지 않았거나 비어있는 경우 발생합니다.
  • 해결책: 커밋 메시지를 입력하세요.

git pull

"git pull" 명령어는 원격 저장소에서 변경 사항을 가져와 현재 로컬 브랜치에 병합

실행 방법 : git pull <원격 저장소> <브랜치 이름>

ex) "origin"  원격 저장소의 "master" 브랜치에서 변경 사항을 가져와 현재 브랜치에 병합

git pull origin master

"git pull " 명령어 오류와 해결책:

오류 메시지: "fatal: refusing to merge unrelated histories"

  • 원인: 두 저장소의 이력이 다르기 때문에 발생합니다.
  • 해결책: "--allow-unrelated-histories" 플래그를 사용하여 병합을 수행합니다.

오류 메시지: "error: Your local changes to the following files would be overwritten by merge"

  • 원인: 로컬 파일에 변경 사항이 있고, 병합하려는 브랜치에서 동일한 파일이 변경된 경우 발생합니다.
  • 해결책: 변경 사항을 스태시(stash)하거나 커밋한 후 병합을 수행하세요

git push

"git push" 명령어는 로컬 저장소의 변경 사항을 원격 저장소로 푸시합니다.

실행방법 :  git push<원격장소><브랜치이름>

ex) 로컬 저장소의 변경 사항을 "origin" 원격 저장소의 "master" 브랜치로 푸시

git push origin master

 

"git push " 명령어 오류와 해결책:

오류 메시지: "Updates were rejected because the tip of your current branch is behind"

  • 원인: 로컬 브랜치가 원격 브랜치보다 이전 커밋을 가리키고 있어서 발생합니다.
  • 해결책: git pull을 통해 원격 변경 사항을 가져오고, 충돌을 해결한 후에 다시 푸시하세요.

오류 메시지: "Permission denied (publickey)."

  • 원인: SSH 공개 키가 원격 저장소에 등록되지 않았거나 인증이 실패한 경우 발생합니다.
  • 해결책: SSH 키를 등록하거나 권한 문제를 해결하세요.

git remote

명령어는 현재 프로젝트에 연결된 원격 저장소의 리스트를 보여줍니다.

실행방법

  • git remote // 원격저장소만
  • git remote -v // 이름과 url도 같이
  • git remote add <원격 저장소 이름> <원격 저장소 URL> // 원격저장소 이름에 url을 설정
  • git remote remove <원격 저장소 이름> //원격 저장소 삭제
  • git remote rename <기존 이름 > < 새이름> // 이름 변경

 

ex)

  • 원격 저장소 추가: git remote add origin https://github.com/user/repo.git
  • 원격 저장소 삭제: git remote remove origin 
  • 원격 저장소 이름 변경 : git remote rename origin new_origin

"git push " 명령어 오류와 해결책:

 

오류 메시지: "fatal: 'origin' does not appear to be a git repository"

  • 원인: 지정된 이름의 원격 저장소가 존재하지 않는 경우 발생합니다.
  • 해결책: 올바른 원격 저장소 이름을 사용하세요.

오류 메시지: "fatal: No such remote 'origin'"

  • 원인: 해당 이름의 원격 저장소가 설정되지 않았거나 존재하지 않는 경우 발생합니다.
  • 해결책: 원격 저장소를 추가하거나 이름을 확인하세요.

git clone

설명: "git clone" 명령어는 원격 저장소의 내용을 로컬로 복제합니다. 새로운 디렉토리를 만들고 해당 디렉토리에 원격 저장소의 모든 파일과 이력을 가져옵니다.

  • 실행방법 : git clone <원격장소 url>
  • ex) git clone https://github.com/user/repo.git

git branch

브랜치를 생성하고 관리하는 데 사용, 명령어를 사용하여 로컬 브랜치 목록을 보거나 새로운 브랜치를 생성하고 삭제 가능

  • git branch // 모든 브랜치 이름 보기
  • git branch <새로운 브랜치 이름>  //새로운 브랜치 생성
  • git branch - d<삭제할 브랜치 이름> //브랜치 삭제

브랜치 생성 & 이동 동시에

  • git checkout -b <새로운 브랜치 이름>
  • git switch -c <새로운 브랜치 이름>

git checout

작업 디렉토리의 파일을 변경하거나 브랜치를 변경하는 데 사용

  • 실행방법 : git checkout <브랜치 이름 또는 파일 이름> 브랜치로 전환 또는 파일을 이전상태로 되돌림 

다른 git 명령어:

  • git satus : 현재 작업 디렉토리의 상태
  • git log : 저장소의 모든 커밋과 각 커밋의 메타데이터(작성자, 일시 등)를 확인
  • git diff :  파일 간 또는 커밋 간의 차이를 보여줍니다. 어떤 부분이 변경되었는 라인 단위로
  • git reset : 커밋을 취소하거나 변경 사항을 스테이징 영역에서 제거
  • git revert : 이전 커밋을 취소하고 그 변경 사항을 새로운 커밋으로 기록

 

깃 리셋 사용하려다 잘 안됐었는데 내일 시간 나면 한번 확인해볼 것

 

'내일배움캠프' 카테고리의 다른 글

TIL 16일차  (2) 2024.05.07
15일차 TIL  (2) 2024.05.03
TIL 13일  (1) 2024.05.01
TIL 12일차  (1) 2024.04.30
TIL 11일차  (0) 2024.04.29