라벨이 push인 게시물 표시

[Git] git add, commit, push 취소하기

git add 취소하기 파일 상태를 Staged => Unstage로 변경하기 $ git reset HEAD <file>  명령어를 통해 git add를 취소할 수 있다. 뒤에 파일명을 작성하지 않으면 add한 파일 전체를 취소한다. untracked 파일 삭제하기 git clean 명령은 추적 중이지 않은 파일만 지우는 명령어이다. 즉, .gitignore 에 작성한 무시되는 파일은 지우지 않는다. 디렉터리를 제외한 파일들만 삭제 $ git clean -f  디렉터리까지 삭제 $ git clean -f -d ignored 된 파일까지 삭제 $ git clean -f -d -x git commit 취소하기 commit을 취소하고 해당 파일들은 staged 상태로 워킹 디렉터리에 보존 $ git reset --soft HEAD^ commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에 보존 $ git reset --mixed HEAD^ // 기본 옵션 $ git reset HEAD^ // 위와 동일 $ git reset HEAD~2 // 마지막 2개의 commit을 취소 commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에서 삭제 $ git reset --hard HEAD^ commit message 변경하기 $ git commit --amend git push 취소하기 * 주의할점 이 명령을 사용하면 자신의 local의 내용을 remote에 강제로 덮어쓰기를 하는 것이기 때문에 주의해야 한다. 되돌아간 commit 이후의 모든 commit 정보가 사라지기 때문에 주의해야 한다. 특히, 협업 프로젝트에서는 동기화 문제가 발생할 수 있으므로 팀원과 상의 후 진행하는 것이 좋다. 가장 최근의 commit을 취소한다. (기본 옵션: --mixed) $ git reset HEAD^ Reflog 목록 확인 (브랜치와 HEAD가 지난 몇 달 동안에 가리켰었던 커밋) $ git reflog 또는 $ git log -

[JavaScript] 불변성 유지 (push, concat, 전개 연산자(spread operator) 비교해보기)

이미지
불변성 유지 이전까지 몰랐는데 리액트를 공부하면서 불변성에 대해서 알게되었다. 리액트에서 배열에 값을 추가할 때 배열의 불변성은 유지하면서 값을 추가해야한다.  일반적으로 push, splice, unshift, pop 메서드들은 배열을 직접 수정하기 때문에 불변성을 유지하기 위해서는 사용하면 안된다. 그러므로 기존의 배열은 그대로 유지하지하면서 기존의 배열을 기반으로 데이터를 추가한 새로운 배열을 만들어서 값을 수정할 수 있는 메서드인 concat, slice, map, filter 와 같은 메서드들 또는 전개 연산자(spread operator) 사용하여 불변성을 유지하면서 값을 추가해야한다. 불변성을 유지해야지 리액트의 특성을 이용하여 모든 데이터들을 필요한 상황에 리렌더링 되도록 설계할 수 있고 나중에 성능 최적화도 할 수 있다. push와 concat의 차이 ex1) push 보통 push는 배열에 새로운값을 추가할때 사용한다. 위 예제를 보면 arr배열에 숫자6을 추가해서 원본 데이터가 변경되어 반환되는것을 확인할 수 있다. ex2) concat concat 또한 push와 같이 배열에 값을 추가할 수 있다. 하지만 위 예제를 보면 원본데이터 arr의 출력값은 그대로이고 concat을 사용해 숫자6을 추가했을때 원본데이터의 수정이 아닌 새로운 배열객체를 만들어 값을 추가한다는 차이점을 확인할 수 있다. react에서 push를 사용해서 값을 추가할수도있지만 추후에 성능개선을 하기 어렵게되고 수정하기 어려운 문제를 발생시킬 수 있으므로 concat을 통해 원본데이터 객체는 유지하면서 새로운 객체 값을 가지고 문제를 풀어 나가는것이 좋다. 요즘 많이 사용되는 전개 연산자 (spread operator) 를 보면 전개 연산자 (spread operator) 위 예제처럼  arr 원본 배열은 그대로 유지하면서 값을 복제하고 새롭게 데이터를 추가하여 반환하는 arr3 배열을 확인할 수 있다. 이처럼 전개 연산자를 사용하여

[Git] Git 명령어 와 git flow

