일단 씻고 나가자
23.05.16 본문
2023. 05. 16 화요일
[Git] rebase란? merge와 차이? 사용 명령어?
: merge와 비교되는 개념.
master에서 최초 분기되었을 때 master과의 코드를 공유하는 commit을 base라 한다.
rebase는 이 base를 바꾼다는 뜻으로, 기존의 merge가 master의 최신 commit과
현재 branch의 최신 commit을 병합했다면
rebase는 임시 공간을 만들어 기존 base부터 현재 branch의 최신 commit 객체들인 flow 내의 commit 객체들을 저장한 후 master의 최신 commit에 이어 붙여 commit 객체를 최신화한다.
rebase는 위험하므로 남의 push 커밋을 rebase 하면 남이 다시 push 했을 때 다시 merge 해야 하는 위험이 있지만 병렬 모형의 merge와 다르게 직렬형이므로 플로우가 단순해진다.
명령어는 A 브랜치에서 B의 최신 commit을 base로 rebase 하려면
(A로 checkout 한 상태에서) git rebase B 로 사용한다.
이때, 두 브랜치에서 같은 파일을 수정하고 commit 했다면 conflict가 난다. (다른 파일만 존재할 땐 ok)
- [regex] 자바로 정규식을 구현하는 두 클래스와 사용 방법?
: java.util.regex. 의 Pattern과 Matcher 클래스를 사용한다.
Pattern은 정규식을 담는 클래스로 Pattern pattern = Pattern.compile(“정규식”);으로 선언.
Matcher는 실제 문자열에 대한 정규식을 판단하는 클래스로, 문자열이 String str일 때,
Matcher matcher = pattern.matcher(str); 으로 선언한다.
이렇게 선언된 matcher 내장 함수로는 find, group, start, end 등이 있다.
find() // 해당 문자열에 정규식에 해당하는 부분이 있는지 boolean 반환
group() // 정규식에 해당하는 문자열을 String 반환
start(), end() // 정규식에 해당하는 부분의 index를 start, end+1로 반환
- [Effective Java] 클래스의 compareTo를 구현하는 두 가지 방법?
1. 대소 비교
2. stream 이용
// stream에서의 주의점은 comparator 객체를 comparing~ 함수를 통하여 비교하기 때문에 함수형 프로그래밍의 규칙에 따라 getter/setter를 활용, ::을 통해 값 비교해야 하며 int, double 등의 제공하는 자료형이 아닌 경우를 따로 함수를 달리 써서 분기해야 한다.
getter/setter가 아닌 직접 변수명을 쓸 수도 있지만 (ex. Person.age) 이렇게 되면 static으로 선언된 comparator 객체에 대하여 모든 변수가 static으로 선언되어야 한다.
- 리눅스 기본 명령어? (옵션, 현재 위치, 위치 이동, 파일 목록, 파일 내용, 삭제, 폴더 생성)
1. man [명령어] // manual. 명령어에 붙일 수 있는 여러 옵션에 대해 알려줌.
2. pwd // print working directory. 현재 작업 중인 디렉토리 위치.
3. cd [경로] // change directory. ~ 폴더 혹은 위치로 이동.
경로는 절대, 상대 경로 모두 가능.
cd ~ 의 경우, 사용자의 home/사용자명 폴더로 이동한다.
cd – 의 경우, 이전에 이동했던 폴더로 이동한다.
4. ls // list segments. 현재 폴더의 하위 폴더 및 파일을 모두 보인다.
ls –al 의 경우, 숨긴 파일(a)과 파일 권한 및 정보(l)를 보인다.
5. cat [파일명] // concatenate. 해당 파일의 내용을 보인다.
6. rm [파일 혹은 디렉토리명] // remove. 파일 혹은 디렉토리를 삭제한다.
rm –r [디렉토리] 의 경우, 모든 하위 디렉토리 삭제.
rm –f [파일 혹은 디렉토리명] 의 경우, 강제로 삭제.
7. mkdir [디렉토리명] // make directory. 디렉토리를 만든다.
- 리눅스의 파일 권한에 대하여 10자리 설명?
기본적으로 맨 앞자리는 파일 타입을 알려준다.
소유자는 속한 그룹이 있는데, 소유자를 제외한 나머지 그룹원들의 권한이 두 번째이다.
세 번째는 기타 사용자의 권한이며, 공개라고도 한다.
https://gomguard.tistory.com/76
- 리눅스의 특정 파일 권한을 바꾸는 명령어와 방법?
: chmod (change mode)를 활용한다.
chmod [권한 관련 숫자] [파일 이름]처럼 사용한다.
chmod –R [권한 관련 숫자] [디렉토리명]처럼 사용하는 경우도 있는데,
이는 해당 디렉토리 하위의 모든 폴더와 파일을 [권한 관련 숫자]의 권한으로 바꾼다는 의미.
단, 이는 소유자의 파일만 설정할 수 있다. (root의 파일은 변경 불가)