어제의 자투리 지식

공부는 해도해도 끝이없고,, 조금 공부하면 앞으로 공부할것이 왕창 생긴다.
화이팅이다ㅠㅠ
하지만 뭘 공부할지 알게되서 기쁘다

.bashrc 와 .bash_profile 의 차이

.bashc
이미 로그인 한 상태에서 새 터미널 창을 열 때마다 로드(Non-Login Shell에서 실행된다)

.bash_profile
시스템에 로그인할 때마다 로드된다. (Login Shell에서 실행) 대부분 개별 사용자에 대한 설정에 대한 코드들이 들어간다.

.profile
로그인할 때 로드된다. 개별 사용자에 대한 설정 코드들 중 bash와는 관계없는 부분을 기재한다.

@!@!@!@만약 Mac에서 새 터미널 창을 열 때마다 .bashrc를 로드하고 싶다면 .bash_profile에서 .bashrc를 로드하면 된다.

————————————————————
git reset -hard


reset은 head가 가리키는 branch가 가리키는 커밋을 변경하는 작업
이때 옵션을 —hard, —mixed, —soft 중 무엇으로 주느냐에 따라서
Stage, working directory의 상태가 달라진다.

hard의 경우는...
1. 최근 작업 내용을 전부 버리고 최신 버전의 상태로 초기화시킬 떄,
2. 프로젝트를 진행하다 앗! 뭔가 새로운 아이디어가 떠올랐어!! 브랜치를 하나 만들어볼까?

soft 의 경우는...
hard 옵션의 2번의 경우에서, 최근 작업 내용을 그대로 갖고와서 브랜치를 만들 고 싶을 때

mixed의 경우는...
최근 작업 내용을 그대로 가져 왔지만 이걸 적용해야 하나, 말아야 하나 조금 고민이 필요할 때..

————————————————————
windows terminal
소스트리

————————————————————————
ide vscode 차이점

vscode는 에디터같은 느낌
——————————————————————————-
깃 개념
Remotes

Git remote 명령으로 현재 프로젝트에 등록된 리모트 저장소를 확인할 수 있다.
이 명령은 리모트 저장소의 단축 이름을 보여준다.

저장소를 clone하면 origin 이라는 리모트 저장소가 자동으로 등록되기 때문에 origin이라는 이름을 볼 수 있다.

리모트 저장소 추가하기

  • 기존 워킹 디렉토리에 새 리모트 저장소를 쉽게 추가할 수 있는데 git remote add <단축이름> 명령을 사용한다

$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)

리모트 저장소를 pull하거나 fetch 하기

  • git fetch

이 명령은 로컬에는 없지만 리모트 저장소에있는 데이터를 모두 가져온다.그러면 리모트 저장소의 모든 브랜치를 로컬에서 접근할 수 있어서 언제든지 merge하거나 내용을 살펴볼 수 있다.
저장소를 Clone 하면 명령은 자동으로 리모트 저장소를 “origin” 이라는 이름으로 추가한다. 그래서 나중에 git fetch origin 명령을 실행하면 Clone 한 이후에(혹은 마지막으로 가져온 이후에) 수정된 것을 모두 가져온다. git fetch 명령은 리모트 저장소의 데이터를 모두 로컬로 가져오지만, 자동으로 Merge 하지 않는다. 그래서 로컬에서 하던 작업을 정리하고 나서 수동으로 Merge 해야 한다.

그냥 쉽게 git pull 명령으로 리모트 저장소 브랜치에서 데이터를 가져올 뿐만 아니라 자동으로 로컬 브랜치와 Merge 시킬 수 있다(다음 섹션과 Git 브랜치 에서 좀더 자세히 살펴본다). 먼저 git clone 명령은 자동으로 로컬의 master 브랜치가 리모트 저장소의 master 브랜치를 추적하도록 한다(물론 리모트 저장소에 master 브랜치가 있다는 가정에서). 그리고 git pull 명령은 Clone 한 서버에서 데이터를 가져오고 그 데이터를 자동으로 현재 작업하는 코드와 Merge 시킨다.

