728x90

이미 초기화된 원격의 저장소를 복제해와서 개발하는 경우, 복제 작업을 Git에서는 클론(clone)이라고 부르며 git clone서브 명령어로 구현되어있습니다. 이번 글에서는 git clone명령어의 사용법에 대해서 자세히 소개합니다.

 

1. 리포지토리 생성

혼자서 개발하는 경우에는 로컬에서 Git 저장소를 초기화해서 사용하면 됩니다만, 협업을 하는 경우나 인터넷에 소스 코드를 공개하는 경우 GitHub에 저장소를 만들고 이 저장소를 클론해서 작업하는 방식을 주로 사용합니다.

2. Git 저장소의 주소 파악하기

클론을 하려면 Git 저장소의 주소를 알아야합니다. 화면에서 Code 버튼을 클릭하면 Git 저장소 주소가 나타납니다. Git 저장소의 주소는 HTTPS와 SSH 방식으로 제공되며 다음과 같은 형식을 따릅니다. (메뉴에서 알 수 있지만, ZIP 압축 파일로 다운로드 받을 수도 있습니다.)

HTTPS와 SSH 형식의 GitHub 저장소 주소는 아래와 같습니다.

# HTTPS 형식
<https://github.com/[USERNAME]/[REPOSITORY_NAME].git>

# SSH 형식
git@github.com:[USERNAME]/[REPOSITORY_NAME].git

[USERNAME]은 GitHub 사용자 이름으로, [REPOSITORY_NAME]은 저장소를 생성할 때 지정한 저장소 이름이 됩니다.

3. git clone의 명령어 형식

git clone [REPO_URL] [DIR]

[REPO_URL]에는 클론해올 저장소의 주소를 지정해줍니다. [DIR]인자는 저장소를 로컬에 복제할 위치를 지정합니다. [DIR]생략 가능하며, 특별한 이유가 없다면 보통 생략합니다.

4. git clone 실행하기

우선 clone을 할 디렉터리로 이동을 한후 다음 명령어를 실행한다.

git clone <https://github.com/BangProx/webstudy-homework-BangProx.git>

git repository가 성공적으로 클론된 것을 확인할 수 있다!

'개발 > git 사용법' 카테고리의 다른 글

(3) git commit 실습해보기  (0) 2024.03.13
(2) git 기초 실습해보기  (0) 2024.03.13
(1) git이란?  (0) 2024.03.13
728x90

📌 파일들을 수정하다 마음에 들면 staging area에 옮겨 놓고 드디어 commit 혹은 version을 만들 준비가 되었습니다.

1. commit 실습

  • commit 사용해보기

version을 만들때는 commit이라는 명령어를 사용할 수 있는데, staging area에 있는
변경 사항을 git repository에 옮겨주는 역할을 한다. 아무런 옵션 없이 이용하게 되면
기본적인 template이 나오는데 보통은 Title을 작성하고 좀더 자세한 Description을 작성한 다음에 파일을 닫으면 위와 같이 나온다.


첫째 줄을 보면 main branch에 hash code의 제일 앞부분만 나온다.
hash code 아이디와 Title이 표기된다. 3가지의 파일이 변경되었고 3가지 다 처음으로
만들어진 파일이란 것을 확인할 수 있다.

  • git history를 확인해보자
git log

commit 과 전체적인 hashcode가 나오고 누가 언제 했는지 확인할 수 있다.
그리고 Title 과 Description 이 나오는 것을 확인할 수 있다.

  • 위와 같은 방식으로 git commit을 바로하는 경우는 거의 없고 다른 방식을 한다
echo add >> c.txt#c.txt를 수정한다
git status -s #c.txt의 상태 확인
git add. #전부다 추가
git commit -m "second commit"
git log

git commit -m 뒤에 메시지를 추가해서 간단하게 commit할 수 있다
동일하게 log 를 확인해보면 두번째 commit이 이뤄진것을 확인할 수 있다.

  • working directory에서 add를 사용하지 않고 전부 다 바로 commit을 해보자.
echo add >> c.txt #c.txt에 수정사항을 만들어서 working directory에 존재
git commit -am "third commit"
git status -s #git status가 깔끔해졌다

staging area와 working directory의 모든 파일들이 commit된 것을
확인해 볼 수 있다.

2. commit 팁

git directory에 있는 파일들은 사실 history에 창고다. 작업들을 버전별로 나눠서
관리할 수 있는 유용한 창고이다. 따라서 전체 어플리케이션을 만들어서 저장하면
의미가 없다. 어플리케이션을 세분화해서 기능별로 작은 단위로 만들어 나가는게
중요하다. 작은 단위로 나눠서 history에 저장하는게 중요하다.


