https://www.mongodb.com/try/download/community

 

Try MongoDB Community Edition

Try MongoDB Community Edition on premise non-relational database including the Community Server and Community Kubernetes Operator for your next big project!

www.mongodb.com

위 사이트에서 windows 용 community Edition을 msi package로 다운받으면 된다.(버전 주의! 아래 참고)

 

처음에 나는 현재 버전의 6.0.4버전을 다운받았었는데 cmd창에서 mongod명령어만 실행되고,

mongo 명령어는 실행되지 않았다. 그래서 다운받은 Mongodb의 bin폴더를 보았더니 mongod파일은 있는데,

mongo파일이 없었다. 그래서 6.0.4버전의 파일을 삭제하고 다시 5.0.14버전을 깔았다. 

정상적인 bin폴더 안의 모습

 

그다음 시스템 환경변수 편집에 들어가서 Path에 bin폴더의 경로를 추가해주었다. 

 

cmd를 열어 다음 커맨드들이 정상적으로 작동하는지 확인하면 끝!

mongod 커맨드 실행
mongo커맨드 실행->show dbs커맨드 실행

'DBMS > MongoDB' 카테고리의 다른 글

[rangpid]Database/Collection 생성에 필요한 node.js파일  (0) 2023.02.12
.env 파일 작성하는 방법  (0) 2023.01.23

Node.js의 터미널에서 npm start를 실행하였더니 다음과 같은 에러가 발생하였다. 

> rangpid@0.1.0 start
> react-scripts start

: Permission deniedDocuments/Rangpid/Rangpid/node_modules/.bin/react-scripts: 3:
/mnt/c/Users/82108/Documents/Rangpid/Rangpid/node_modules/.bin/react-scripts: 4: Syntax error: word unexpected (expecting "in")

 

(프론트엔드와 백엔드의 작업물을 합쳐서 처음 실행해 본 상황)

프론트엔드 담당자분께서 리액트로 작업한 파일이 있었는데, 내 노트북에서 리액트를 처음 실행해봐서 그런게 아니냐는 의견을 제시하셨다. 내 노트북에서 리액트가 잘 작동되는지, 그리고 리액트 작동에 필요한 것들을 다운받기 위해서 cmd 창을 열고 다음 명령들을 실행하였다. 

npx create-react-app my-app
cd my-app
npm start

react 테스트 서버가 잘 실행됨을 확인할 수 있었다. 

 

cmd에서 원래 내가 실행하려던 파일의 위치로 가서 npm start를 실행하니 제대로 서버가 동작하였다. 

COOKIE_SECRET=dfjs22323234khfsdjfifjosidfsh
DB_URL=mongodb://127.0.0.1:27017/wetube

COOKIE_SECRET에는 랜덤한 숫자와 영어를 조합하여 적어준다. 

DB_URL에는 터미널에 mongo라고 쳐서 나오는 주소를 복사해서 붙여넣고, 그 뒤에 사이트이름(ex: wetube)를 써준다.

git push 실행 시 에러 해결

git push를 실행했을 때 다음과 같은 에러가 발생했다면??

 ! [rejected]        premium -> premium (fetch first)
error: failed to push some refs to 'https://github.com/~~~'

내가 로컬 레포지토리를 수정하는 동안 다른 개발자에 의해 리모트 레포지토리에 변화가 생겼다면 바로 git push를 쓸 수 없기 때문에 위와 같은 에러가 발생한다. 이때는 경우에 따라 2가지 방법이 있다.

 

  1. 수정된 내용을 확인할 필요가 없는 경우
  2. 수정된 내용을 먼저 확인하고 싶은 경우

1. 수정된 내용을 확인할 필요가 없는 경우

리모트 레포지토리에서 코드를 수정한 개발자를 신뢰하여 수정된 내용을 확인할 필요가 없을 경우, git pull을 한 다음 git push를 하면 된다. 

 

그런데 git pull을 실행했을 때 다음과 같은 에러가 발생할 수 있다. 

CONFLICT (content): Merge conflict in License.txt

https://becoming-developer.tistory.com/8 해결 방법은 이 링크를 참조하면 된다. 

 

2. 수정된 내용을 먼저 확인하고 싶은 경우

다른 개발자가 어떤 내용을 수정했는지 먼저 보고 싶은 경우에는 아래의 git fetch 커맨드를 활용할 수 있다. 

  • git fetch : 로컬 레포지토리에서 현재 HEAD가 가리키는 브랜치의 업스트림(upstream) 브랜치로부터 최신 커밋들을 가져옴(가져오기만 한다는 점에서, 가져와서 머지까지 하는 git pull과는 차이가 있음)

1. git bash 터미널에서 git fetch 실행

$ git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 689 bytes | 86.00 KiB/s, done.
From https://github.com/~~~
   68437c2..4cb5b5d  premium    -> origin/premium

2. git diff 커맨드를 통해 수정된 내용 확인

git diff [로컬 레포지터리의 브랜치] [리모트 레포지터리의 브랜치]

ex) git diff premium origin/premium

 

