🍎 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" 명령어 오류와 해결책:
- Permission Denied 오류:
- 오류 메시지: "fatal: could not create work tree dir '폴더 경로': Permission denied"
- 해결책: 디렉토리에 대한 쓰기 권한이 없기 때문에 Git이 작업 디렉토리를 생성할 수 없는 것으로 보입니다. 이를 해결하려면 디렉토리의 권한을 변경하여 사용자가 쓰기 권한을 가지도록 합니다.
- 이미 Git 저장소가 존재하는 경우 오류:
- 오류 메시지: "Reinitialized existing Git repository in '폴더 경로'"
- 해결책: 이미 Git 저장소가 있는 디렉토리에서 "git init"을 실행하면 Git은 이미 존재하는 저장소를 다시 초기화하려고 시도합니다. 이미 초기화된 저장소를 사용하거나 다른 디렉토리에서 실행하세요.
- 디렉토리 경로에 공백이 있는 경우 오류:
- 오류 메시지: "fatal: Not a git repository (or any parent up to mount point /volume) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
- 해결책: 경로에 공백이 포함된 경우 Git이 디렉토리를 올바르게 인식하지 못할 수 있습니다. 이 경우 경로를 변경하거나 공백을 이스케이프 처리해야 합니다.
- 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 : 이전 커밋을 취소하고 그 변경 사항을 새로운 커밋으로 기록
깃 리셋 사용하려다 잘 안됐었는데 내일 시간 나면 한번 확인해볼 것