dukDukz
21.04.16 Git / GitHub 본문
나 혼자 작업할 때
내 컴퓨터에만 저장하는게 Git
[ local 돌아가는 시스템 - 내 컴퓨터에 설치를 해야 작동함 ]
다른 사람들이랑 공동작업을 위해서 원격저장소에 올리는게 GitHub --> 백업시스템
[cloud 라고 생각하면 됨 : git + 연결해야 돌아감]
핵심
1. Git에 파일 올리기
git init
git status
git add .
git commit -m "메모"
git status
2. 특정 위치로 돌아가기
git log // 해쉬값 획득
git flog // 올린 것들 순서 확인 가능
git reset 해쉬값6자리 --hard
3. Git branch 생성 및 main(master) 변경
git branch
git branch testgit branch // 최초 상태확인
git branch newbrach1 // 새로운 브랜치 생성
git branch // 상태 확인 - 생성됨
git checkout newbranch1 // *을 newbracnh1으로 변경
git branch // 상태확인 - * 위치가 변경됨
git branch -D newbranch1 // 이 branch 강제 삭제 가능
4. GitHub에 내 파일 올리기
git remote add orgin https://내주소
git push origin master
5. GitHub에서 clone 파일 가져오기
git clone https://남의주소
git fetch //저장소에 있는 상태랑 현상태랑 비교
git pull origin master // 원격저장소 --> 내 저장소
git add .
git commit -m "메모"
git push origin master // 내 저장소 --> 원격저장소
1. PC에 Git 등록하는 방법
github.com/ingoo-code/Hello_git
Git CMD에서
git config --global user.name "hyejjun"
git config --global user.email "hjlee9725@gmail.com"
실행한뒤 git config --list
실행시켜 결과물을 확인해주세요.
이렇게 한번만 연결하면 그 PC에서는 다시 연결할 필요가 없다.
* 만약 등록하기전에 git init을 입력했는데,
git 연결이 안되고 오류가 날 경우에는 환경 변수의 문제일 수 있다.
해결방법
Git 파일이 어딨는지 찾고
내컴퓨터 - 우클릭 - 속성 - 고급
환경변수를 추가한 뒤
VS code를 껐다가 킨다.
다시
터미널을 열어서
git 을 입력후 제대로 되었는지 확인 --> 해결 완료
2. 터미널에서 자주쓰는 명령어
터미널을 열때는 ctrl + ` 를 사용함
clear | 터미널 내용 clear |
pwd | 현재 디렉토리(저장된 공간) 출력 |
ls | 현재 위치한 폴더에 파일들이 뭐뭐가 있는지 리스트가 나온다. d----- : 디렉토리 (다른 폴더라고 생각하면 됨) |
cd | 디렉토리 간 이동시 사용함 cd.. 이전폴더로 감 cd hello 하면 현재 위치안에 있는 hello 라는 폴더로 감 (cd 까지 입력하고 폴더이름 입력하다가 tab 키 누르면 자동완성됨) |
mkdir | 현재 위치에서 폴더를 만드는 명령어 mkdir 폴더명 |
rmdir | 폴더를 삭제하는 명령어 rmdir 폴더명 |
vi 편집기 | 파일이 없는 상태에서 사용하면 vi 파일이름 하면 파일 생성됨 파일이 있는 상태에서 사용하면 vi 파일이름 하면 파일을 열게됨 ex) vi index.html (파일 생성 혹은 파일 오픈) 입력하다가 먹통이 되면 :q 로 빠져나올 수 있음 |
3. 터미널 git 사용법
<git 업로드 하는 순서>
git init
git status // 어떤 상태인지 (올라갈 파일이 있는지 현 상황을 보여줌)
git add . // 아직 안올라간 모든 파일
git commit -m "메모"
git status
--> 상태 보기
저장이 잘 되었는지 확인가능
설명
git init
: git 을 사용하겠다. (현재 사용하는 폴더안에 숨겨진 파일로 평행 우주가 생성됨)
git status
: git의 현 상태를 보여줌 (Git에 올릴 파일들이 남아 있는지? - 있으면 빨간색으로 뜸)
git add .
: 아직 Git에 올라가지 않은 모든 파일을 add하겠다.
아니면
git add index.html
: 특정 파일 하나면 올리겠다는 뜻
git commit -m "메모"
: 커밋을 하면서 메모를 남겨준다.
다 올렸다면 남은 파일이 없는지
git status 로 한번 더 확인해줌
<어느 시점으로 돌아가기 reset revert >
git log
git reflog
git reset 해쉬값6자리 --hard
설명
git log 로 올린것들 확인 가능
git reflog 순서 확인 가능
git reset 해쉬값6자리 --hard
이거는 어느 지점으로 돌아가기도 하고 다시 되돌아오기도 한다.
그 파일을 커밋했던 부분의 해쉬 값을 적어서 해야 파일이 되살아남
html 내용을 바꾸고 add, commit 하고
이걸 reset으로 이전내용의 해쉬값을 이용해서 되돌릴 수 있다
다시 지운 내용을 되살리려면 reset으로 새로 작성한 내용의 해쉬값으로 돌아오면 된다.
<git branch>
현 시점에서 두 미래로 분기하겠다는 뜻
보통은 master를 남겨두고, 사람마다 branch를 하나씩 갖고 작업함
master에서 branch 해서 시도해보고 안되면 삭제 되면 master로 옮겨오기도 함
<branch 만드는 법>
git branch // 최초 상태확인
git branch newbrach1 // 새로운 브랜치 생성
git branch // 상태 확인 - 생성됨
git checkout newbranch1 // *을 newbracnh1으로 변경
git branch // 상태확인 - * 위치가 변경됨
git branch -D newbranch1 // 이 branch 강제 삭제 가능
git branch -b testbranch // testbranch 를 만들고 바로 여기로 이동한다(*을 준다는 뜻)
상황 ①
*branch를 변경하고 새로운 파일 올렸음
git branch 를 sample로 바꾸고
파일 생성해서 올리고
다시 git branch를 master로 바뀌면
포커스가 바뀌기 때문에 그 파일들이 삭제된것 처럼 보인다.
다시 branch 를 sample로 돌아가면
그 파일들이 원래 있던것 처럼 보인다.
상황 ②
: branch 안에 또 하나의 branch를 만들었음
git checkout -b bugFix
git checkout -b bugFix_2
git branch -D bugFix
bugFix
l
* bugFix_2
이렇게 만들고 bugFix를 삭제한거임
하지만 bugFix_2에 들어가면 bugFix의 모든 내용이 남아있음
1. *master 에서 *sample로 메인 변경
2. *sample 상태에서 새로운 branch test 생성 그럼 sample하위로 들어감
3. 이 상태에서 새로운 파일들을 만들어서 업로드하면 sample과 test안에 동일하게 생성됨
4. 다시 *master로 메인 변경
5. sample branch 삭제 - *master 상태인 경우 파일없어짐
6. *master에서 *test로 가면 파일 남아있음
--> 폴더개념이 아니라 어쨌든 master랑 묶여있음 그래서 파일이 없어지지 않고 남아있음 , + 삭제한 sample도 눈에 보이진 않지만 남아있다고 봐야함
merge
git checkout -b bugFix
git commit
git checkout main
git merge bugFix
rebase
branch들을 한줄로 깔끔하게 만들어주는 역할
-> 두개의 작업을 마치 하나의 이련된 작업처럼 보이게 한다.
HEAD
현재 작업중인 (checkout 된) commit 이다.
- 마우스 커서랑 비슷한 개념
HEAD는 *가 붙어있는 곳에 있다. (따로 HEAD를 컨트롤 하지 않는 이상 붙어있다.)
HEAD가 진짜 원 주인이다. - HEAD 중심적으로 생각
강제적으로 이동하면 HEAD를 분리시킬 수 있다.
<HEAD 이동시키는 방법>
git checkout C3
상대참조 ^ , ^^
절대경로와 상대경로
절대경로 : 처음부터 주소를 적어서 정확한 파일 위치를 작성하는 방법
C:\Programming\VisualStudio
상대경로
../index.html
./images/apple.jpg
① 한번에 한 커밋 위로 움직이는 ^
② 한번에 여러 커밋 위로 올라가는 ~num
이것 역시 HEAD를 이동시키는 작업이다.
git checkout main^
git checkout HEAD~4
하면 바로 HEAD를 이동시킬 수 있다.
*checkout 말고도 branch를 이동시키는 방법
git branch -f main HEAD~3
HEAD이동 없이 브런치 내용만 옮김
4. GitHub 연결하기
git init
git remote add origin https://github.com/hyejjun/first_Github.git
하면
창이 뜨게되고
[Sign in with your browser]
버튼클릭 하면
에서 초록색 버튼 클릭하면 연결완료
GitHub에 파일을 올려보자
올릴 파일을 만들고
git add .
git commit -m "메모"
git push origin master
하면 올라감.
github.com에서 확인 가능
5. GitHub에서 다른 사람의 프로젝트 가져오기
새폴더 만들고
git clone https://github.com/yunseho/helloWorld.git
이렇게 하면 남의 코드도 가져올 수 있음
누군가랑 코드를 공유한다고 치면
git fetch 하면 저장소에 있는 거랑 비교한다.
git pull origin master
원격저장소 -> 내 저장소
git push origin master
내 저장소 -> 원격저장소
코드가 누군가에 의해 업데이트가 된 상태가 있을 수 있기 때문에
항상
git fetch
를 해서 상태를 확인하고
그걸 git pull origin master 한다음
내가 거기서 수정한걸 git add .
git commit -m "메모"
git push orgin master로 올려주면 된다.
'웹 개발' 카테고리의 다른 글
쿠키, 로컬스토리지, 세션스토리지 - 브라우저 간 공유 여부 (0) | 2023.05.09 |
---|---|
Open SSL 을 이용한 인증서 발행 / 검증 (0) | 2023.01.05 |
RSA 암호화 (0) | 2023.01.03 |
To be.. FE developer (0) | 2022.09.29 |
[error] 카카오맵 API 캐시 에러 (0) | 2022.08.31 |