git remote add origin 내 깃허브 주소/레파지토리이름.git
파일을 내 원격저장소 origin(원격저장소 별칭)에 연결(등록)해죠
git remote 연결된 원격저장소 확인해죠
git remote -v 저장소 세분화해서 어디 연결되었는지 확인해죠(코드 받아오기(fetch)하는 원격저장소, 코드 올리기(push) 하는 원격저장소로 세분화)
git branch -M main 현재 브랜치 이름 바꿔죠(마스터를 메인으로 바꿔줌)
git push -u origin main origin이라는 원격저장소에 푸쉬해죠
여러 사람과 공유하는 원격저장소 코드를 내 마음대로 막 수정할 순 없음.
그래서! 요런 방법으로 (혼자)코드를 고쳐 리퀘스트(요청)을 보낸다!
1) 수정하고 싶은 저장소를 내 계정으로 '포크'(복제)해옴
2) 포크(복제)한 저장소를 내 로컬 컴터에 '클론'(깃 명령어 사용해 clone함)
3) 브랜치 생성 후 그 생성한 브랜치에서 작업
4) 작업한 브랜치 푸시
5) 풀 리퀘스트 보냄
1) 코드 읽는 게 어려워 이해하기 더 힘들었던 부분..
'가변성'의 문제점 => 서로 다른 객체인데 데이터가 같아져버리는 현상이 나타날 수 있음
새로운 user객체에 기존 user 객체 데이터를 할당(그냥 복붙)하고
그 새로 생긴 객체의 프로퍼티(이름)에 다른 이름 데이터를 할당
=> 이게 결국 기존 user의 이름 주소까지 바꿔버림
=> 결과적으로 user===user2
📌 이런 문제를 방지하기 위해(=데이터 불변성을 유지하기 위해) 아예 새로운 객체를 반환하는 함수를 써 user2에는 다른 데이터(newName)가 할당되게 함(자두 글씨).
📌 또 다른 방법으로 얕은 복사 또는 깊은 복사 사용할 수 있음.
=> 위 사진에서는 copyObject 함수를 사용했는데 (얕은 복사) 객체 프로퍼티 하나하나 돌면서(for-in구문) target객체 프로퍼티를 result프로퍼티에 할당
=> 그렇게 도출된 result는 target객체와 같은 프로퍼티(데이터)를 갖게된 (복사 완료된) 별도의 object객체가 됨.
=> 그래서 그 별도의 객체(User2)에서 프로퍼티에 접근해 다른 값(다른 이름)을 할당해도 User1에는 아무 영향을 주지 않음!
=> 결과적으로 user!==user2
🔥 하지만 이 copyObject도 한계가 있음. target에 있는 객체의 1depth만 복사하기에(=바로 아래 단계의 값만 복사) 객체 안에 또 다른 객체, 그 안에 또 다른 객체....즉 중첩된 객체가 있을 때 얕은 복사는 모든 프로퍼티를 복사할 수는 없음(그래서 얕은 복사인가?)
그래서 나온 깊은 복사.. 중에서도 재귀적 수행방식이 가장 알맞다!
즉 객체의 프로퍼티 중, 기본형 데이터는 그대로 복사하고 참조형 데이터는 다시 그 내부의 프로퍼티를 복사하는데 이를 재귀적으로 수행한다(함수나 알고리즘이 자기 자신을 호출하여 반복적으로 실행).