의미있는 이름을 지정해서 저장하는게 중요하다.
예를 들어, 프로젝트를 초기화하는 commit 하나, login 서비스 모듈을 만들어서 commit하는 식으로 작은 단위로 의미있게 history를 보면 작업한 내용을 알아볼 수 있게 저장하는게 중요하다.


보통 commit의 메시지는 현재형으로 동사로 만들어진다. init, add, fix 등
commit을 할때 내가 crushing 을 고쳤다고 하면 정말 고친 내용만 포함한 commit을 만들어야지 다른 버그들 고친 것도 commit을 하면 코드를 리뷰할때도 혼동이 오지만
history를 볼때도 혼동이 온다. 따라서 commit 메시지에 맞게 해당 내용만 commit하는 것이 중요하다.

'개발 > git 사용법' 카테고리의 다른 글

(4) git clone 실습해보기  (0) 2024.03.13
(2) git 기초 실습해보기  (0) 2024.03.13
(1) git이란?  (0) 2024.03.13
728x90

1. 파일 생성하기

  • hello world 라는 문자열을 a.txt 파일에 저장하는 명령
echo hello world! > a.txt
#그냥 파일 위치를 열어서 텍스트 파일을 만들어도 된다.
open .

터미널에서는 방향키 위 버튼을 누르면 이전에 작성한 명령어를 다시 활용할 수 있다. 동일한 과정으로 파일 3개를 생성하면 된다. (파일명은 a, b, c.txt)

2. git 상태 확인하기

git status

현재 working directory에 a.txt, b.txt. c.txt가 untracked된 상태로 존재한다.

3. staging area로 파일 이동

  • 커밋할 준비가 완료 됐다고 파악하면 add 명령어를 이용해서 파일들을

    staging area로 이동시킨다. 그럼 아래의 이미지와 같이 바뀐다.

git add a.txt

현재 staging area에 a.txt가 존재하고, b.txt 와 c.txt는 아직 working directory에
untracked 상태로 존재한다

  • 나머지 파일들도 add 해준다.
    #1번 방법
    git add b.txt c.txt
    

#2번 방법
git add *.txt #존재하는 모든 txt파일을 add

> 이제 a, b, c 파일이 모두 `commit`할 준비가 되었다.

- 여기서 새로운 문자열 ellie를 a.txt 파일에 추가하게 되면 다시 git status를 확인해보자.

> 총 3가지의 파일은 commit할 준비가 되었다. 하지만 a.txt 파일이 tracked된 상태이고 modified된 것을 확인할 수 있다.

- 다시 a.txt 를 `add` 하고 확인해보자.
> a, b, c가 staging area로 옮겨진 것을 확인할 수 있다. 
또한, 위의 두번째 줄을 통해서 git rm —cached 를 이용해서 staging area에서 
working directory로 옮겨갈 수 있다는걸 확인할 수 있다.

- `git rm —cached`를 이용해서 모든 파일을 staging area에서 제거해보자.