리모트 저장소에 push하기
프로젝트를 공유하고 싶을 때 Upstream 저장소에 Push 할 수 있다. 이 명령은 git push <리모트 저장소 이름> <브랜치 이름>으로 단순하다.(((git commands, push))) master 브랜치를 origin 서버에 Push 하려면(다시 말하지만 Clone 하면 보통 자동으로 origin 이름이 생성된다) 아래와 같이 서버에 Push 한다.
$ git push origin master
이 명령은 Clone 한 리모트 저장소에 쓰기 권한이 있고, Clone 하고 난 이후 아무도 Upstream 저장소에 Push 하지 않았을 때만 사용할 수 있다. 다시 말해서 Clone 한 사람이 여러 명 있을 때, 다른 사람이 Push 한 후에 Push 하려고 하면 Push 할 수 없다. 먼저 다른 사람이 작업한 것을 가져와서 Merge 한 후에 Push 할 수 있다.

@!@!@!@ -v 옵션을 주어 단축이름과 URL을 함께 볼 수 있다.
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)

리모트 저장소가 여러 개 등록되어 있으면 다른 사람이 기여한 내용(Contributions)을 쉽게 가져올 수 있다.

—————————————————————————————
Git status 현재상태

git에 의해 관리되는 파일들의 가능한 상태(status)
스테이징 에어리어에 등록된 파일의 상태는 Staged, 커밋된 파일의 상태는 Unmodified

—————————————————————————————
Git 명령어

git init : 깃 초기화
git config --global user.name "유저 이름" : 깃 사용자 이름 설정
git config --global user.email "이메일 주소" : 깃 사용자 이메일 설정
git config --global core.editor "vim" : 커밋 편집에디터를 vim으로 변경하기
git add 특정파일명 : 특정파일을 스테이징 하기
git add . : 전체 파일 스테이징 하기
git commit -m "메세지 내용" : 메세지와 함께 커밋하기
git commit -am "메세지 내용" : 스테이징과 커밋을 메세지와 함께 올리기
git commit --amend : 방금 커밋한 메세지 수정하기
git branch : 브랜치 확인
git branch 브랜치이름 : '브랜치이름'으로 브랜치 만들기
git branch -d 삭제할브랜치이름 : 브랜치 삭제(마스터 브랜치에서 해야한다.)
git checkout 브랜치이름 : '브랜치이름'으로 브랜치 이동
git log 브랜치1 ..브랜치2 : 브랜치1과 브랜치2사이의 차이점 보기
git merge 병합할브랜치이름 : 브랜치 병합
git log : 커밋 기록 보기
git log --stat : 커밋 기록을 커밋에 관련괸 파일과 함께 보기
git log --oneline : 로그를 한줄로 표기
git log --oneline --branches : 각 브랜치의 커밋을 확인
git log --oneline --branches --graph : 그래프 형식으로 표현
git status : 깃 상태 확인
git diff : 깃 변경 내용 확인
git checkout --파일이름 : 작업트리에서 수정한 파일 되돌리기
git reset HEAD 파일이름 : 스테이징 취소
git reset HEAD^ : 최신 커밋 취소
git reset 커밋해시 : 특정 커밋으로 되돌리기
git stash : 지금 하던 작업을 임시로 저장하기
git stash list : stash 목록 확인하기
git stash apply : git stash로 저장했던 작업 가져오기
git stash drop : stash 제거하기
git stash clear : 임시로 저장했던 stash 모두 제거
git stash show -p | git apply -R : 실수로 잘못 stash 한거 되돌리기
git remote add origin 원격저장소주소 : 원격 저장소에 연결
git remote -v : 원격 저장소에 잘 연결되었는지 확인
git push -u origin master : 지역 저장소의 브랜치를 원격 저장소의 마스터 브랜치와 연결 (한번만 하면됨)
git push : 원격 저장소에 올리기
git clone 원격저장소주소 지역저장소디렉토리 : 원격저장소 가져오기
git pull origin master : 원격 저장소의 내용을 지역 저장소의 마스터브랜치로 가져오기
git fetch : 원격 저장소의 브랜치 변화 정보만 가져오기

  • 깃명령어
  • 	git init : git 생성하기
  • 	git clone git_path : 코드가져오기
  • 	git checkout branch_name : 브랜치 선택하기
  • 	git checkout -t remote_path/branch_name : 원격 브랜치 선택하기
  • 	git branch branch_name : 브랜치 생성하기
  • 	git branch -r : 원격 브랜치 목록보기
  • 	git branch -a : 로컬 브랜치 목록보기
  • 	git branch -m branch_name change_branch_name : 브랜치 이름 바꾸기
  • 	git branch -d branch_name : 브랜치 삭제하기
  • 	git push remote_name — delete branch_name : 원격 브랜치 삭제하기 ( git push origin — delete gh-pages )
  • 	git add file_path : 수정한 코드 선택하기 ( git add * )
  • 	git commit -m “commit_description” : 선택한 코드 설명 적기 ( git commit -m “내용”)
  • 	git push romote_name branch_name : add하고 commit한 코드 git server에 보내기 (git push origin master)
  • 	git pull : git서버에서 최신 코드 받아와 merge 하기
  • 	git fetch : git서버에서 최신 코드 받아오기
  • 	git reset — hard HEAD^ : commit한 이전 코드 취소하기
  • 	git reset — soft HEAD^ : 코드는 살리고 commit만 취소하기
  • 	git reset — merge : merge 취소하기
  • 	git reset — hard HEAD && git pull : git 코드 강제로 모두 받아오기
  • 	git config — global user.name “user_name ” : git 계정Name 변경하기
  • 	git config — global user.email “user_email” : git 계정Mail변경하기
  • 	git stash / git stash save “description” : 작업코드 임시저장하고 브랜치 바꾸기
  • 	git stash pop : 마지막으로 임시저장한 작업코드 가져오기
  • 	git branch — set-upstream-to=remote_path/branch_name : git pull no tracking info 에러해결