3. 리모트 레포지토리의 브랜치에 문제가 있을 때

   아래 2가지 방법 중 선택하면 된다. 

  1. 잘못된 코드를 작성한 개발자에게 코들르 고치고 다시 리모트 레포지토리에 올려달라고 하기
  2. 잘못된 부분을 알아서 해결하고 다시 git push 하기

2번 방법의 경우:

1. git bash 실행 후 아래 커맨드 입력

git merge [리모트 레포지터리의 브랜치]

2. visual studio code에서 파일 수정 후 저장

3. git bash에서 다음 커맨드 실행

git add .
git commit -m "커밋 메시지"
git push

 

코드를 누가 작성했는지 보기

  • git blame [파일명] : 특정 파일의 내용 한줄한줄이 어떤 커밋에 의해 생긴 것인지 출력 
  • git show [궁금한 커밋 아이디] : 더 자세히 보기, 실행 후 나가려면 q 입력

 

직전에 Remote Repository에 올라간 커밋 취소

  1. git revert [되돌리고 싶은 커밋아이디] : 특정 커밋에서 이루어진 작업을 되돌리는(취소하는) 커밋을 새로 생성(git log명령어를 통해 커밋아이디 확인 가능)
  2. 커밋 메시지를 입력하라는 창이 뜨면 (원하면 커밋 메시지 변경하고) :wq 입력
  3. git push

여러 커밋 취소

  1. git revert [커밋 아이디]..[커밋아이디] : 첫 번째에 쓴 커밋 아이디의 다음 커밋부터 두 번째에 쓴 커밋 아이디까지의 커밋에서 이루어진 작업을 취소하는 커밋을 생성
  2. git push

 

출처: 코드잇 Git 강의

'Git' 카테고리의 다른 글

git pull error 해결 방법  (0) 2023.05.19
[Git] Open Source Software  (0) 2023.04.06
브랜치 사용하기  (0) 2022.12.30
커밋 다루기 정리 노트  (0) 2022.12.30
Github에서 다른 프로젝트 가져오기  (0) 2022.12.30

커맨드 정리

  • git branch [새 브랜치 이름] : 새로운 브랜치를 생성
  • git checkout [기존 브랜치 이름] : 그 브랜치로 이동
  • git branch : 현재 레포지터리에 있는 모든 브랜치 조회
  • git checkout -b [새 브랜치 이름] : 새로운 브랜치를 생성하고 그 브랜치로 바로 이동
  • git branch -d [기존 브랜치 이름] : 브랜치 삭제
  • git merge [다른 브랜치 이름] : 현재 브랜치에 다른 브랜치를 머지

merge를 하다가 충돌 발생 시

1. 충돌 해결

1. 컨플릭트가 발생한 파일을 연다. (git status 커맨드를 통해 conflict가 발생한 파일 확인 가능)

2. 머지의 결과가 되었으면 하는 모습대로 코드를 수정한다. 

3. 커밋

    -git bash에서 다음 커맨드 실행

git add .
git commit

     -text editor에서 :wq 입력

 

2. merge 취소

  • git merge --abort : 머지를 하다가 conflict가 발생했을 때, 일단은 머지 작업을 취소하고 이전 상태로 돌아감

 

 

출처: 코드잇 Git 강의

'Git' 카테고리의 다른 글

[Git] Open Source Software  (0) 2023.04.06
Git 협업하기  (0) 2022.12.30
커밋 다루기 정리 노트  (0) 2022.12.30
Github에서 다른 프로젝트 가져오기  (0) 2022.12.30
Github 시작하기  (0) 2022.12.29

커밋 히스토리 살펴보기

  • git log : 커밋 히스토리를 출력
  • git log --pretty=oneline : --pretty 옵션을 사용하면 커밋 히스토리를 다양한 방식으로 출력할 수 있습니다. --pretty 옵션에 oneline이라는 값을 주면 커밋 하나당 한 줄씩 출력해줍니다.
  • git show [커밋 아이디 앞 4자리] : 특정 커밋에서 어떤 변경사항이 있었는지 확인

 

m 옵션 없이 커밋 메시지 남기기

1. 로컬 저장소에서 파일 수정

2. Git Bash 실행

git add .
git commit

3. text editor가 켜지면 키보드로 i를 누르고, 맨 위로 가서 커밋 메시지 작성

4. 저장하기

    esc를 누르기

    :wq 입력

    엔터

5. Git Bash에서 git log를 통해 제대로 입력됐는지 확인

 

최신 커밋 수정하기

1. 로컬 파일의 코드 수정

2. Git Bash 실행

git add .
git commit --amend
  • git commit --amend : 최신 커밋을 다시 수정해서 새로운 커밋으로 만듦

3. text editor에서 커밋 메시지를 그대로 써도 되고 수정해도 됨. 

    수정하고 싶은 경우 => 키보드로 i를 누르고, 맨 위로 가서 커밋 메시지 작성 및 저장(esc => :wq 입력 => enter)

4. 터미널에서 git push 실행

 

