GitHub로 프로젝트 관리하기
github로 프로젝트를 관리하기 위해서는 git bash를 이용하여 일련의 명령어들을 입력해주어야 한다.
계속 찾아보기엔 내 시간이 아깝기 때문에 저장해놓고 용이하게 찾아보려고 한다.
1. 깃 설정을 바꾸기 위해 다음과 같이 입력한다.
git config --global init.defaultBranch main
위 명령어를 입력하면 기본 브랜치를 master가 아닌 main으로 바뀐다.
(과거에는 master를 기본 브랜치로 사용했다고 한다.)
2. 이제 현재 위치한 프로젝트 폴더에서 깃 저장소를 만들고 초기화한다.
git init
위 명령어를 입력하면 현재 위치에서 .git 폴더가 생성된다. 이 폴더는 깃이 사용하는 모든 정보(버전 기록 )를 담고 있다. 현재 위치는 깃이 관리하는 프로젝트 디렉토리가 된다.
3. github 계정 정보를 입력한다.
git config --global user.email "<email_address>"
git config --global user.name "<user_name>"
4. 커밋할 파일들을 staging area에 넣는다.
git add <file_location>
그리고 아래 명령어를 입력하면 파일이 잘 담겼는지 확인할 수 있다.
git status
5. staging area에 있는 파일들로 새로운 버전을 만든다.
git commit -m "<description>"
파일의 내용을 만들고 두번째 버전을 만드려면
git add *
git commit -m "<description>"
아래 명령을 입력하면 커밋된 정보를 확인할 수 있다.
git log
위 명령어를 입력하 여러 커밋과 사용자의 이름, 정보가 나온다.
파일을 커밋하면 어느 버전이든지 고유의 커밋 식별자를 이용하여 자유롭게 되돌아갈 수 있다.
git checkout <식별자>
커밋의 식별자는 git log 명령어를 통해 확인할 수 있으며 식별자 앞 7자만 입력하여도 된다.
6. 이제 깃의 원격 저장소와 로컬 저장소를 연결한다.
git remote add <원격 저장소를 부르는 별명> <원격 저장소의 주소>
아래 명령어를 입력하면 현재 연결된 원격 저장소를 확인할 수 있다.
git remote -v
아래 명령어는 연락을 끊는다.
git remote remove <원격 저장소의 별명>
7. 이제 커밋 파일을 원격 저장소에 올린다.
git push <원격 저장소의 별명> main
만약 main이 아닌 다른 브랜치에 올리고 싶다면,
git fetch <원격 저장소 별명>
위 명령어는 원격 저장소(origin)의 최신 브랜치 상태를 로컬에 갱신한다.
git branch --set-upstream-to=origin/<브랜치명> <브랜치명>
위 명령어를 입력하여 기존 <브랜치명>을 <브랜치 별명/브랜치명>에 연결하여 추적 관계를 설정한다.
git branch -vv
이후, 다음 명령어 입력 결과가 <브랜치명> 옆에 <브랜치 별명/브랜치명>이 출력된다면 성공적으로 연결됐다는 의미이다.
8. 이제 github에 커밋 파일을 확인할 수 있다.
만약 팀원이 github의 파일을 수정했다면 아래 명령어를 통해 파일을 받아올 수 있다.
git clone <원격 저장소 주소>
cd <저장소_이름>
git checkout <커밋해시>
위 명령어를 수행하면 다음과 같은 폴더/ 파일이 생성된다.
(현재 디렉토리)
└── 입력한 브랜치 이름/
├── .git/
├── README.md
└── other_project_files...
8-1. git add로 staging area에 다른 파일을 실수로 올릴때 다음과 같은 명령어를 입력한다.
git restore --staged [제외할 파일 이름]
그럼 add하여 staging area에 올린 수정 작업을 작업 디렉토리에 되돌려 staging area의 파일을 제거한다. 작업 디렉토리의 수정 작업은 그대로 유지된다.
참고로 이 명령어를 사용할 때는 커밋이 하나라도 있어야 한다.
만약 커밋이 하나도 없다면 에러가 발생한다.
다음과 같은 명령어를 입력하면 수정 작업까지 제거되고 이전 상태를 복원한다.
git restore <제외할 파일 이름>
8-2. 다음과 같은 명령어는 커밋한 파일을 취소한다.
git reset --soft HEAD^
위 명령어는 가장 최근의 커밋을 취소하며 staging area에는 수정 작업이 그대로 남는다.
커밋과 staging area까지도 취소하고 싶다면 다음과 같은 명령어를 입력한다.
git reset --mixed HEAD^
위 명령어는 커밋과 staging도 취소한다.
커밋과 staging, 작업 디렉토리의 수정 작업까지도 취소하고 싶다면 다음과 같은 명령어를 입력한다.
git reset --hard HEAD^
특정 커밋 내용을 취소하고 싶다면 다음과 같은 명령어를 입력한다.
git revert <커밋 해시>
특정 커밋을 취소하기 위해서 새 커밋을 생성한다. 히스토리를 유지하면서 잘못된 커밋만 뮤효화할 때 사용한다.