Git 은 여러 버전을 만들 수 있게해주는 프로그램
GitLab이나 Github는 GIt을 기반으로 만들어진 저장소
git init (vs프로젝트 연결)
.git/이라는 디렉토리가 racingground에 생성됨
git으로 버전 관리가 되고있는 것이라는것 (기본적으로 숨김파일 처리)
git 사용자 정보 설정
git config user.name "{user_name (이름적기)}"
git config user.email "{}"
커밋하기는 크게 세가지를 바탕으로 작동됨
1. working directory
프로젝트 디렉토리 자체
2. staging Area
특정버전으로 관리하고싶은 파일들을 모아두는 장소
3. Repository
특정시점의 모습을 commit으로 남기면 commit이 저장되는곳
git add . (모든 파일을 2에 올림)
git commit -m "원하는 커밋 메시지" = 커밋으로 만들어서 repository에 저장 ( 팀원과 협업할때는 커밋메시지를 자세하고 친절하게 적어두는게 좋음)
-왜 2영역을 걸치는가?
: 지금 당장 커밋으로 남기고 싶지 않은 파일이 있을 수 있기 때문이다. (제대로 수정된 파일만 커밋으로 남기기위해)
커밋의 기록 보기
git log
커밋 비교
id 앞 4자리만 적어줘도 구분할 수 있음.
git diff {commit_id} {commit_id}
- 스테이지 열에 올린것들만 커밋에 반영
파일 변경하고
git add {변경한 파일}하면
변경한 파일인 ex) Basic Car.js 파일만 변경되는게 나타남
--
commit간 이동
1. 일단 커밋 추가
2. 커밋 비교
git diff {commit_id} {commit_id}
앞의 네자리 아이디로 비교
3. 특정 커밋으로 이동하는 방법
일단 git log 확인
여기서 HEAD는 현재 내가 위치해있는 커밋을 가리키는 식별자
HEAD가 가리키는걸 바꾸면 워킹 디렉토리 변화
대부분의 상황에서는 가장 최신커밋을 가리킴
커밋변경 코드
git reset --hard {commit_id}
해주면 HEAD가 가리키는게 달라짐
워킹 디렉토리의 모습이 바뀜
(첫번째 커밋으로 돌아감)
git reset 을 이용해 head가 특정커밋을 가리키도록
HEAD가 가리키는걸 바꾸면 워킹 디렉토리 변화 ==> hard옵션
mixed와 soft는 워킹 디렉토리는 건드리지 않음.
mixed는 스테이징 area를 변경함
soft는 둘다 변화 x
살펴보기
Mixed는 워킹 디렉토리 건드리지 않기때문에
git reset --mixed commit_id
하게되면 그 코드의 최신모습임
git의 상태를 보다 자세히 ==> git status
현재 워킹 디렉토리의 변경사항이 스테이징 에어리아에 반영되지 않았다는 뜻
지금 스테이징은 첫번째 커밋과 동일한 상태
이 상태에서 git add -> commit해도 됨
고칠게 있다면 고치고 git add-> commit
SOFT
HEAD만 제외하고 다른것들은 현재상태 그대로임
git reset -- soft commit_id => git status
상태가 초록색
워킹디렉토리의 변경사항이 스테이징 에어리아에도 잘 반영되어있다.
왜냐? soft옵션은 working directory와 staging area옵션은 건드리지 않기때문에
바로 commit하거나 or git add -> commit 하면됨
Git reset의 세가지 옵션
--hard는 좀 위험함
working directory에서 작업한 내용, 모든 작업을 한번에 날려버리기때문
내비두고 head만 가리키게 하려면 다른 두 옵션으로
--soft는 staging의 상태가 그대로 남아있기때문에 바로 commit가능
--mixed의 staging은 바뀌기때문에 이전작업을 남기고싶다면 한번은 git add -> commit을 해두어야 함.
언제 사용하는가?
안쓰거나 굳이 남들이 보지 않았으면 하는 커밋들을
두개중 하나를 사용하면 head가 마지막으로 제대로한 커밋을 가리킴
이때 working에는 최근에 작업한게 있기때문에 이걸 commit해주면 또 커밋로그를 쌓아갈 수 있음.
깰~꼼
--
git reflog(reference log)
head가 가리켰던 commit기록을 모두 보여주는 명령어
가장 마지막에 첫번째 커밋을 가리킨것이 HEAD@{0}이니까,
그 직전인 HEAD@{1}은 다음 커밋을 가리킨 상태 의미함.
git reset --hard HEAD@{number}해도 O
프로젝트를 외부 저장소에 업로드 하는법
장점
1. 프로젝트 복구 가능
2. 협업과 동시에 버전 관리 가능
외부저장소 :GitHub , GitLab, Bitbucket
GitLAB에서 url복사
git remote add orgin url 터미널에 침
URL이 가리키는 외부 서버의 프로젝트를 원격저장소로 지정하는데, 이름은 origin이라고 할게! 라는뜻
git push -u origin master
현재 내 프로젝트의 내용을 origin의 원격저장소의 프로젝트에 넣음
아니근데 나는 오류나..
쨌든 새로고침하면 업로드 된거 확인 가능
README파일에 프로젝트 설명이 바로 보임
HISTORY보면 .git 디렉토리 내부에서 관리되던 Repositiory영역을 업로드한것!
--
다음으로 네번재 커밋 생성하려면
워킹스페이스에서 변경해주고 -> 터미널 git add->git commit -m "커밋이름"
이것도 올려주려면
git push만 써줘도됨 앞에서 했으니까는
git LAb의 프로젝트에서 새로운 커밋이 생성되었을때/다른팀원이 올려놓았을대
그 커밋을 다시 내 컴터로 가져오려면?
맨처음에 git clone url : url이 가리키는 원격 저장소의 프로젝트를 디렉토리 형태로 가져옴
git pull
--
origin 이라는 단어를 쓴이유
git세계의 중요한 관습임
새로운 작업을 시작하기 전에는 gitlab에서 확인하고 커밋 추가하기
git push로 업로드불가
자신의 커밋을 git lab 에있는 커밋로그로 덮어쓰는건 x
걍작업할때 git pull로 댕겨와서 최신화 -> 새로운 커밋 만들고 -> git push해놓기
그래서 오류난듯..다른 팀원이 이미 해와서
'✍2021,2022 > git' 카테고리의 다른 글
gitlab3 (0) | 2021.07.07 |
---|---|
Git 사용법2 (0) | 2021.07.06 |