—————————————————————————————
깃 추적에대해 알아보기

—————————————————————————————

  • 머지와 리베이스 차이


Git marge - master에서 git merge를 실행하게 되면 3-1,3-2 브랜치를 병합하는 커밋로그가 master에 head로 새로 추가된다.


Git rebase - master에서 git rebase를 실행하면 its-image 브랜치를 베이스(base)로 커밋을 재정렬한다.

@!@!@!@!@ = master에서 rebase를 하는 건 피하자. mster는 함부로 건드리지 않는 주의사항을 항상 기억하자.
Rebase를 하게 되면 커밋도 새로 쓰고 정렬도 새로하기 때문에 기존의 커밋트리가 완전히 달라진다.
- 같은 커밋 메시지여도 rebase전의 커밋로그와 후의 커밋로그의 해쉬 값이 달라진걸 확인해보자.
- 3-1,3-2의 브랜치의 커밋로그가 master커밋 트리 중간에 불쑥 들어온 걸 확인해보자

즉 리베이스 전에 master에서 분기했던 브랜치를 (커밋트리가 달라진) master에 병합할 경우 무수히 많은 충돌을 직면하게 될 수 있다.

master대신에 3-1,3-2브랜치에서 병합하기 전에 master를 리베이스하자.

master를 기준으로 3-1,3-2브랜치를 재정렬했기 때문에 master와의 충돌을 걱정할 일이 없다.

—————————————————————————————
리눅스 사용법에대해
Echo path
환경변수들의 경로인 Path를 출력하는 명령어는 echo$PATH이다. path들은 전부 : (콜론)으로 구별되어 있다.

———————————————————————————
리눅스 명령어 (0)

좋은 웹페이지 즐겨찾기