디렉토리 이동
cd ~
: 홈 디렉토리cd /
: 최상위 디렉토리cd .
: 현재 디렉토리cd ..
: 부모 디렉토리pwd
: 현재 디렉토리 위치 확인주요 명령어
touch (file_name)
: 빈 파일 생성mkdir (dir_name)
: 디렉토리 생성cat (file_name)
: 텍스트 형태의 파일 확인mv (file_or_dir) (target_dir)
: 파일 및 디렉토리 옮기기
mv (file_name) (file_name)
: 파일명 변경cp (file) (target_dir)
: 복사cp -r (folder)
: 복사삭제 (영구적으로 삭제되니 주의)
rm (file_name)
: 파일 영구 삭제rm -r (dir_name)
: 디렉토리 영구 삭제기타
sudo
: 관리자 권한으로 실행code .
: vscode로 실행remote repository에서 origin과 upstream의 차이점
자주 쓰는 명령어
git add (파일명)
: 변경 내용을 staging area에 추가(파일명 대신 . 을 입력하면 전체 선택)git status
: 파일 상태 확인 (staging area에 추가 되었는지 구분)git commit -m "(메시지)"
: 커밋메시지 입력git log
: 커밋한 기록 확인git push
: 푸쉬git remote -v
: 리모트 저장소 확인브랜치의는 쉽게 말해 평행세계이다.
git branch (브랜치 이름)
: 브랜치를 추가할 수 있다
git checkout (브랜치 이름)
: 브랜치 이동
브랜치 이름을 슬래시(/)로 다음과 같이 작성하면 feat/comment
, feat/heart
feat그룹으로 묶인다.
두 버전을 합칠 수 있는 머지(merge)
git checkout (브랜치 이름)
: base가 될 브랜치로 이동git merge (브랜치 이름)
: base 브랜치에 합치기1git checkout master2git merge feat/comment
마스터 브랜치에 코멘트 브랜치를 병합함
충돌이 난다면...
conflict
이거는 나중에
Object.keys(obj).length
: 객체의 length를 확인하는 법Object.assign({}, obj)
: 참조 값이 아니라 값 그대로 복사koans 과제에 객체 마지막 문제에서 Object.assign()
이거 때문에 거진 한시간 머리를 쥐어 뜯어야했다.
1let a = { a: 1, b: 2 };2let b = Object.assign({}, a);3
4delete a.a;5
6console.log(a); // => {b: 2}7console.log(b); // => {a: 1, b: 2}
1let a = { a: 1, b: 2, obj: { sol: "솔", hee: "흐이" } };2let b = Object.assign({}, a);3
4delete a.obj["sol"];5
6console.log(a.obj); // => {hee: "흐이"}7console.log(b.obj); // => {hee: "흐이"}
Object.assign({}, obj)
을 이용해 깊은 복사를 하면, 두번 째로 들어온 인자(소스 값)가 객체에 대한 참조일 때 해당 참조 값만 복사한다. 결과적으로 깊은 복사가 되지 않는다. (“For deep cloning, we need to use alternatives because Object.assign() copies property values. If the source value is a reference to an object, it only copies that reference value.”)Object.assign({}, obj)
는 shallow copy 얕은 복사1let obj = {2 a: 123,3 b: "kimsol",4 c: true,5};6
7let arr = Object.keys(obj);8console.log(arr); // => ["a", "b", "c"]
1let arr = ["아..", "ㅠㅠ"];2let obj = Array.from(arr);3
4console.log(obj); // => {0: "아..", 1: "ㅠㅠ"};