20210113_GitHub 복습 및 명령어 정리
1. 리눅스 명령어
pwd: 현재 위치 경로ls: 현재 파일,디렉 확인ls -a: 숨김 파일, 디렉 표시 (all)ls -l: 상세정보 함께 표시 (list)ls -r: 정렬 순서 거꾸로 표시 (reverse)ls -t: 작성 시간순 정렬 (time)cd 파일이름: 해당 디렉으로 이동
2. git 구조와 상태
- 작업트리(working directory) : 작업 공간
- 스테이지 (stage) : 버전으로 만들어질 파일 대기 공간
-
저장소(repotory) : 스테이지 , 저장소 영역이 .git 디렉임
- untracked files : 아직 한번도 버전관리 안한 파일
- unmodified : 한번 스테이징 되었던 파일
- nodified : 스테이징 경험이 있고 수정된 파일
- staged : 커밋 준비 단계엥 있는 파일 커밋하면 다시 unmodified 상태로 감
3. git 명령어
1) git 환경설정 명령어
git config user.name "이름": 환경설정git config user.email "이메일": 환경설정git init: 현재 위치에 지역 저장소 생성
2) git 기본 명령어
git status: git 상태 확인git add 파일 이름: 스테이지에 올림git add .: 작업한거 모두 스테이지에 올림
git commit -m"내용": 스테이지에 올라간 파일 버전 만들기git commit -am"내용": 스테이지 + 커밋 모두 한번에(근데 파일에 커밋 경험이 있어야 가능)git commit --amend: 방금 들어간 커밋 수정(편집기 실행시|눌러서 수정)
git log: 지금까지 커밋, 버전 확인git log --start: 커밋 관련 파일 까지 함께 보기git log --oneline: 한줄 커밋으로 보기 편함git log --branches: 각 브랜치 커밋도 함께 보기git log --graph: 관계 그림으로 보기git log master..브렌치 이름: 브렌치 비교 가능(다른 커밋만 볼수 있음)
git diff: 변경 사항 확인하기git checkout -- 파일 이름: 작업트리 변경 상태(stage엔 아직이고) 취소git checkout 특정 브랜치 이름: 해당 브랜치로 이동git checkout -b 브렌치 이름: 해당브렌치 생성후 이동
git reset HEAD 파일이름: 스테이징 까지 한경우 스테이징 취소git reset HEAD^: 커밋 까지 된경우 마지막 한줄 커밋 취소, 스테이지 까지 취소됨git reset --soft HEAD^: 최근 커밋을 하기전 상태로 작업 트리 되돌리기git reset --mixed HEAD^: 최근 커밋, 스테이징을 하기전 상태로 작업 트리 되돌리기git reset --hard HEAD^: 최근 커밋, 스테이징 파일 수정 하기전 상태로 작업 트리 되돌리기(되돌리면 복구 불가)git reset --hard 커밋해시: 특정 커밋 해시 상태로 감 (A 브렌치에서 B 브렌치 커밋해시를 사용하여 reset의 경우 A 브렌치 과거 커밋은 모두 삭제 되고 B브랜치 커밋 상태로 감 )
git revert 커밋 해시
git branch 브랜치 이름: 해당 이름브랜치 생성git branch: 현재 브렌치 확인git branch -d 브렌치 이름: 해당 브랜치 삭제
git merge 특정 브랜치 이름: 현재 브렌치에 특정 브랜치 병합git merge origin/master: 페치한 뒤 원격 master 브랜치 커밋인 경우git merge origin/브렌치 이름: 페치한 뒤 원격 다른 브랜치 커밋인 경우git merge FETCH_HEAD: 지역저장소에 반영하지 않은 최신 커밋 병합
git stash: 수정중이 파일 감추기, 되돌리기 (커밋 시키고 싶지 않을 때)git stash list: 감춘 파일들 목록 확인(최근:0 ~ 나중일수록 숫자가 높음)-> 선입 후출 stack 형git stash pop: stash 목록에서 가장 최근 항목 되돌리기-> 예전 수정된 상태로 되돌아감git stash apply: 또 사용될수 있을지 모르는 경우, 목록에서 최근 항목을 되돌리지만 목록 내용은 안제거 됨git stash drop: stash 목록 가장 최근 항목 제거
4. HEAD의 이해
HEAD : 현재 작업 트리가 어떤 버전을 기반으로 작업중인지 가리키는 포인터
HEAD->master->commit_1(commit_1 작성 상황에서 sub 브랜치 생성시)sub branch->commit_1(master - commit_2 작성)HEAD->master->commit_2(sub branch로 이동)HEAD->sub branch->commit_1
5. 깃허브 사이트 둘러보기
오픈 소스의 성지 깃허브 - explorer 메뉴 - explorer github
6. git 원격 저장소 관련 명령어
-
http://github.com/아이디/저장소명: 인터넷 주소창으로 접근가능 git remote add origin 주소: 원격 저장소 연결git remote -v: 원격 저장소 연결 확인git push -u origin master: -u 옵션 = 원격 저장소 첫 연결시 파일 올리기git push: 한번 연결되고 파일이 올라갔던 저장소에 파일 올릴때git pull origin master: 원격과 지역 저장소를 같이 만들 경우git pullgit cloen 주소 폴더이름: 원격 저장소 복제 ,(폴더 없어도 상관X) , 원격과 지역 저장소 자동 연결- 1개의 원격저장소에서 2개의 기기로 작업하면 push와 pull 작업을 무조건 해주자
git fetch: 저장소 커밋 정보만 가져와서 훑어보는 식 그리고 합치고 싶으면 pull이나 merge로 같게 만들면 됨(단, FETCH_HEAD라는 브랜치로 가져옴)
7. SSH(Secure Shell) 원격 접속
- 보안이 강화된 안전한 방법으로 정보 교환 방식
- 계정으로 인증하는게 아니라, 현재 사용하고 있는 기기를 인증
-
기기를 등록해 두면 언제든지 터미널에서 아이디 비밀번호를 쳐줄 필요가 없음 (다른 컴퓨터에 접속할 수 있는 비밀번호 생성)
ssh-keygen: ssh키가 저장되는 경로가 확인(/.ssh)하고 엔터엔터 두번: 비밀번호 생성 , id_rsa 파일 : 프라이빗 키, id_rsa.pub 파일 : 퍼블릭 키- 해당 경로의 파일 확인(없으면 cat명령 사용해서 파일 열기)하면 키 파일 만들어진거 확인 가능
- 깃허브 서버에 퍼블릭 키 전송
- 파일 열어서 ssh-rsa 부터 문자열 전체 복사
- 깃허브 사이트에 로그인하고 setting 메뉴 들어감
- SSH and gpg keys 누르고 New SSH key 누르기
- 알아볼수 있는 이름으로 넣고, key값 붙여넣기(빈칸 빈줄 없애서)
- add SSH key 버튼 눌러서 추가
- SSH 주소로 원격 저장소 연결하기
- 레포 만들고 SSH 버튼 눌러서 주소 복사
git init connect-sshcd connect-sshgit remote add origin 복사한 주소git remote -v: 연결 확인
8. Question?
- CRLF 문자
- 병합 자동화 프로그램 : P4Merge