깃허브 2

2021. 7. 7. 00:37git,github

728x90

1일차 정리

기본적인 CLI 명령어

  1. `ls`: 현재 폴더의 파일 목록 확인
  2. `cd`: 다른 폴더로 이동
  3. `mkdir`: 새로운 폴더 생성
  4. `touch`: 새로운 파일 생성 (빈 파일)
  5. `cp`: 파일 복사
  6. `mv`: 파일 이동 (잘라내기 > 붙여넣기) + 파일 이름 변경
  7. `rm`: 파일 삭제 (remove), 폴더도 삭제 가능
    • 만약에 폴더 안에 폴더가 있으면? > `rm -r` 내부의 폴더도 같이 삭제
    • `rm -r` + force: `rm -r -f` or `rm -rf` : 내부의 폴더도 삭제하면서 강제로 삭제

Git 명령어

  1. `git init`: 해당 폴더를 Repository로 만들겠다.(== git으로 관리하겠다!)
    • 앞으로 해당 폴더의 역사(commit, history)는 git이 관리한다!
    • (github.com) `New Repository` -> Repository 생성
  2. `git status`: 현재 Repository의 상태를 보여준다.
    • 현재 브랜치, 현재 Working Directory, 현재 Staging Area
    • 자주 입력해서 항상 확인을 해야합니다.
  3. `git add`: 특정 파일 및 폴더를 Staging Area로 올립니다.
    • Staging Area: commit을 남길 파일 및 폴더를 준비하는 곳!
  4. `git commit`: Staging Area에 있는 파일 및 폴더의 스냅샷(기록)을 남긴다!
    • (필수) 기록을 남길때는, 메시지가 항상 같이 있어야 함!
      • `git commit -m '메시지'`
  5. `git log`: 이 때까지 남긴 commit들을 확인합니다.
    • commit hash: 자동 생성(사람으로 치면 주민등록번호, 고유한 값)
    • commit 작성자 정보(이메일, 이름), 작성 시간, 작성 메시지

Remote 관련 명령어 (GitHub)

  1. `git remote add origin 주소`: Remote(GitHub) 주소를 origin이라는 별명으로 추가한다!
  2. `git push origin master`: origin이라는 별명을 가진 주소로 master 브랜치(commit들)를 push 한다(== 올린다)!
  3. `git pull origin master`: origin이라는 별명을 가진 주소로부터 master 브랜치(commit들)를 pull 한다(== 내려 받는다!)
  4. `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 파일명`: 지금도 동작하기는 합니다!
  1. `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 했던 내용 사라짐!
  2. 작업한 내용 취소(삭제)하기
    • 아직 WD에 있는 것들을 되돌리기(== `ctrl + z`)
      • 되돌리게되면 원래대로 돌아갈 수 없음! (주의!)
    • `git restore 파일명`
    • 구버전
      • `git checkout -- 파일명`
    • 제약사항
      • 이미 git으로 관리한적 있는 파일들만 가능!
        • 원본 무엇인지를 안다 == 원본과 지금 작업중인 내용의 차이를 알고있다!
        • 그렇기 때문에 되돌리는 것이 가능!
  3. `git push` 취소(?)하기
    • git push는 결국 공개적으로 commit 한 사실을 널리 알리는 것!
    • 그런데 이것을 되돌린다?
      • 쉽게 되지 않는다!
      1. 강제(force)로 덮어 씌우기 (권장하지 않음!)
        • 쉬운 만큼 빠릅니다!
          • `git push -f`: 강제로 push
        • 되돌린 사실을 알리는 것 (revert) (권장!)
          • revert도 commit이다!
          • `git revert {위치}`
            • 상대적 위치
              • HEAD, HEAD~, HEAD~2
            • 절대적 위치
              • `hash`

 

 

 

09. gitignore

 

git으로 관리하고 싶지 않은 파일을 관리하는 파일

 

위치 - `.git` 폴더(우리가 git init을 입력한 위치)와 같은 위치에 `.gitignore` 파일

 

Unix 시스템 상에서는 `.` 으로 시작하는 파일은 `숨김 파일`

 

사용법

data.csv # 특정 파일
secret/ # 특정 폴더
*.png # 특정 확장자 *.log
!profile.png # 모든 png는 빼지만, profile.png는 포함해라!

 

유의 사항

gitignore에 나열된 파일은, 처음부터 git으로 관리된 적이 없어야 적용받습니다!

 

그래서 처음부터 작성해서 무시할 수 있도록 해야함!

 

 

 

 

10. Git Branch

  • master 브랜치 위에서 모든 것을 했습니다.
  • `git-branch` 폴더 생성 -> GitHub에 올리지는 않습니다.
  • `git branch`
    • 현재 Repository의 모든 branch의 목록을 보여줌
  • `git branch {브랜치명}`
    • 브랜치명으로 새로운 브랜치 생성
  • `git switch {브랜치명}`
    • 브랜치명으로 이동
    • 구버전
      • `git checkout {브랜치명}`
  • 현재 내가 있는 브랜치 이름 확인
    1. `git branch`
    2. `git status`
    3. git bash 끝에 보여짐!
  • `git log` 그래프와 함께 보기
    • `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