dukDukz

21.04.16 Git / GitHub 본문

웹 개발

21.04.16 Git / GitHub

헤일리_HJ 2021. 4. 18. 13:55

나 혼자 작업할 때

내 컴퓨터에만 저장하는게 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로 올려주면 된다.