240516 Git & Github

WorldWannyWeb.·2024년 5월 17일
0

한화시스템

목록 보기
11/14

git & github

1. git

: git은 내컴퓨터에 설치되는 프로그램, 형상관리를 해주는 프로그램
: 소스코드를 효과적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'. Git에서는 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있다. 또 내가 올리려는 파일이 누군가 편집한 내용과 충돌한다면 서버에 업로드 할 때 경고 메시지가 발생함.

(0) 깃 설치
https://git-scm.com/downloads

다 기본으로 설치하기 next 계속클릭.
c드라이브에 cjw로 폴더새로만들기
레포지토리 만들기
cjw폴더를 우클릭해서 git bash here

저장소로 만들겠다 하면 git init으로 만들어준다.

git폴더를 지우면 초기화 가능


git status를 하면 현재 git 상태

HEAD
:해당 브랜치의 마지막 커밋

branch
: 보통 기능별로 branch를 만드는편 (feature / hotfix 등) / 보통 main

commit
: 버전 업데이트 내용.

stage

: stage에 올려놓고 올린것을 새로운것을 업데이트 시키는것이 commit. 현재는 아무것도 없는 상태


cjw폴더에 file.txt를 새로 만들고 git status를 치면 untrack상태인 file이 있음을 알려준다.


버전관리하는 git 프로그램에 파일을 add를 해준 후 stage에 올라가게 된다.



git commit -m "asdfsdf" 로 git 버전을 업데이트 시켜준다.
계정추가가 되어있지 않으면 뜨는 오류.


git에서 하라는 대로 해주면된다.

git config --global user.email ["이메일"]
git config --global user.name ["이름"]

파일이 변경되면
1. git add '파일이름'
2. git commit -m '메세지내용'
순서대로 해주면된다.


git log --oneline --graph --all --decorate
로그를 한줄로 그래프 형식으로 보여주는 명령어

git show
이버전에서 어떤게 업데이트가 되었는지 확인이 가능함

git status로 상태를 먼저 살피고, 수정을 한 파일이나, 추가한 파일이 여러개 일때는 git add . 로 전부 add해주면된다.
그 후에 commit 까지!

git checkout

1.기본방법



git checkout ['git해쉬이름']
파일이 되돌려진것을 볼 수 있음


git reset


git add 를 했는데 stage에서 내려야하는 상황일때
git reset
을 해주면 stage에 올렸던 아이를 빼낼 수 있다.



1. git reset --hard
commit 남긴것이나 잘못쓴코드들까지 다 날림 그래서 잘 사용하지 않음.
2. git reset --soft
3. git reset --mixed
그냥 git reset했을때 mixed가 보통 사용됨

reset이라고 commit이 다 삭제된것은 아니다.


git commit -m 내역을 바꾸기


1. 방금 쓴 commit 고쳐주기
git commit --amend -m "fourth"


git branch


현재 내가 가리키는 branch를 알려줌


보통 master or main 브랜치는 건들지 않고 develop 브랜치에 merge를 시킨다. 기능을 따로 만드는건 feature branch를 따로 만들어서 feature를 만들고 commit, merge하고 develop에 merge해주고 master에는 컨펌이 끝난 후 merge한다!


master브랜치에서 b1브랜치로 가지치기가 되서 commit 된 것을 볼 수 있다.


git branch -M [바꿀이름] -> branch 이름바꾸기


git merge

기준이 되는 브랜치로 이동 후에 git merge [브랜치명] 실행

main브랜치에서 b1브랜치를 merge하려면 main브랜치로 이동 후 b1 브랜치를 merge해주어야함

git switch master

git merge b1

이때 conflict가 발생하면 따로 commit 을 해주어야한다.


git repositiory

저장소(Git repository)란?
: 말그대로 파일이나 폴더를 저장해 두는 곳. 그런데 Git 저장소에서는 파일이 변경 이력 별로 구분되어 저장됨
: 비슷한 파일이라도 실제 내용 일부 문구가 서로 다르면 다른 파일로 인식하기 때문에 파일을 변경 사항 별로 구분해 저장 가능

