9월, 2018의 게시물 표시

Git 되돌리기 (부제: revert, reverse)

이미지
이번에는 되돌리기 두번째 revert에 관해 알아보려고 한다. The difference between Reset and Revert - reset은 버전을 지우지만, revert는 버전을 유지한다. - reset은 선택한 버전으로 돌아가지만, revert는 선택한 버전의 변경사항을 반대로 수행해서 이전의 버전으로 돌아간다. - reset은 mode에 따라 다르지만, revert는 Working Directory에 영향을 주지 않는다. Precautions for Revert - 선택한 버전을 revert할 때 순차적으로 하지 않고 여러 버전을 건너뛰면 conflict가 발생할 수 있다. Understanding Revert 1. pending files에  +  README.md 파일이 있는 것을 보면, 이전 버전에는 없던 README.md 파일이 추가되었고 그 내용은 'this is git!'임을 알 수 있다. 만약 README.md 파일이 추가되기 전의 버전으로 돌아가고 싶다면 revert(reverse)를 이용하면 된다. 2. revert 하려는 버전을 우클릭하고  Reverse commit...  을 클릭한다. 3. reverse 확인 창이 뜨면  Yes 를 클릭한다. 4. revert 가 완료되어서 README.md 파일이 삭제되었다. 5. revert 전의 Working Directory 파일들이다. 6. revert(reverse)는 Working Directory에 영향을 주지 않는다. Revert in sequence several times & Why use the word "Revert"? 최근 커밋부터 순서대로 Revert를 하면서, Revert의 의미를 이해해보자. 1. "hello 추가" 버전을 현재 버전으로 적용하기 위해, 앞선 예제에서 한 Revert "this is git...

Git 되돌리기 (부제: reset)

이미지
이번 시간은 reset에 대해 알아보자. reset에는 3가지 mode가 존재한다. Hard - discard all working copy changes Mixed - keep working copy but reset index Soft - keep all local changes Hard reset mode는 Working Directory와 버전을 선택한 버전으로 되돌린다(재설정). - 선택한 버전 이후의 버전은 없어진다. Mixed reset mode는 Working Directory는 유지하고 index는 재설정한다. - Working Directory는 유지되고 index는 재설정되었으므로 Uncommitted changes을 인식한다. - 유지의 의미는 변경되지 않는 다는 것이다. - 커밋한 소스코드에 보안에 영향을 줄 수 있는 secret key와 같은 정보가 존재하는 해당 커밋한 버전들을 모두 삭제하고 현재 작업 중인 working directory를 유지해야 하는 경우에 사용하면 좋다. Soft reset mode는 모든 로컬 변경 사항을 유지한다. Hard 와 Soft mode 만 이번에 예제를 통해 알아볼 것이다. Try using reset : Hard mode 1. 먼저 hard mode 로 reset 하려는 버전을 우클릭한다.  그리고  Reset current branch to this commit 을 클릭한다. 2. Using mode :  Hard - discard all working copy changes 를 선택하고  OK  클릭 3. 'Hard' reset mode 사용시 로컬 working copy의 변경사항과 index(staging area)를 모두 되돌릴 것이라는 경고창이 뜬다.  Yes 를 클릭한다. 4. hard mode 결과, 선택한 버전이 최종 버전이 되고 선택한 버전 이후의 버전은 ...

Git 되돌리기 ( 부제 : Discard )

이미지
만약, 파일을 수정했는데 수정하기 전의 파일 상태로 되돌리고 싶으면 어떡할까? 이 상황에서 사용할 수 있는 Discard라는 기능을 이용해보자. Try using Discard 1. README.md 파일을 수정한다. 2. Uncommitted changes 라는 알림이 생성되었다. 하지만 커밋하지 않고 수정하기 전의 파일로 되돌리고 싶어서  Discard 버튼을 클릭한다. 3. discard 하려는 파일을 체크하고 Discard Changes 를 클릭한다. 곧바로 뜨는 확인창도 확인한다. 4. 수정했던 README.md 파일이 원래 상태로 돌아왔다.

Git 동작 구조 (Git 작업 흐름)

이미지
Working Directory, Staging Area, Repository 가 무엇인지 알아보기 전에 간단한 예제를 보자. Understanding Git a little bit with SourceTree 1. Repository 폴더에 READEME.md 파일을 만든다. 2. Unstaged files에 보라색 물음표  ? 로 표시된 README.md 파일이 생겼다. 3. wow.java 파일을 수정한다. 4. README.md 파일과 달리 wow.java 파일은 노란색  ... 로 표시되어 있다. 5. README.md 파일만 커밋한다. 6. 다시 README.md 파일을 수정한다. 7. 2번과 달리 README.md 파일이  ... 으로 표시된다. 1~7을 통해서 Git 은 한번이라도 add된 파일과 한번도 add되지 않은 파일을 구분한다는 것을 알 수 있다. 아래 그림을 참고하면, 한번이라도 add된 파일은 Modified 상태이고, 한번도 add된 적 없는 파일은 Untracked 상태이다. Git Architecture 아래 그림은 Git 의 기본적인 동작 구조(작업 흐름)이다. Git 작업 흐름 https://code.snipcademy.com/tutorials/git/fundamentals/adding-committing Add & Staging Staging Area에 파일을 추가하는 것 Commit Staging Area에서 Local Repository로 버전을 올리는 것 Working Directory & Unstaged 파일의 수정은 모두 여기서 발생한다. Untracked & Modified git에서 snapshot을 만들 준비가 되지 않은 상태이다. untracked : git 프로젝트에 생성된 모든 새로운 파일 modified : 이전에 있었으나 변경된 파일 ...

버전 만들기(stage -> commit)

이미지
이전 포스팅 :  버전관리시스템 개요 - 설치 - create repository Create a version(commit) 1. 임의의 파일 (wow.java) 을 repository 경로에 생성합니다.(repository 경로: C:\leedaeho\GIT\git_exam) 2. Sourcetree의 Unstaged files 에 방금 생성한 wow.java 파일이 생겼습니다.    Stage All  를 클릭합니다.(파일 마우스 우클릭 - add) 3. Staged files 리스트에 wow.java 파일이 올라간 상태입니다.   Commit 을 클릭합니다. 4. 만약, 오류창이 뜬다면 화면 최상단 Tools - Options - General 에서 Default user information 모두 입력 - OK 클릭 후 다시  Commit 합니다. 5. 좌측 BRANCHES - master 클릭하면 버전이 생성되어 있습니다. 6. (반복) wow.java 파일의 2번째 줄에 hello를 입력하고 저장합니다. 7. master branch 에 Uncommitted changes (커밋하지않은 변경사항)이 존재한다고 표시됩니다. 8. wow.java 파일을 stage에 올린 후 description에 'hello 추가'라고 입력하고  Commit 합니다. 9. master branch 에 방금 commit한 버전이 생성되었습니다. 필자는 몇번 더 파일을 수정하고 commit 하였습니다. 오른쪽 아래칸에 초록색 - 부분은 삭제된 코드 , 분홍색 +부분은 추가된 코드 입니다. 이처럼 추가, 삭제된 변경사항을 버전들을 통해 확인할 수 있습니다. 다음 포스팅 :