versioning

 

Working tree : 파일을 수정하는 곳 (버전으로 만들어지기 전 단계) 

-> 일단 어떤 수정이든 실행하면 Working tree에 올라감

 

Staging area : 버전으로 만들 파일의 모음 

-> Working tree에 있는 파일 중 버전관리를 하고픈 것을 (git add를 통해) Staging area로 이동

 

Repository : (git commit을 통해) 만들어진 버전

 

git init "디렉토리 경로" : 해당 경로를 리퍼지토리로 하여 버전관리 하라(initialize repository) -> git repository 생성(=.git)

(git init . : 현재 디렉토리를 리퍼지토리로)

 

git status : 상태 확인 (Working tree 상태)

 

git add 파일명 : 버전 관리를 위해 해당 파일을 Staging area에 올려라

git add 디렉토리명 : 해당 디렉토리 밑의 모든 파일을 add

(git add . 도 가능)

 

git commit : 커밋 실행(현재 Staging area의 상태를 가지고 버전 생성) (에디터 뜨면 거기서 동작 수행)

git commit -m "커밋 메세지" : 에디터 생략하고 해당 메세지로 바로 커밋

git commit -a : git add를 -a 옵션으로 주어 한 번에 처리할 수 있다

(단, 최초 한 번은 git add 로 untracked 상태를 벗어나야 -a 로 한 번에 처리 가능해짐. untracked일 때는 -a 안 먹힘)

git commit -amend : 커밋 메세지 수정

 

 

git log : 로그 확인

git log --stat : 버전 별로 좀 더 상세하게 로그 확인

git log -p : 버전 별로 삭제, 추가된 부분에 대한 로그 확인

git log --graph : 브랜치 관계를 그림으로 보여줌

git log --oneline : 각 버전을 한 줄로 간단하게 표시함

 

git diff : 최신 버전과 워킹 트리에 올라간 파일의 차이점을 보여줌

 

git reset --hard : 워킹트리의 내용을 지우고 파일을 최신 버전의 상태로 바꿈

git reset --hard 커밋ID : 워킹트리 내용도 지우고 해당 커밋 버전으로 리셋하겠다.
(해당 커밋이 마스터가 된다. 헤딩도 된다.) 

 

git checkout 커밋ID : 해당 커밋 버전의 브랜치에 헤드를 둔다

git checkout master : 마스터로 되돌아감

 

git revert 커밋ID : 해당 커밋에 대한 내용을 바로 이전 버전으로 되돌림

(R4는 유지한 채로 Revert R4를 만든다. 이때 Revert R4의 내용은 R4의 바로 전 버전인 R3과 완전히 동일)

(한참 전의 버전으로 돌아가고 싶다면 역순을 지켜서 revert를 실행해야 한다는데 무슨 말인지 이해 못함)

(당위성은 이해했는데 정확히 어떻게 revert를 해야하는지 모르겠음)

 

 

git config --global core.autocrlf true

 

 

 

 

 

 

branch, conflict

 

git branch : 생성된 브랜치들 모두 확인

(결과창에서는 head가 있는 브랜치에 *이 달려있게 된다)

git branch 브랜치명 : 해당 브랜치명으로 브랜치 생성

 

 

브랜치 생성 후 git log 하면 브랜치들까지 함께 확인 가능

 

여기서 "git check 브랜치명"을 통해 특정 브랜치에 헤드를 두고 해당 브랜치 수정 가능

 

git merge 브랜치명 : 현재 헤딩된 브랜치에 해당 브랜치의 내용을 병합함

(마스터에 헤딩된 상태에서 merge를 실행하면 병합된 새 브랜치가 마스터가 된다. 마스터가 아닌 브랜치에 헤딩된 상태에서 merge하면 새로운 브랜치가 생겨날 뿐 마스터는 그대로 유지된다.)

 

 

'기타' 카테고리의 다른 글

POSIX CLI  (0) 2021.01.09
Scanner, BufferedReader 입력  (0) 2021.01.08
인텔리제이 주요 단축키 모음  (0) 2020.12.27

pwd : 현재 디렉토리 확인

 

cd : 디렉토리 변경

cd / : 최상위 디렉토리로 이동

cd ~ : 홈 디렉토리(처음 열었을때 나오는 위치)로 이동