긴 커맨드에 alias 설정하기

  • git config alias.[별명] [커맨드] : 길이가 긴 커맨드에 별명을 붙여서 이후로 별명으로 해당 커맨드를 실행할 수 있도록 설정
git config alias.history 'log --pretty=oneline'

이렇게 쓰고 실행하고 나면 앞으로 git histroy라고만 써도 자동으로 git log --pretty=oneline을 실행하게 됨.

 

두 커밋 간의 차이 보기

  • git diff [커밋 A의 아이디] [커밋 B의 아이디] : 두 커밋 간의 차이 비교

   * 이전의 커밋 아이디를 먼저 써준다.

 

과거 커밋으로 돌아가고 싶을 때

  • git reset [옵션] [커밋 아이디] : 옵션에 따라 하는 작업이 달라짐(옵션을 생략하면 --mixed 옵션이 적용됨) 

(1) HEAD가 특정 커밋을 가리키도록 이동시킴(--soft는 여기까지 수행)

(2) staging area도 특정 커밋처럼 리셋(--mixed는 여기까지 수행)

(3) working directory도 특정 커밋처럼 리셋(--hard는 여기까지 수행)

그리고 이때 커밋 아이디 대신 HEAD의 위치를 기준으로 한 표기법(예 : HEAD^, HEAD~3)을 사용해도 됨

-HEAD~x는 현재 HEAD가 가리키는 커밋보다 x단계 전에 있는 커밋

 

커밋에 tag 달기

새 버전의 시작점이 되는 커밋처럼, 특히 그 의미가 중요한 커밋들은 태그를 달아주면 나중에 프로젝트의 이력을 파악할 때 도움이 된다. 

 

git tag [태그 이름] [커밋 아이디] : 특정 커밋에 태그를 붙임

 

프로젝트 디렉토리에 있는 모든 태그를 조회하려면,

git tag

각 태그와 연결된 커밋이 보고 싶으면,

git show [태그 이름]

 

git reset을 하고 나서 돌아오기

*reset을 해도 그 이후의 커밋들이 삭제되는 건 아님! => 단지 HEAD가 가리키던 브랜치가 새로운 커밋을 가리키게 될 뿐!

  • git reflog : HEAD가 그동안 가리켜왔던 커밋들의 기록을 출력

 

커밋 히스토리를 그래프 형식으로 보는 방법

  • git log --all --graph : 모든 브랜치의 커밋 히스토리를, 커밋 간의 관계가 잘 드러나도록 그래프 형식으로 출력

 

깔끔한 커밋 히스토리

  1. git rebase [브랜치 이름] : A, B 브랜치가 있는 상태에서 지금 HEAD가 A 브랜치를 가리킬 때, git rebase B를 실행하면 A, B 브랜치가 분기하는 시작점이 된 공통 커밋 이후로부터 존재하는 A 브랜치 상의 커밋들이 그대로 B 브랜치의 최신 커밋 이후로 이어붙여짐(git merge와 같은 효과를 가지지만 커밋 히스토리가 한 줄로 깔끔하게 된다는 차이점이 있음)
  2. 코드를 수정해서 conflict 에러 해결 후 다음 커맨드 실행
git add .
git rebase --continue

  

작업 내용 임시 저장

  1. 코드를 수정하던 중에 다른 브랜치로 이동해야 할 경우
  2. 잘못된 브랜치에서 작업하고 있었을 경우

작업 내용을 임시로 저장할 필요가 생긴다. 

 

관련 커맨드

  • git stash : 현재 작업 내용을 스택 영역에 저장
  • git stash list : 스택 내용 조회
  • git stash apply [커밋 아이디] : 스택 영역에 저장된 가장 최근의(혹은 특정) 작업 내용을 working directory에 적용
  • git stash drop [커밋 아이디] : 스택 영역에 저장된 가장 최근의(혹은 특정) 작업 내용을 스택에서 삭제
  • git stash pop [커밋 아이디] : 스택 영역에 저장된 가장 최근의(혹은 특정) 작업 내용을 working directory에 적용하면서 스택에서 삭제
  • git cherry-pick [커밋 아이디] : 특정 커밋의 내용을 현재 커밋에 반영

 

여러 커밋을 하나의 커밋으로 만들기

어떠한 커밋을 없었던 걸로 하고 싶을 때 git reset을 활용할 수 있다. 

예) 똑같은 함수를 더 효율적인 코드로 수정했을 경우

 

방법:

git reset --soft [커밋아이디]
git add .
git commit -m "커밋 메시지"

 참고=>git reset에서 옵션으로 --mixed나 --soft를 사용하면 HEAD는 이전 커밋을 가리키지만 working directory는 그대로다. 

 

 

출처: 코드잇 https://www.codeit.kr

'Git' 카테고리의 다른 글

[Git] Open Source Software  (0) 2023.04.06
Git 협업하기  (0) 2022.12.30
브랜치 사용하기  (0) 2022.12.30
Github에서 다른 프로젝트 가져오기  (0) 2022.12.30
Github 시작하기  (0) 2022.12.29

+ Recent posts