728x90

[ Git ]

  • 로컬에서 관리되는 버전 관리 시스템 (VCS : Version Control System)
  • 소스코드 수정에 따른 버전을 관리해주는 시스템

[ Github ]

  • 클라우드 방식으로 관리되는 버전 관리 시스템(VCS)
  • 자체 구축이 아닌 빌려쓰는 클라우드 개념
  • 오픈소스는 일정 부분 무료로 저장 가능, 아닐 경우 유료 사용

[ Git Bash ]

  • 리눅스 기반의 명령어 수행을 위한 콘솔 프로그램
  • 리눅스 쉘(shell)과 같음 (MAC에서도 리눅스 쉘 기반으로 사용함)
  • [사용자]@[컴퓨터이름] [Bash이름] ~ [현재위치]

[ Git 사용자 등록 ]

  • 이메일 등록 : git config --global user.email "이메일주소"
  • 이름 등록 : git config --global user.name "이름"
  • config 정보 확인 : git config --list
  • 처음할 때만 등록한다.  성공여부는 알려주지 않습니다.

[ Git 사용자 삭제 ]

  • 사용자 이메일 삭제 : git config --unset user.email
  • 사용자 이름 삭제 : git config --unset user.name
  • 글로벌 사용자 이메일 삭제 : git config --unset --global user.email
  • 글로벌 사용자 이름 삭제 : git config --unset --global user.name

[ 로컬 저장소(Repository) 생성과 삭제 ]

  • 지정할 폴더에서 git init

가장 먼저 로컬에 소스코드를 저장할 저장소를 생성합니다.

저장소가 따로 생성되는 것이 아니라 미리 만들어둔 폴더를 저장소로 지정하는 것입니다.

저는 프로젝트 전체를 관리할 예정이므로 프로젝트 폴더를 저장소로 지정하겠습니다. 

 

먼저 cd 명령어로 저장소로 만들 폴더의 위치까지 들어갑니다.

윈도우에서는 경로표시에 역슬레시(\)를 사용하는데 bash에서는 슬레시(/)를 사용합니다.

탐색기에서 복사해서 가져오면 역슬레시라서 안들어가집니다.

저장소로 설정된 폴더는 뒤에 (master) 또는 (branch) 라는 표식이 붙습니다. 

 

지정한 저장소를 해제하기 위한 명령어는 따로 없다고 합니다.

그냥 탐색기에 들어가서 해당 폴더에 숨김 폴더로 생성되는 ".git" 폴더를 지워버리면 됩니다.

 

[ 프로젝트 커밋 하기 ]

  • git add 옵션(또는 파일명)
  • git commit -m "현재 커밋에 대한 설명(메모)"

1. add를 해서 로컬 저장소에 업로드할 파일 및 폴더를 추가 : 스테이징 영역이라는 가상의 공간에 먼저 업로드

2. commit을 해서 로컬 저장소에 실제로 업로드 : 실제 저장소에 업로드

 

[ 변경 사항에 대해 추가로 커밋 시점 만들기 ]

  • 변경 사항 검색 : git status

그리고 현재 저장소의 현황을 보는 "git status" 명령어를 입력하면

변경된 파일을 add해주지 않았을 때 빨간색으로 뜹니다.

빨간색은 Commit한 시점과 달라진 파일과 폴더를 의미합니다.  

커밋을 하면 "working tree clean"이라는 문구가 뜹니다.

 

[ 특정 커밋 시점으로 되돌아가기 ]

  • 커밋 목록 보기 : git log --oneline
  • 실제 폴더/파일을 커밋된 시점으로 되돌리기 : git reset --hard 커밋ID
  • 가장 최신 커밋(Head)시점을 해당 커밋으로 이동시키기 : git reset --soft 커밋ID

이제 수행된 커밋들을 찾아서 "test.txt"가 추가되기 전으로 되돌아 가기

"git log --oneline" 명령어를 입력하면 커밋의 ID와 입력한 메모들을 볼 수 있습니다.

순서는 시간 순서대로 아래에서 위로 올라갑니다.

변경된 파일들의 내용까지 모두 되돌릴 것이므로 옵션은 'hard'로 줍니다.

 

실제 파일이 지워진 것을 확인할 수 있습니다.

파일이 생기고 지워지는 것뿐 아니라, 파일 안에 변경된 내용까지 모두 되돌아갑니다.

소스코드도 해당 시점으로 돌아가게 됩니다.


reset 명령어의 --soft 옵션은 실제로 되돌아가는게 아니라

특정 시점 이후의 커밋 내용을 목록에서 안보이게 하는 것입니다.

커밋할 때 생기는 스냅샷 파일들은 일종의 연결리스트같이 엮여 있기 때문에,

중간에 있는 커밋을 reset(hard, soft 등 모두)하게 되면 그 이후에 커밋했던 내용도 목록에서 지워집니다.    

reset하면 그 이후의 커밋은 목록에서는 사라져 보이지만 삭제되지 않기 때문에 복구할 수도 있습니다. 

 

[ 깃허브(원격저장지)로 업로드하기 ]

  • 원격 저장소 주소 등록 : git remote add 원격저장소이름 깃허브 저장소 주소
  • 원격 저장소에 로컬 저장소 업로드 : git push 원격저장소이름 master(branch)
  • 'git remote -v' 명령어를 입력하면 등록된 원격 저장소들을 확인