cd .. : 현재 디렉토리의 상위 디렉토리로 이동

 

ls : 현재 위치에 있는 파일 목록 확인

ls -l : 파일 자세히 확인 (수정날짜 등 여러 가지 정보들)

ls -a : 숨김파일가지 모두 확인

(-la, -al 로 두 옵션 동시에 사용 가능)

 

명령어 + --help : 해당 명령어에 대한 상세 설명

 

touch 파일명.확장자명 : 빈 파일 생성

touch .파일명.확장자명 : 숨김 모드로 빈 파일 생성

 

mkdir 디렉토리명 : 디렉토리 생성

 

mv 현재파일명 경로/새로운파일명 : 현재 디렉토리에서 "현재파일명" 파일을 다음 경로의 위치에 "새로운파일명"으로 이름을 바꿔서 옮긴다

("mv 파일명1 파일명2" 로 파일명만 바꾸기도 가능)

 

rm 파일명 : 파일 삭제 (디폴트로는 디렉토리는 삭제 불가)

rm -r 디렉토리명 : 디렉토리 삭제 가능 옵션

 

nano : 텍스트 에디터 열기

nano 파일명.txt : 해당 파일 편집 열기

cat 파일명.txt : 해당 파일 내용 출력

 

 

'기타' 카테고리의 다른 글

GIT CLI  (0) 2021.01.09
Scanner, BufferedReader 입력  (0) 2021.01.08
인텔리제이 주요 단축키 모음  (0) 2020.12.27

입력방식에 대한 이야기를 할 뿐, 속도에 대한 이야기는 하지 않는다. 

 

 

 

Scanner   nextInt(), next()

Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a + b);


Scanner sc = new Scanner(System.in);
String a = sc.next();
String b = sc.next();
System.out.println(a + " " + b);

공백 or 개행문자로 끊어서 받는다.

 

두 입력형식 모두 가능

(1)  ( nextInt() 사용했다고 가정 )

1 2'\n'

-> 3

 

(2)  ( nextInt() 사용했다고 가정 )

1'\n'

2'\n'

-> 3

 

이 경우는?

(3)  ( nextInt() 사용했다고 가정 )

1 2 3'\n'

-> 3

 

입력의 마무리는 개행문자 입력을 통해 이뤄지기 때문에 두번째 공백 이후에도 계속 입력할 수는 있지만 들어가지는 않는다. (1, 2 까지만 정상적으로 들어감)

 

 

 

Scanner  nextLine()

Scanner sc = new Scanner(System.in);
String a = sc.nextLine();
String b = sc.nextLine();
System.out.println(a + " " + b);

개행문자로만 끊어서 입력을 받는다.

String을 입력받는 함수이기 때문에 공백문자는 String의 일부로서 입력된다.

 

(1)

1234 1234 1234'\n'

asdf asdf asdf'\n'

-> 1234 1234 1234  asdf asdf asdf

 

공백문자는 입력을 종료시키지 못한다.

 

 

 

 

BufferedReader  read()

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

int a = br.read();
int b = br.read();
        
System.out.println(a + " " +b);

Single character 를 입력받아 그에 해당하는 아스키 코드를 int로 반환한다.

공백문자 입력은 입력을 종료하는 시그널로 사용되는 것이 아니라 하나의 단일문자로서 받아들여진다.

개행문자 입력은 입력을 종료하는 시그널로 사용되는 동시에 하나의 단일문자로서 받아들여진다.

 

(1)

1 2'\n'

-> 49 32

 

'1'에 대한 아스키 49

' '에 대한 아스키 32까지만 입력이 들어가고 2는 무시되었다.

 

 

(2)

(공백만 5개 입력)

-> 32 32'\n'

 

' ' 에 대한 아스키 32가 두 번 들어오고 뒤에 입력한 3개의 공백문자는 무시되었다.

다만 개행문자가 입력되기 전까지 입력을 계속 받을 뿐이다.

 

즉, 공백문자를 두개만 입력받으면 이미 a, b에 32가 할당되긴 했으나 개행문자 입력 전까지는 입력이 종료되지는 않은 상태를 유지하게 된다.

 

 

(3)

'\n''\n'

-> 10 10

개행문자에 대한 아스키 10이 두 번 들어오고 즉시 입력이 종료된다.

 

 

