1월 15일 자 학습 내용 정리입니다.
✅ git 설치
git 설치는 다음 url에서 가능하다.
위 url에서 해당하는 os를 고른 뒤 알맞은 버전의 git 파일을 다운받아 설치하면 된다.
컴퓨터가 32bit인지 64bit인지 헷갈리다면 내PC 오른쪽 클릭 > 속성에서 확인할 수 있다.
✅ git 설치 확인과 초기 설정
git 설치 확인
git이 정상적으로 설치되었는지 확인하기 위해서는 다음의 명령어를 git bash나 명령프롬프트에 입력하면 된다.
git --version
git이 제대로 설치되어있다면 위와 같이 설치된 git의 버전을 확인할 수 있다.
git 초기 설정
git을 이용하기 위해서는 사용자 정보를 설정하는 초기 설정이 필요하다.
저장소에 코드를 반영할 때 등록될 사용자의 정보를 git에 알리는 것이다.
git config --global user.name <이름>
git config --global user.email <이메일>
프로젝트마다 다른 사용자 정보를 지정하고 싶으면 저장소 생성 후 global 옵션을 빼고 실행하면 된다.
git 설정 정보 확인
설정 정보를 확인하기 위해서는 다음과 같은 명령어를 입력한다.
git config user.name
git config user.email
git config --list
user.name 혹은 user.email만 확인하고 싶다면 git config 명령어 뒤에 확인하고 싶은 내용을 적는다.
git 설정에 대한 모든 정보를 알고 싶다면 git config --list를 입력한다.
✅ git 저장소 생성
git 저장소 생성
git 저장소를 생성하는 명령어는 다음과 같다.
git init
git init 명령어는 기존의 디렉토리를 git repository로 설정한다.
즉, A라는 폴더에서 git bash 혹은 터미널로 git init 명령어를 입력했다면 .git 폴더가 생긴다.
이 .git이라는 폴더가 .git repository가 되며 A 폴더 안에 있는 Tracked 상태의 파일들을 관리한다.
git init 명령어는 현재 위치가 해당 폴더가 아니더라도 사용할 수 있다.
A라는 폴더를 git repository로 만들고 싶은 경우 현재 A 폴더에 위치하고 있다면 바로 git init 명령어를 입력하면 된다.
하지만 현재 위치가 A 폴더가 아니라면 git init <A 폴더의 상대적인 주소> 를 입력하면 된다.
예를 들어 현재 C 폴더에 위치하고 있고 A 폴더의 위치가 C://Users/C/B/A라면 A 폴더에 git repository를 생성하기 위한 명령어는 git init ./B/A 가 된다.
✅ 파일 상태에 따른 git 명령어
이전 포스팅에서 파일의 상태는 위의 네 가지로 분류했다.
작업한 파일을 git repository에 올리기 위해서는 Untracked 혹은 Modified 상태의 파일을 Staged 상태로 변경 후 git repository에 올린 후 Unmodified 상태로 만든다.
git add
기존 파일을 수정한 파일이거나(Modified) 새로운 파일(Untracked)을 준비 영역으로 보낼 때 사용하는 명령어이다.
git add <파일명>
git add .
git add <파일명> 명령어를 통해 해당 파일을 Staged 상태로 전환할 수 있다.
여러 개의 파일을 Staged 상태로 전환하기 위해서는 파일명을 공백을 두고 여러 개 입력하면 된다.
해당 디렉토리 내 모든 Untracked, Modified 상태의 파일을 Staged 상태로 전환하고 싶다면 git add . 명령어를 입력하면 된다.
git status
Staging Area의 파일 상태를 확인하는 명령어이다.
git status
git commit
.git repository 내의 Staged 상태의 파일을 저장하고 저장이 완료되면 Unmodified 상태로 전환하는 명령어이다.
git commit -m "메세지"
Staged 상태의 파일을 저장소에 올리면서 버전 관리를 위해 무엇을 수정하고 추가했는지 메세지를 남길 수 있다.
예를 들어 github에 올린 커밋 메세지는 위와 같이 확인이 가능한데 커밋 메세지를 통해 어떤 작업을 했는지 알 수 있고 문제가 생긴 경우 에러 추적이 가능하다.
git commit --amend
git commit --amend -m "메세지"
적은 커밋 메세지에 오타가 있거나 누락한 파일이 있을 경우 --amend 옵션을 통해 커밋을 수정할 수 있다.
--amend 옵션을 추가하면 텍스트 편집기가 실행되고 수정하고 싶은 부분을 수정한 후 저장하면 수정된 메세지가 반영된다.
텍스트 편집기 실행 없이 바로 수정할 메세지를 추가하고 싶다면 --amend 옵션 뒤에 -m 옵션을 주어 메세지를 바로 입력하면 된다.
git log
git repository에 반영된 내역을 확인할 수 있는 명령어이다.
git log
.git repository에 존재하는 history를 확인하여 commit한 기록을 볼 수 있다.
git log 명령어는 다양한 옵션이 존재한다.
- -p, --patch : 각 commit의 수정 결과를 보여준다. git diff 명령어와 같은 작업을 수행한다.
- -n : n은 숫자이며 상위 n개의 commit 기록을 보여준다.
- --stat : commit을 거친 특정 파일이 어떻게 수정되고 변경되었는지, 파일 내 라인이 추가되거나 삭제되었는지 확인한다.
- --pretty=oneline : commit 기록을 보기 쉽게 한줄로 출력한다.
- --graph : commit 간의 연결된 관계를 아스키 그래프로 출력한다.
- -S "텍스트" : 코드에서 추가되거나 삭제된 내용 중 특정 텍스트가 있는지 검사한다.
git diff
commit된 파일 중 변경된 사항을 비교할 수 있는 명령어이다.
git diff
git reset
준비 영역에 있는 파일을 Untracked 상태로 전환하는 명령어이다.
git reset
git reset <hash값> --hard
git reset <해시값> --hard 명령어를 통해 이전 commit으로 이동할 수 있다.
해당 commit의 해시값은 git log 명령어를 통해 확인할 수 있다.
✏️ 예제
git repository의 생성을 보기 위해 바탕화면에 test라는 폴더를 만들고 test 폴더에서 git repository를 생성했다.
git init 명령어를 입력하자 test 폴더 아래 git repository가 생성되었다는 안내 문구를 볼 수 있다.
또한 현재 위치의 디렉토리 내 하위 파일, 폴더를 숨겨진 내용까지 볼 수 있는 ls -al 명령어를 입력하자 test 폴더 내에 .git 폴더가 생성된 것을 확인할 수 있다.
이를 파일 탐색기에서 보면 위와 같다.
원래 .git 폴더는 숨겨진 채로 존재하지만 숨겨진 파일을 볼 수 있게 설정하면 .git 폴더를 확인할 수 있다.
test 폴더 내에 텍스트 편집기를 이용해 a.py를 만들었다.
편집기 종료 후 ls 명령어를 통해 a.py라는 파일이 생성되어 있음을 확인할 수 있다.
이때 git status로 a.py의 상태를 확인해보면 a.py는 Untracked 상태임을 알 수 있다.
아직 파일을 생성만 하고 git에 a.py에 대한 어떠한 것도 알리지 않았기 때문에 git은 a.py를 추적할 수 없는 것이다.
git add 명령어를 통해 a.py 파일의 상태를 Staged로 전환하였다.
git add 후 git status를 통해 a.py의 상태를 확인해 보면 이전과는 다른 것을 알 수 있다.
git commit 명령어를 통해 add a.py라는 메세지로 a.py를 commit 했다.
commit 이후 git status 명령어를 입력하면 아무런 결과도 얻을 수 없는데 이는 Staged 상태였던 a.py 파일이 커밋 이후 Unmodified 상태로 전환되었기 때문에 git이 따로 저장할 변경 사항이 없기 때문이다.
git log 명령어를 입력하면 이전에 커밋한 기록을 확인할 수 있다.
이때 81b861~ 로 되어 있는 것이 커밋 아이디, 즉 해시값이며 해당 커밋에 대한 고유한 값이다.
그 아래에는 커밋을 진행한 사람의 정보와 커밋한 시각, 커밋 메시지를 확인할 수 있다.
'엘리스 AI 트랙 4기 > elice AI track' 카테고리의 다른 글
[1주차] git 원격 저장소 (0) | 2022.01.17 |
---|---|
[1주차] git branch (0) | 2022.01.17 |
[1주차] git (0) | 2022.01.17 |
[1주차] 미디어쿼리 (0) | 2022.01.13 |
[1주차] transform, transition, animation (0) | 2022.01.13 |
댓글