1. 'git remote add origin' 명령어 다음에 복사한 URL를 붙여줍니다.

   origin : 원격 저장지 주소를 대표하는 이름

   Bash에서 붙여넣기는 [Shift + Insert] 입니다. 

 

[ 깃허브(원격저장지)에서 다운로드 하기 ]

  • 자신이 저장한 내용을 다시 받고자 할 때
  • 남이 공개해둔 소스코드를 받고자 할 때
  • 'git remote -v' 명령어를 입력하면 등록된 원격 저장소들을 확인

1. 내용을 저장할 로컬 저장소를 하나 만들고 그 곳으로 Bash 위치를 이동

2. git hub 에서 Clone or download'를 클릭하면 하면 주소가 나오는데 이 주소를 복사합니다.

   Bash에서 붙여넣기는 [Shift + Insert] 입니다. 

3. 'git clone 주소' 명령어를 입력해 다운로드


[ git add 취소 ]

  • git reset (전체 파일 add 취소)
  • git reset HEAD 파일 (특정 파일 add 취소)

 

[ git commit 취소 ]

  • git reset HEAD^ (가장 최신 커밋 1개 취소(삭제))
  • git reset HEAD^^(가장 최신 커밋 2개 취소(삭제))
  • 꺽쇠 갯수에 따라 최신 커밋을 필요한만큼 순서대로 삭제할 수 있음

1. "git status" 현재 comiit 상태 확인

2. "git log --oneline"    :  커밋 목록의 요약본을 확인

3. "git reset HEAD^"  

4. "git status"

5. git commit -m "코멘트"


레파지토리 생성하기

레파지토리를 생성할 때 아래에 java의 이그노 파일을 설정한 채로 생성한다.


gitignore 설정

https://gitignore.io/

 

gitignore.io

Create useful .gitignore files for your project

www.toptal.com

 

위 처럼 저장된 형식의 파일들은 깃이 관리를 안한다는 뜻으로

사이트에서 자동으로 설정해야될 파일들을 적어준다.

 

제일 처음 레파지토리를 생성한 경우엔

제일 아래 .project .classpath .settings/ 3개는 주석 처리 해준다.

 

원래 설정이 꼬이기 쉬운 부분이라 ignore처리를 해줘야 하지만 

처음 등록할 때 이게 없으면 프로젝트 자체를 못찾을 수 있기 때문에 일단 지워주고

프로젝트를 git에 올린 다음 주석을 해제한다.

 

빨간네모의 수정하기 버튼 눌러서 아까 복사했던 내용들을 저장하자. 


토큰 생성하기

계정을 만들고  로그인하면 우측 상단에서 프로필을 누르면 아래와 같은 메뉴를 볼 수있다.


이클립스에 깃허브 연동

Use or create repository ~ 를 체크하고 Create Repository 클릭 ->

폴더 내에 .git 이 생긴 것을 확인

 

지금까지 한 작업 : 로컬저장소1 과 원격저장소에 각각 깡통 하나씩 만듬 

웹에서 해당 Repository URI 경로 복사해오기 > 아이디, 비밀번호 입력 >Finish

 

commit and push

Remotes : origin: https://github.com/아이디/레파지토리이름.git경로 확인

Preview > Push > Close

깃허브 홈페이지 새로고침 > 파일 올라간거 확인

 

초기엔 ignore 파일이 없어서 모든 파일을 깃허브에 올릴 수 있다.

classpath와 project 는 다른사람pc 에 영향을 주므로 import 하면 안된다.

아까 저장한 ignore 파일을 pull 로 받아온다.

pull


이클립스 nothing to Fetch 에러 해결

https://d-e-v.tistory.com/5

 

이클립스 nothing to fetch 에러

Eclipse에서 git을 사용하다가 Nothing to fetch 에러가 발생할 때가 있다. Pull이나 Fetch from Upstream을 요청할 때 발생되는데, 해당 프로젝트의 Remote에 fetch가 안잡혀있어서 발생하는 에러입니다. 1. Gi..

d-e-v.tistory.com


로컬 파일이 수정되는경우 아래와 같이 변경됨.


브런치 생성

브런치란 원본파일을 보존하고 파일을 수정해 나가기 위한 것이다.

예전것이 마음에 들거나 작업 할때마다 원본에 저장하면 나중에 잘못되었을 경우를 대비가 되지 않므로

branch를 만들어서 관리한다.

 


과거 기록 보기


클래스와 패키지 커밋 취소

저기서 만약 '클래스와 패키지생성'을 취소하고 싶으면 해당 부분에 대고 우클릭을 해서 Revert Commit를 해준다. 그럼 해당 commit은 취소가 되어 없어진다. 취소 히스토리도 생긴다.


이전의 파일을 불러와서 새롭게 작업

이전의 파일을 불러와서 거기다 새롭게 작업을 하고싶을 때

마우스 우클릭 Replace with에서 commit을 클릭하면 아래 사진과 같이 하면 된다.

 

돌아가고자 하는 커밋을 선택 후 ok.

다만 주의할 점은 예전 작업 파일을 불러와서 작업을 하는것이긴 하지만,

불러오기전에 뭔가 새로 추가된 클래스가 있으면 그 파일은 삭제되지않는다.

( 기록이 남아있는 부분에 대해서만 롤백 )

728x90

+ Recent posts