(4)

a, b에 1, 2를 할당할 생각으로

1'\n'

2'\n'

를 입력하려고 할 경우

1'\n' 단계에서 a = '1'의 아스키 49, b = '\n'의 아스키 10 이 입력되고 바로 종료되어버린다.

2'\n'를 입력받지 못하고 바로 종료된다.

 

 

(5)

12'\n'

-> 49 50

a = 49, b = 50 을 넣고 종료한다.

즉, BufferedReader의 next() 로는 두자리 숫자를 입력받지 못한다. (애초에 single character를 입력받는다고 했으니 당연)

 

단일문자로의 숫자를 숫자값 그대로 받고 싶다면

br.read() - '0' 으로 받으면 된다.

 

 

 

 

BufferedReader  readLine()

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String a = br.readLine();
String b = br.readLine();

System.out.println(a + " " +b);

줄 단위로 입력받아 String 으로 반환한다.  즉, 개행문자로 끊어서 입력을 받는다.

공백문자를 아무리 입력해도 String의 일부로서 입력되어질 뿐 입력 종료에는 영향을 미치지 않는다.

 

 

(1)

(공백문자 * 5)'\n'

(공백문자 * 5)'\n'

-> (공백문자 * 11) (sout에 있는 것까지 총 11개)

 

 

(2)

asdf asdf'\n'

1234 1234'\n'

-> asdf asdf 1234 1234

 

 

 

 

'기타' 카테고리의 다른 글

GIT CLI  (0) 2021.01.09
POSIX CLI  (0) 2021.01.09
인텔리제이 주요 단축키 모음  (0) 2020.12.27

라인 삭제 : Ctrl + Y

 

라인 복붙 : Ctrl + D

 

import, static import : Alt + Enter

 

getter, setter 자동 생성 : Alt + Insert

 

Rename : Shift + F6

 

출력문 생성 : sout -> tab

 

함수 설명 : Ctrl + Q 

 

자동정렬 : Ctrl + Alt + L

 

변수 추출 : Ctrl + Alt + V (반환값이 있는 함수를 변수로 안 받고 호출만 했을 때 이걸 사용하면 반환값을 받는 변수 자동 생성됨)

 

함수 추출 : Ctrl + Alt + M (지정된 로직을 하나의 함수로 추출해줌. 기존에 존재하던 로직은 이 함수를 호출하는 것으로 대체됨)

 

JUnit Test 자동 생성 : Ctrl + Shift + T (테스트 생성할 클래스에 커서 두고서 눌러야 함. test 부분에 패키지까지 똑같이 만들어진다. 당연히 테스트 로직은 직접 작성해야함)

 

다시실행 : Shift + F10 (바로 전에 실행한 것 다시 실행)

 

인라인 : Ctrl + Alt + N (같은 걸 사용하는 두 로직을 한 로직으로 줄여줌)

@Override
public List<Member> findAll() {
	List<Member> result = em.createQuery("select m from Member m", Member.class)
			.getResultList();
	return result;
}

에서 result에 Ctrl + Alt + N 하면

@Override
public List<Member> findAll() {
	return em.createQuery("select m from Member m", Member.class)
			.getResultList();
}

으로

 

psvm (public static void main) 

 

오류 찾기(오류 발생 라인으로 바로 이동) : F2

 

히스토리 : Ctrl + E (클래스를 디렉토리를 타고 갈 필요 없이 히스토리 검색으로 편하게 갈 수 있다.)

Ctrl + E + Enter 하면 빠르게 이전 클래스로 돌아갈 수 있음

 

다음줄로 자동 엔터 : Ctrl + Shift + Enter

); 같은 짜잘한 놈 자동으로 입력하고 바로 다음줄로 넘어갈 수 있다.

 

구현체 바로가기 : Ctrl + Alt + B 

해당 인터페이스를 구현하는 구현체들로 바로 이동할 수 있다.

 

클래스 검색 : Ctrl + N

존재하는 클래스, 인터페이스, 어노테이션 등을 빠르게 검색할 수 있다.

'기타' 카테고리의 다른 글

GIT CLI  (0) 2021.01.09
POSIX CLI  (0) 2021.01.09
Scanner, BufferedReader 입력  (0) 2021.01.08

+ Recent posts