su-mmer 2023. 10. 14. 23:52
728x90

해당 글에서는 깃에 대한 개념은 다루지 않고 명령어만 다룹니다.

 

1. clone

  • Git 저장소를 복사하고 싶을 때 사용합니다.
  • 프로젝트의 히스토리를 전부 받아옵니다.
git clone [url]
git clone [<옵션>] [--] <저장소> [<디렉터리>]

clone 명령은 기본적으로 저장소의 main 브랜치를 클론합니다.

 

clone하여 저장소가 로컬에 복제되었습니다. 디렉토리의 이름은 기본적으로 저장소의 이름과 동일하게 설정됩니다.

 

디렉토리 명 변경하기

저장소 뒤에 디렉토리 명을 붙여주면 됩니다.

 

2. branch

  • 새 브랜치를 생성합니다.
  • 옵션과 함께 사용하여 브랜치를 관리합니다.
git branch  # 로컬 저장소의 모든 브랜치 확인
git branch [브랜치명]  # 새 브랜치 생성
git branch -a  # 로컬과 원격 저장소의 모든 브랜치 확인
git branch -d [브랜치명]  # 브랜치 삭제

 

확인

 ~/study/ossca-redis-2023/ [main] git branch                                                                                                                                                                              [16:32:52]
* main

* 표시가 붙은 브랜치가 현재 사용 중인 브랜치입니다.

 

생성

 ~/study/ossca-redis-2023/ [main] git branch feature                                                                                                                                                                      [16:32:56]
 ~/study/ossca-redis-2023/ [main] git branch                                                                                                                                                                              [16:33:08]
  feature
* main

삭제

 ~/study/ossca-redis-2023/ [main] git branch -d feature                                                                                                                                                                   [16:33:54]
feature 브랜치 삭제 (과거 5c5e311).
 ~/study/ossca-redis-2023/ [main] git branch                                                                                                                                                                              [16:34:05]
* main

로컬과 원격 브랜치 확인

 ~/study/ossca-redis-2023/ [main] git branch -a                                                                                                                                                                           [16:33:14]
  feature
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/docs
  remotes/origin/main

원격 저장소의 브랜치를 로컬로 가져오고 싶을 경우 switch -t를 사용합니다.

 

3. switch

  • 브랜치를 전환합니다.
git switch [변환할 브랜치]
git switch -t [변환할 원격 브랜치]
git switch -c [생성할 브랜치명]

 

브랜치 전환

 ~/study/ossca-redis-2023/ [main] git branch                                                                                                                                                                              [17:11:12]
  feature
* main
 ~/study/ossca-redis-2023/ [main] git switch feature                                                                                                                                                                      [17:11:15]
'feature' 브랜치로 전환합니다
 ~/study/ossca-redis-2023/ [feature] git branch                                                                                                                                                                           [17:11:19]
* feature
  main

 

원격 브랜치로 전환

 ~/study/ossca-redis-2023/ [feature] git switch -t origin/docs                                                                                                                                                            [17:11:22]
branch 'docs' set up to track 'origin/docs'.
새로 만든 'docs' 브랜치로 전환합니다
 ~/study/ossca-redis-2023/ [docs] git branch                                                                                                                                                                              [17:11:27]
* docs
  feature
  main

원격 저장소의 docs 브랜치로 전환하기 위해 -t 옵션을 사용합니다.

로컬에 docs 브랜치가 자동으로 생성되고 switch로 변경됩니다.

 

브랜치를 생성하고 전환

 ~/study/ossca-redis-2023/ [main] git switch apple                                                                                                                                                                        [17:16:45]
fatal: 잘못된 레퍼런스: apple
 ~/study/ossca-redis-2023/ [main] git switch -c apple                                                                                                                                                                     [17:16:52]
새로 만든 'apple' 브랜치로 전환합니다
 ~/study/ossca-redis-2023/ [apple] git branch                                                                                                                                                                             [17:16:57]