평소에는 내 PC의 로컬 저장소에서 작업하다가 작업한 내용을 공개하고 싶을 때에 원격 저장소에 업로드
물론 원격 저장소에서 다른 사람이 작업한 파일을 로컬 저장소로 가져오는 것도 가능

[1] 저장소의 종류
로컬 저장소 : 내 PC에 파일이 저장되는 개인 전용 저장소, git 관련 파일이 생성되어 있는 특정 폴더
원격 저장소 : 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소
대표적으로 github, Backlog와 같은 저장소가 있다.

[2] 로컬 저장소 생성
폴더 생성 -> 폴더로 이동 -> 우클릭 -> git으로 열기 -> git init
.git 폴더 확인

로컬 저장소를 삭제하고 싶으면 .git 폴더를 삭제

(3) 버전 관리
  [0] 계정 설정
git config --list
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

  [1] 현재 상태 확인
git status
	Untracked	: 스테이징 영역에 추가되지 않은 상태
		Modified	: 스테이징 영역에 있는 파일의 내용이 수정된 상태
		Unmodified	: 수정된 내용을 다시 스테이징 영역에 추가한 상태
  [2] 변경 사항 확인
git diff

  [3] 버전 관리할 파일 추가(파일은 스테이징 영역으로 추가)
	git으로 공유하면 안되는 파일들은 .gitignore 파일에 목록을 작성하여 관리

git add 파일이름
git add .       모든 파일 추가할 땐 . 사용

  [4] 버전 저장
그냥 커밋할 때
git commit -m "메시지"

템플릿으로 커밋할 때
git config --global commit.template .gitmessage.txt
git commit



  [5] 커밋 내역 확인
git log
git log -p
git log --all
git log --all --graph


(4) 수정하기
  [1] 스테이징 되돌리기
git reset [파일 이름]
git restore --staged [파일 이름]

  [2] 커밋 내용 수정하기
가장 최근의 커밋 내역을 덮어쓰기
git commit --amend -m "메시지"

  [3] 커밋 되돌리기
git reset [옵션] [커밋 해시]
	--hard	: 작업 디렉토리 변경, 스테이징 영역 변경, 저장소 변경
	--mixed	: 작업 디렉토리 유지, 스테이징 영역 변경, 저장소 변경, 옵션을 따로 안쓰면 기본으로 실행되는 옵션
	--soft	: 작업 디렉토리 유지, 스테이징 영역 유지, 저장소 변경


  [4] 커밋 참조 내역 확인하기
git reflog

(5) 커밋 메시지 작성 규칙
무조건 지켜야하는 것은 아니지만 지키면 협업하기에 좋은 문화
레포이름규칙
ex) be02-sdf-sdf-sewr -> - 로 쓰자
1) [제목타입] 제목 (#이슈번호) -> JEBAL 꼭 지키자
ex) git commit -m '[Feat] 회원가입기능구현 (#15)'
내용
꼬리말타입 : #이슈번호


연습하기


Issue : 요구사항 하나가 이슈하나가 될 것.

위키 : READ ME 에서 다 적는데는 한계가 있으므로 Wiki탭에서 좀더 자세한 내용을 작성해야함!

Releases : 실제 버전 배포하기


2.github

(1) github란?
git으로 관리하는 프로젝트를 업로드하거나 공유할 수 있는 웹 사이트
말그대로 저장소! 다운받으면 된다. git에서 만든거를 공유하려고 하는게 github

![](https://velog.velcdn.com/images/choijw1116/post/1efbae5c-35d4-425d-b36a-d5f8199ce6b9/image.png)

(2) git으로 관리하는 프로젝트 github에 저장하기
[1] 원격 저장소 확인
git remote -v
git remote show 원격 저장소 이름

[2] 원격 저장소 설정
git remote add 원격저장소이름 원격저장소주소
ex) git remote add origin https://github.com/본인계정/tutorial

[3] 원격 저장소에 공유
내가 현재 위치한 브랜치를 원격에 있는 브랜치에 올린다.
git push origin [원격 브랜치]