```powershell
#*는 모든 파일을 의미
git rm --cached *

a, b, c 파일들이 untracked 상태로 돌아간 것을 확인할 수 있다.

  • 마지막으로 모든 파일을 staging area로 옮긴후 a.txt를 삭제해보자.
git add *
git status    # 한번 상태를 확인해본다.
rm a.txt      # a.txt 삭제
ls            # 디렉토리에 a.txt가 없는 것을 확인한다.
git add *
git status

a.txt를 제거하고 git status 를 확인하면 삭제된 a.txt는 디렉토리에 없었기 때문에
staging area에 추가되지 않은 것을 확인할 수 있다.

  • git add . 을 실행해보자
git add .
git status

모든 파일들을 포함해서 git staging area에 추가되는 것을 확인할 수 있다.

'개발 > git 사용법' 카테고리의 다른 글

(4) git clone 실습해보기  (0) 2024.03.13
(3) git commit 실습해보기  (0) 2024.03.13
(1) git이란?  (0) 2024.03.13
728x90

1. 용도

Github는 코드를 공유하고 협업하는 데 사용되는 웹 기반 호스팅 서비스입니다. 버전 관리, 이슈 추적, 코드 검토 및 브랜치 관리와 같은 기능을 제공합니다. 개인 및 기업에서 사용되며 오픈 소스 프로젝트에 특히 인기가 있습니다.

  • 소스코드 저장 (버전 관리)
  • 소스코드 공유
  • 협업하는 공간

💡 다양한 대기업 코드들이 오픈소스로 있다

💡 github 사용법 관리법 유튜브 링크


2. Git, GitHub 차이

Github는 정보가 저장되는 공간이고 소스코드를 내 컴퓨터에서 인터넷으로 올려주는 역할은 git이 한다.

  • git
    • git은 내 모든 파일의 변화를 추적
    • 같은 파일에 대한 각기 다른 버전 저장 가능
    • 변경사항을 다른 버전들 간에 한번에 적용 가능
    • 같은 파일로 여러 사람과 협업 가능
    • git server 와 git client 로 나뉜다
  • github
    • 클라우드에 있는 git 제공자
    • 내 컴퓨터에서 깃 히스토리를 가져와서 깃허브 웹사이트에 push한다

3. Git을 활용할 수 있는 방법

  • github desktop 어플리케이션 보다는 source tree 어플리케이션이 많이 사용됨
  • 순수 명령어를 활용하는게 제일 좋다
  • 화려한 UI를 선호한다면 Git Kraken도 있다

💡 git을 처음 배운다면 terminal로 배우자

  • terminal 도구
    • Mac OS : iTerm2
    • Windows : cmder

4. Git 초기 설정

  1. 에디터 설정
git config --global core.editor "code --wait"
  • 터미널에서 에디터를 열때 “code” 만 입력하면 에디터가 열린 상태에서도 터미널을 사용 가능하다 하지만 “code —wait”을 입력하면 에디터 창이 닫히기 전까지는 터미널을 사용할 수 없다.
  1. 사용자 관련 설정
git config --global user.name "**사용할 이름**"
git config --global user.email "**사용할 이메일**"
  • 사용자의 이름, 이메일을 설정할 수 있다.
git config user.name
git config user.email
  • 본인의 코드 설정을 확인 할 수 있다.
  1. core.autocrlf 설정
git config --global core.autocrlf true
git config --global core.autocrlf input
  • Windows 사용자의 경우 값을 true로, Mac OS 사용자의 경우 값을 input으로 설정해주면 됩니다.
  • 운영 체제마다 에디터에서 줄바꿈을 할 때 들어가는 문자열이 다르다. windows 는 \r\n 이 동시에 들어간다(\r : carriage return, \n : line feed) Mac OS 에서는 \n 하나만 들어간다. 이때, git repository를 다양한 운영체제에서 쓸때 수정하지 않아도 줄바꿈 문자열이 달라져서 git history 를 볼 때 문제가 생길 수 있다.
  • 이를 해결하는 방법이 core.autocrlf 이고 이 값을 true로 하면 Windows에서 git에 저장할때는 \r 를 제거해서 올리고 git에서 받아올 때는 \r 을 포함에서 온다. Mac OS 에서는 git에서 받아올 때는 수정을 안하지만 저장할 때는 /r을 삭제해준다.

5. Git 명령어 형식

  • git+ 명령어 + -option

💡 git 홈페이지에서 Documentation > Reference에 들어가면 각종 명령어가 있다

  1. 원하는 위치에 git 폴더를 생성한다
mkdir git
  1. git을 초기화 하려면
#폴더에 들어가서 
git init
  1. git을 제거하고 싶으면
rm -rf .git
  • git의 상태를 확인 하는 명령어
git status
  • 명령어를 단축해서 쓰고 싶다면 alias를 활용
git config —global alias.*축약된 명령어* *축약할 명령어*
  명령어를 간단하게 활용할 수 있다
  • 명령어의 정보를 알고싶다면
git 명령어 --h
ex) git config --h

6. Git의 workflow

🖥️git에는 크게 3가지의 작업환경이 나눠져 있습니다

  1. working directory
    • 기본 정보
      • 프로젝트의 파일들을 수정하는 위치
      • 우리가 작업하고 있는 위치
    • untracked/tracked
      • git이 이미 알고 있는 파일은 tracked 카테고리에 들어간다
      • 새로 만들어진 파일이거나 기존에 존재하던 프로젝트에서 git을 초기화하게 되면 git이 파일에 대한 정보가 없어서 untracked 한 상태이다
      • git이 tracked하고 있는 파일 중에서도 지금 시점에서 수정이 되었는지 유무에 따라 unmodified, modified로 나뉜다
      • unmodified는 이전 버전과 비교해서 수정되지 않았기 때문에 수정이 된 modified 파일들만 staging area로 옮길 수 있다.
  2. staging area
    • 어느 정도 작업하다 version history에 저장할 준비가 된 파일들을 옮겨 놓는 위치
    • commit 이라는 명령어로 .git version history에 저장
  3. .git directory
    • version의 history를 가지고 있는 .git repository 혹은 .git directory
    • .git directory에 저장된 version들은 언제든지 checkout 이라는 명령어를 이용해서 언제든 원하는 version으로 돌아갈 수 있다.

7. Git의 대표적인 명령어

📌 add 명령어를 이용해서 working directory에 있는 파일들을 staging area로 보낼수 있다.

📌 프로젝트 폴더에서 파일을 수정하다 어느정도 완성이 되면 일부 파일을 staging area로 옮긴다.

이후 commit 명령어를 이용해서 staging area의 파일들을 git version history에 저장하게 된다.

나머지 파일들도 준비가 되면 다시 staging area로 옮기고 commit을 하면 다시 history에 저장할 수 있다.

이렇게 directory에 저장된 파일들은 언제든 checkout 을 통해 원하는 버전으로 돌아갈 수 있다.

하지만 이렇게 저장된 git history는 나의 local pc에만 저장이 되어있다.

📌 그래서 github 같은 서버에 push라는 명령어를 통해서 나의 .git directory를 서버에 저장할 수 있다.
서버에서 다시 로컬로 다운받고 싶으면 pull 명령어를 사용하면 된다.

📌 각각의 commit에는 고유한 hash code가 부여된다. 이 정보로 버전 정보를 참조할 수 있다.
commit에는 id뿐만 아니라 어떤 버전인지, 버전에 관련된 메시지, 누가 언제 작성했는지도 포함이 되어있다.

📌 clone : clone repository 는 원격 저장소를 복제한 저장소다. 이건 다른사람의 소스코드 복사본을 생성하는 것과 같으며,
개발을 할 때 보통 클론 저장소에서 작업을 진행하게 된다. 이런 상황에 원격 저장소에 변경 사항이 생기면,
그 내용을 가져와 클론 저장소를 최신 상태로 유지해야 한다.

📌 fetch : 로컬 git에게 원경 저장소에서 최신 메타데이터 정보를 확인하라는 명령을 전달한다.
단, 원격 저장소에 변경사항이 있는지 확인만 하고, 변경된 데이터를 로컬 git에 실제로 가져오지는 않는다.
(기능을 확인하려고 있는 것, working directory에는 영향을 주지 않는다.)

📌 pull : 원격 저장소에서 변경된 메타데이터 정보를 확인할 뿐만 아니라 최신 데이터를 복사해서 로컬 git에 가져온다.

git 명령어

  • start a working area (see also: git help tutorial)
    • clone Clone a repository into a new directory
    • init Create an empty Git repository or reinitialize an existing one
  • work on the current change (see also: git help everyday)
    • add Add file contents to the index
    • mv Move or rename a file, a directory, or a symlink
    • restore Restore working tree files
    • rm Remove files from the working tree and from the index
  • examine the history and state (see also: git help revisions)
    • bisect Use binary search to find the commit that introduced a bug
    • diff Show changes between commits, commit and working tree, etc
    • grep Print lines matching a pattern
    • log Show commit logs
    • show Show various types of objects
    • status Show the working tree status
  • grow, mark and tweak your common history
    • branch List, create, or delete branches
    • commit Record changes to the repository
    • merge Join two or more development histories together
    • rebase Reapply commits on top of another base tip
    • reset Reset current HEAD to the specified state
    • switch Switch branches
    • tag Create, list, delete or verify a tag object signed with GPG
  • collaborate (see also: git help workflows)
    • fetch Download objects and refs from another repository
    • pull Fetch from and integrate with another repository or a local branch
    • push Update remote refs along with associated objects

한줄 요약

git init
git remote add origin "저장소 주소"
git pull origin main
git add --all
git commit -m "커밋할 내용"
git push origin main

👉 전체적인 Git 사용 순서

git clone or git init
git branch feature/'name'
git checkout feature/'name'

git add .
git commit -m "message"
git push origin feature/'name'

compare pull&request
merge

conflict발생시

git checkout master
git pull origin master
git checkout feature/'name'
git merge master

수정 후...
git add .
git commit -m "something"
git push

'개발 > git 사용법' 카테고리의 다른 글

(4) git clone 실습해보기  (0) 2024.03.13
(3) git commit 실습해보기  (0) 2024.03.13
(2) git 기초 실습해보기  (0) 2024.03.13

+ Recent posts