* apple
  docs
  feature
  main

apple 브랜치가 없어서 switch 명령으로 찾을 수 없습니다.

-c 옵션을 사용하여 apple 브랜치를 생성하고 동시에 전환합니다.

 

4. pull

  • git fetch + git merge
  • git fetch는 원격의 데이터를 로컬로 가져오기만 합니다.
  • 충돌이 발생하면 해결한 후 merge해야 합니다.
git pull

 

5. add

  • git stage에 수정 사항이 있는 파일을 추가합니다. stage 상태의 파일들이 커밋에 추가될 파일들입니다.
git add [stage에 올릴 파일]

 

stage에 파일 추가

 ~/study/ossca-redis-2023/ [apple] git status                                                                                                                                                                             [17:35:30]
현재 브랜치 apple
추적하지 않는 파일:
  (커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
        hello.txt

커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
add"를 사용하십시오)
 ~/study/ossca-redis-2023/ [apple] git add hello.txt                                                                                                                                                                      [17:35:33]
 ~/study/ossca-redis-2023/ [apple+] git status                                                                                                                                                                            [17:35:50]
현재 브랜치 apple
커밋할 변경 사항:
  (use "git restore --staged <file>..." to unstage)
        새 파일:       hello.txt

git status를 확인하여 추적하지 않는 파일을 확인할 수 있습니다.

git add 명령을 사용하여 해당 파일을 커밋에 포함시킵니다.

git status 명령으로 다시 확인하면 커밋할 변경 사항에 새 파일이 들어가 있습니다.

 

6. commit

  • stage에 파일이 있을 때 커밋을 생성할 수 있습니다.
git commit
git commit [-m] ["commit message"]

 

커밋하기

 ~/study/ossca-redis-2023/ [apple+] git commit -m "add hello.txt"                                                                                                                                                         [17:36:11]
[apple a6a58a5] add hello.txt
 1 file changed, 1 insertion(+)
 create mode 100644 hello.txt

커밋 메세지로 "add hello.txt"를 작성합니다.

작성한 커밋은 git log 명령어를 통해 확인할 수 있습니다.

 ~/study/ossca-redis-2023/ [apple] git log
commit a6a58a529fbb89074ced7af79ed70ab57bac1749 (HEAD -> apple)
Author: su-mmer <heekim987@gmail.com>
Date:   Wed Oct 11 17:40:37 2023 +0900

    add hello.txt

 

7. push

  • 로컬에 저장된 커밋을 원격 저장소에 저장합니다.
git push
 ~/study/ossca-redis-2023/ [apple] git push --set-upstream origin apple                                                                                                                                                   [17:45:50]
오브젝트 나열하는 중: 4, 완료.
오브젝트 개수 세는 중: 100% (4/4), 완료.
Delta compression using up to 8 threads
오브젝트 압축하는 중: 100% (2/2), 완료.
오브젝트 쓰는 중: 100% (3/3), 289 bytes | 289.00 KiB/s, 완료.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
remote: 
remote: Create a pull request for 'apple' on GitHub by visiting:
remote:      https://github.com/su-mmer/ossca-redis-2023/pull/new/apple
remote: 
To github.com:su-mmer/ossca-redis-2023.git
 * [new branch]      apple -> apple
branch 'apple' set up to track 'origin/apple'.

apple 브랜치가 로컬에는 있고 원격에는 없어서 --set-upstream 옵션을 사용하여 원격에 apple 브랜치를 생성하면서 push 합니다.

 

8. cherry-pick

  • 타 브랜치에서 필요한 커밋을 가져올 때 사용합니다. (옮기는 것이 아니라 복사 개념입니다.)
  • 브랜치를 통째로 merge하기 보다 커밋 한두 개 정도를 merge하고 싶을 때 유용합니다.
git cherry-pick <HASH>

# cherry-pick 여러개 적용
git cherry-pick <HASH1> <HASH2> ...

 

728x90