origin이 특정브랜치를 원격저장소에 저장시키는 명령어

[4] 원격 저장소의 내용을 내 저장소로 가져오기
내가 현재 위치한 브랜치로 원격에 있는 브랜치를 가져온다
git pull origin [원격 브랜치] 가져오고 merge까지 자동으로 수행
git fetch origin [원격 브랜치] 가져오고 merge 안함, 직접 확인 후 merge를 수동으로 진행 후 작업

[5] 로컬에 저장소가 없을 때 원격 저장소 가져오기
git clone [원격저장소 주소]

3. README.md 작성

  1. 개행
    내용 끝에 띄어쓰기 2번

  2. 제목
    # 제목
    ## 제목
    ### 제목

    또는
    
    제목  
    \==========  
    제목  
    \----------
  3. 목록 표시
    1. 첫번째
    2. 두번째
    3. 세번째

    * 첫번째
    * 두번째
    * 세번째
  4. 블록 표시
    > 전체 블록
    > > 제목
    > > > 내용

  5. 코드나 명령어
    ```sh
    ```

    \```code
    \```
  6. 가운데 정렬
    \

    정렬 할 내용\

  7. 그림 추가
    \

  8. 링크 추가
    [화면에 표시할 내용](링크 주소)

4. 브랜치

원본을 수정하지 않고 안전하게 새로운 기능을 추가해볼 수 있도록 하는 프로젝트의 복사본

[1] 브랜치 생성
git branch 브랜치이름
[2] 브랜치 변환
git checkout 브랜치이름
[3] 브랜치 병합
git checkout 브랜치이름 메인이 되는 브랜치
git merge 다른브랜치이름
[4] 브랜치 충돌
충돌난 파일 내용 수정
git add 파일이름
git commit
[5] 실습
마스터로 git commit 몇 번 하고
git branch [브랜치 이름]로 브랜치 생성
git checkout [브랜치 이름]로 브랜치 변경
변경한 브래치로 git commit 몇 번 하고
git checkout master 로 브랜치 변경
변경한 브래치에서 변경했던 파일을 master로도 변경 (내용은 다르게)
git merge [브랜치 이름] 하면 충돌 발생
충돌난 파일 내용 수정
git add 파일이름
git commit

5. 병합 방법

  [1] 3-way merge  
	이전 버전에서 기존 브랜치의 새로운 버전과 새로운 브랜치의 새로운 버전이 같이 있을 때

c1 -> c2 			c3
	c2-1 -> c2-2


  [2] fast-forward merge
	이전 버전과 새로운 브랜치의 새로운 버전만 존재하는 상태
병합 전
c1 -> c2 ->
	   c3 -> c4

병합 후
c1 -> c2 -> c3 -> c4

  [3] rebase and merge 
	이전 버전에서 기존 브랜치의 새로운 버전과 새로운 브랜치의 새로운 버전이 같이 있을 때

병합 전
c1 -> c2 -> c3
c2-1 -> c2-2

병합 후
c1 -> c2 -> c3 -> c2-1 -> c2-2

5. 원격 저장소 공유하기

팀장이 github에 레포 생성 -> Settings -> Collaborators -> Add people 
-> 초대할 사람의 email 입력 -> 클릭 -> 초대	
초대받은 사람이 -> 메일 확인 -> View invitation -> Accept invitaion

6. 개발 도구와 연동

[1] 개발도구에 git 계정 설정
햄버거 버튼 -> File -> Settings -> Version Control -> Github -> +버튼 클릭 -> Login Via Github -> 로그인 진행 -> OK

[2] 원격 저장소에서 파일 받아오기


[3] 개발 도구에서 push 해보기
파일 생성 또는 편집 -> Git에서 commit -> Git에서 push

참고하면 좋은 곳
https://github.com/prgrms-be-devcourse/springboot-basic
https://github.com/f-lab-edu/food-delivery/wiki

profile
와니완의 월드와이드와니웹🐥

0개의 댓글

관련 채용 정보