2021. 7. 7. 00:37ㆍgit,github
1일차 정리
기본적인 CLI 명령어
- `ls`: 현재 폴더의 파일 목록 확인
- `cd`: 다른 폴더로 이동
- `mkdir`: 새로운 폴더 생성
- `touch`: 새로운 파일 생성 (빈 파일)
- `cp`: 파일 복사
- `mv`: 파일 이동 (잘라내기 > 붙여넣기) + 파일 이름 변경
- `rm`: 파일 삭제 (remove), 폴더도 삭제 가능
- 만약에 폴더 안에 폴더가 있으면? > `rm -r` 내부의 폴더도 같이 삭제
- `rm -r` + force: `rm -r -f` or `rm -rf` : 내부의 폴더도 삭제하면서 강제로 삭제
Git 명령어
- `git init`: 해당 폴더를 Repository로 만들겠다.(== git으로 관리하겠다!)
- 앞으로 해당 폴더의 역사(commit, history)는 git이 관리한다!
- (github.com) `New Repository` -> Repository 생성
- `git status`: 현재 Repository의 상태를 보여준다.
- 현재 브랜치, 현재 Working Directory, 현재 Staging Area
- 자주 입력해서 항상 확인을 해야합니다.
- `git add`: 특정 파일 및 폴더를 Staging Area로 올립니다.
- Staging Area: commit을 남길 파일 및 폴더를 준비하는 곳!
- `git commit`: Staging Area에 있는 파일 및 폴더의 스냅샷(기록)을 남긴다!
- (필수) 기록을 남길때는, 메시지가 항상 같이 있어야 함!
- `git commit -m '메시지'`
- (필수) 기록을 남길때는, 메시지가 항상 같이 있어야 함!
- `git log`: 이 때까지 남긴 commit들을 확인합니다.
- commit hash: 자동 생성(사람으로 치면 주민등록번호, 고유한 값)
- commit 작성자 정보(이메일, 이름), 작성 시간, 작성 메시지
Remote 관련 명령어 (GitHub)
- `git remote add origin 주소`: Remote(GitHub) 주소를 origin이라는 별명으로 추가한다!
- `git push origin master`: origin이라는 별명을 가진 주소로 master 브랜치(commit들)를 push 한다(== 올린다)!
- `git pull origin master`: origin이라는 별명을 가진 주소로부터 master 브랜치(commit들)를 pull 한다(== 내려 받는다!)
- `git clone 주소`: Remote 주소의 Repository를 clone 한다(== 내려받는다!)
Markdown, README
- 지금 작성 중인게 마크다운이고, README라는 이름을 가지면 GitHub에서 나서서 보여준다!
06.오류 메시지들
error: src refspec master does not match any
error: failed to push some refs to
commit이 없는 경우!
branch가 없는 경우!
Push가 안돼요!
$ git push origin master
To https://github.com/nwith/TIL-test.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/nwith/TIL-test.git'
hint: Updates were rejected because the remote contains work that you do
# 업데이트가 거절되었다. 왜냐하면 remote가 니가 local에 들고 있지 않은 commit을 들고 있다.
hint: not have locally. This is usually caused by another repository
pushing
# 이 상황은 보통 같은 주소로 다른 repository를 push할 때 발생할 수 있다.
hint: to the same ref. You may want to first integrate the remote changes
# push하기 전에 remote(GitHub)의 변경 사항을 먼저 반영해야할 수도 있다.
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
거절이 된 상황
Local(내 컴퓨터)의 commit들과 Remote(GitHub)의 commit들이 일치가 되지 않아서, 순서, 있어야 하는 것들이 없어서
그렇다면, Push가 안되면 Pull을 먼저!
아래와 같은 Commit message를 작성하는 화면이 나옴!
Vim 에디터의 조작
- esc
- shift 누른 상태에서, z 두번 (또는 `:` -> `q` -> 엔터)
07. 최근 commit 수정하기
1. `git commit --amend`
2. Vim!
-i: 편집 모드
-commit 메시지 자유롭게 수정
-esc: 편집 모드 종료
-: > `wq` > enter! : 저장(`w`)하고, 종료(`q`)!
3. 수정 완료!
08. 취소하기
1. git add 취소하기
f.md이 추가(Staging Area에 등록)되어 있는 상황
-
- `git restore --staged 파일명`: 파일명 뿐만 아니라 폴더 명도 됩니다.
- `git restore -S 파일명`
- 구버전
- `git reset HEAD 파일명`: 지금도 동작하기는 합니다!
- `git restore --staged 파일명`: 파일명 뿐만 아니라 폴더 명도 됩니다.
- `git commit` 취소(삭제)하기
- `git reset {옵션} {위치}`
- 상대적 위치 (필수)
- 현재 위치 == `HEAD`
- 1 commit 전 == `HEAD~1` (`HEAD~` 로 표현 가능)
- 2 commit 전 == `HEAD~2`
- 절대적 위치 == hash (ex. `bb4b839`)
- `git reset bb4b839`
- 옵션 (선택) 3가지
- `--mixed`(기본값)
- commit 했었던 파일과, 현재 WD내용을 합쳐줌
- commit 했던 내용은 그대로 남습니다.
- `--soft`
- commit 했었던 파일을, Staging에 넣어줌
- commit 했던 내용, 그대로 남습니다.
- `--hard`(주의!)
- commit 했었던 파일을, 모조리 날리고 이전 commit의 상태로 갑니다.
- commit 했던 내용 사라짐!
- `--mixed`(기본값)
- 상대적 위치 (필수)
- `git reset {옵션} {위치}`
- 작업한 내용 취소(삭제)하기
- 아직 WD에 있는 것들을 되돌리기(== `ctrl + z`)
- 되돌리게되면 원래대로 돌아갈 수 없음! (주의!)
- `git restore 파일명`
- 구버전
- `git checkout -- 파일명`
- 제약사항
- 이미 git으로 관리한적 있는 파일들만 가능!
- 원본 무엇인지를 안다 == 원본과 지금 작업중인 내용의 차이를 알고있다!
- 그렇기 때문에 되돌리는 것이 가능!
- 이미 git으로 관리한적 있는 파일들만 가능!
- 아직 WD에 있는 것들을 되돌리기(== `ctrl + z`)
- `git push` 취소(?)하기
- git push는 결국 공개적으로 commit 한 사실을 널리 알리는 것!
- 그런데 이것을 되돌린다?
- 쉽게 되지 않는다!
-
- 강제(force)로 덮어 씌우기 (권장하지 않음!)
- 쉬운 만큼 빠릅니다!
-
- `git push -f`: 강제로 push
- 되돌린 사실을 알리는 것 (revert) (권장!)
- revert도 commit이다!
- `git revert {위치}`
- 상대적 위치
- HEAD, HEAD~, HEAD~2
- 절대적 위치
- `hash`
- 상대적 위치
- 강제(force)로 덮어 씌우기 (권장하지 않음!)
09. gitignore
git으로 관리하고 싶지 않은 파일을 관리하는 파일
위치 - `.git` 폴더(우리가 git init을 입력한 위치)와 같은 위치에 `.gitignore` 파일
Unix 시스템 상에서는 `.` 으로 시작하는 파일은 `숨김 파일`
사용법
data.csv # 특정 파일
secret/ # 특정 폴더
*.png # 특정 확장자 *.log
!profile.png # 모든 png는 빼지만, profile.png는 포함해라!
유의 사항
gitignore에 나열된 파일은, 처음부터 git으로 관리된 적이 없어야 적용받습니다!
그래서 처음부터 작성해서 무시할 수 있도록 해야함!
-
- 그렇다면 이미 git으로 관리되고 있는 파일들을 어떻게 제외할 수 있을까?
- `.gitignore`에 파일명 작성
- `git rm --cached 파일명`
- git에서 더 이상 관리하지 않겠다!
- WD에서 삭제를 해서 더 이상 관리하지 않겠다!
- 그렇다면 이미 git으로 관리되고 있는 파일들을 어떻게 제외할 수 있을까?
- gitignore 생성해주는 서비스
10. Git Branch
- master 브랜치 위에서 모든 것을 했습니다.
- `git-branch` 폴더 생성 -> GitHub에 올리지는 않습니다.
- `git branch`
- 현재 Repository의 모든 branch의 목록을 보여줌
- `git branch {브랜치명}`
- 브랜치명으로 새로운 브랜치 생성
- `git switch {브랜치명}`
- 브랜치명으로 이동
- 구버전
- `git checkout {브랜치명}`
- 현재 내가 있는 브랜치 이름 확인
- `git branch`
- `git status`
- git bash 끝에 보여짐!
- `git log` 그래프와 함께 보기
- `git log --oneline --graph --all`:
- 한줄로 보기 + 그래프 보기 + 모든 브랜치
- `git log --oneline --graph --all`:
- `git branch -d {브랜치명}`: 브랜치 삭제!
- $ git branch -d sub # 병합되지 않은 상태에서 삭제 불가능
error: The branch 'sub' is not fully merged.
If you are sure you want to delete it, run 'git branch -D sub'. # -D
11. Git Merge
Fast-Forward Merge
3-way Merge (Merge commit)
Merge Conflict
#git을 사용한는 형태,방법
-혼자 쓰는 것
혼자 프로젝트 진행할때, 코드 관리의 도구로썬
git 명령어 + 개인 git hub
- 팀(동료) - collaboration
git hub + 각자의 git
- 전 세계 사람들과 -collaboration
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
https://hpy.hk/ai-files
자격증명 관리자
깔끔한 화면은
clear을 적거나 컨트롤 + L
fork & pr (fork & pull request)
github 우측상단 fork가 있는데 레퍼지토리 모두 복사가능 (세계적으로 할때 사용)
pull reauest(만든이가 권한 허락해야 댐)
레퍼지토리 삭제
settings -> danger zone -> delete
git push orign master안쓰고 git만 써도 될때
1. 클론을 받고
2. git push -u origin master
staging특징
같은 파일이라도 staging에 다르게 들어가면 다른 commit
git init:앞으로 해당 폴더를 Repository로 만들겠다(== git으로 관리 하겠다)
git reset 좌표 : 과거로 돌아 감
git remote add origin 주소:Remote(GtiHub)주소를 origin이라는 별명으로 추가
git push origin master: origin이라는 별명을 가진 주소로 master브랜치(commit들)을 pusg한다.
git pull origin master:origin이라는 별명을 가진 주소로부터master브랜치(commit들)을 pull 한다(== 내려 받는다!)
git clone 주소: Remote 주소의 Repository를 clone한다(전체 다운)
마크다운 READ ME라는 이름을 가지면 GitHub에서 나서서 보여준다.
restore & reset: 취소하기
git log에서 head -> master는 브랜치 최신 상태
git pull push 뒤에 origin master 를 붙이면 좋다
Merge commit = pull, push꼬일때 합의 커밋 ,추가충돌x 없다는 의미
'git,github' 카테고리의 다른 글
깃 허브 01 (0) | 2021.07.05 |
---|