이미지
Git의 목적 : 버전관리, 백업, 협업 Git을 통해 버전을 관리하고 그 버전을 원격 저장소인 GitHub에 백업하고 이를가지고 팀원들과 같이 협업한다. git flow $ git init 명령어로 해당 폴더를 git으로 관리할 수 있도록 초기화 할 수 있다. 기능별로 또는 사람별로 또는 특정한 기준에 따라 각각의 branch를 생성한다. 각각의 branch별로 개발을 진행하다가 리뷰하는 시기를 정해서 master 또는 main branch로 병합을한다. 무조건 master 또는 main  branch에서 할 필요는 없으며 특정 branch를 병합 branch로 정해서 병합한다.  상황에 따라 다르지만 branch 병합시 많은 conflict가 발생하는데 이러한 오류들을 다 처리한뒤 문제없는 코드들을 master branch로 옮긴다. master branch는 최종적으로 배포될때만 건들이도록 한다. 병합하고 배포를 끝내고나면 master branch에서 병합된 작업 결과물을 각각의 branch에 동일할 수 있도록 동기화해야하므로 각 branch에서 $ git pull 하여 동일한 코드로 다시 작업을 이어갈 수 있도록 한다. 이렇게 작업하던중 급한 버그가 발생하면 급한버그를 처리할 브랜치(hot fix)를 하나 생성한다. 급한 버그를 처리해서 바로 마스터 브랜치에 적용시킨다. 이때도 수정된 작업물을 모든 각각의 브랜치에 동일하게 적용시키고 작업을 이어나간다. 동일한 작업환경에서 작업을해야 오류발생 확률을 줄일 수 있다. hot fix의 경우 한번 사용되고 버려지므로 예외적으로 적용시키지 않아도 된다. 즉 마스터 브랜치를 모든 브랜치가 예의주시하고 있어야 한다. 위에 설명을 키노트로 직접 그려봤다.   👨‍💻  git 명령어  git 명령어 help 작성한 명령어에 대한 도움말을 확인할 수 있다. 어떻게 사용해야하는지 등등 git init 해당 폴더를 git이 관리할 수 있는 환경으로 초기화 git status git이 관리할 수 있는 파일 목록 확인

[JavaScript] array (배열)

배열은 순서가 있는 데이터를 저장할 때 사용되는 자료구조 이다. 예를들면 html 요소 목록, 1등부터 3등까지 순위 등등 순서대로 데이터를 정렬할때 사용한다. 배열은 값이 들어오는 순서대로 정렬되며 특별한 객체이다. 그렇다면 객체를 사용하여 데이터를 정렬해도 될 수 있다고 생각할 수 있지만 배열은 우리가 알고있는 객체와는 조금 다른 특별한 객체이며, 일반적인 객체의 경우 데이터 목록을 만들 수 있지만 순서대로 자료를 저장할 수 없다. 일반 객체는 배열처럼 데이터를 순서대로 작성하여도 순서대로 저장과 출력이 되지 않는다. 위에서 말했듯이 배열은 특별한 객체이다. 배열 또한 객체와 같이 프로퍼티를 추가하거나 하는등의 동작을 할 수 있다. 하지만 배열은 순서가있는 자료들을 다루는데 특화되어있으므로 일반적인 객체와 같이 프로퍼티를 추가한다던가 할 경우 순서대로 일을 처리하는것에 최적화되어 동작할 수 있는 방식을 방해하게 되므로 배열이 가지고있는 최적화된 성능이 떨어지게 된다. 그러므로 프로퍼티를 추가하거나 임의의 키를 사용해야 한다면 배열보다는 일반 객체를 사용하는것이 좋다. 배열은 일반적으로 아래와 같은 두가지 문법을 사용한다. let arr = []; let arr = new Array (); let fruits = [ "apple" , "banana" , "lemon" ]; console . log ( fruits [ 0 ]); // apple console . log ( fruits [ 1 ]); // banana console . log ( fruits [ 2 ]); // lemon 배열에는 문자열 이외에도 객체, 함수, boolean 그리고 자기 자신과 동일한 자료형인 배열 등등의 여러가지 자료형이 들어올 수 있다. 배열 안에 값을 출력하기 위해서는 인덱스 값을 사용하여야 한다. 일반적으로 사람들은 1번, 2번, 3번과 같이 숫자를 1부터 세지만 컴퓨터의 경우 0부터 숫자를 세기 때문에 첫