
참고1 : Git GUI 소스트리(SourceTree) 설치방법과 사용방법
참고2 : 깃, 깃허브 제대로 배우기 (기본 마스터편, 실무에서 꿀리지 말자)
참고3 : Git & Sourcetree - 로컬 저장소와 원격 저장소 연결하기
외에는 챗지피티를 이용하여 작성하였다.
해당 글에서는 터미널로 Git을 이용한 로컬 커밋과 SourceTree로 로컬 커밋을 하고, GitHub를 소스트리와 연결해 원격 푸시를 해보는 연습을 할 것이다.
git을 mac에서 사용하려면 Homebrew라는 mac 전용 패키지 관리 도구를 설치해야함
downloads 클릭macOS 클릭homebrew 클릭/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

you have not agreed to the xcode license. 라고 뜬다면sudo xcodebuild -license //sudo는 사용자 권한 명령어
agree 타이핑 후 엔터brew help 입력해서 잘 설치됐는지 확인zsh: command not found: brew 라고 뜬다면 터미널에 아래의 명령어들 입력echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

이렇게 뜨면 Homebrew 설치 완료
맥에 기본적으로 깃이 설치 돼 있지만 운영체제 업데이트 때 마다 업데이트 되므로 늘 최신버전으로 유지되지는 않는다. brew를 통해 설치하면 최신 버전 업그레이드와 제거가 용이하다.
brew install git
git --version
#맥에 기본적으로 설치 돼 있는 깃의 버전이 뜰 것이다
git version 2.39.3 (Apple Git-145)
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
git --version
#brew를 통해 설치된 깃의 버전
git version 2.43.0
위처럼 버전이 제대로 뜬다면 깃 설치 완료
#--global : git에 대한 설정을 전체적인 디렉토리에 적용하는 옵션
#유저 네임 설정
git config --global user.name "Danee"
#사용하는 이메일 입력
git config --global user.email "danee@mail.com"
#파일 공유시 윈도우와 맥에서 줄바꿈 설정 때문에 서로 충돌하지 않게 수정해주는 명령어
git config --global core.autocrlf input
#Visual Studio Code를 텍스트 편집기로 설정
git config --global core.editor "code --wait"
#Visual Studio Code의 실행 경로를 PATH에 추가
export PATH="/Applications/Visual Studio Code.app/Contents/Resources/app/bin:$PATH"
#변경된 환경변수 적용하는 명령어 아래 명령어를 쳐도 되고 터미널 재시작을 해도 됨
source ~/.zshrc

⬆️ Visual Studio Code 실행하여 검색창에 code 검색 후셸 명령:PATH에 'code'명령 설치 클릭하고 터미널에 code .을 입력하면 실행된다.
#전역 설정 확인하기
git config --list
참고한 영상을 따라 실습을 한 것을 기록
#원하는 폴더로 이동
cd git
#해당 디렉토리를 git 로컬저장소로 설정하는 명령어
git init
git init 명령어는 내가 현재 있는 디렉토리에 .git 이라는 숨겨진 폴더를 생성하여 해당 디렉토리 내에 있는 모든 파일과 폴더의 변경 사항을 추적함. 다른 프로젝트를 시작할 때엔 해당 명령어를 사용해서 깃 초기화를 해줘야 함. ls -al 명령어를 사용하면 숨겨진 폴더 확인 가능 #a.txt, b.txt, c.txt 파일 생성
echo hello world! > a.txt
echo hello world! > b.txt
echo hello world! > c.txt
#만들어진 파일 확인
ls
a.txt b.txt c.txt
#또는 폴더를 직접 열어 확인, 명령어와 .사이의 공백에 주의
open .
git status
#현재 브랜치는 master이다
On branch master
#아직 아무 커밋도 되지 않았다
No commits yet
#아직 스테이징되지 않은 Untracked 파일들을 보여줌
Untracked files:
(use "git add <file>..." to include in what will be committed)
a.txt
b.txt
c.txt
#git add 명령어를 이용해 파일을 track 할 수 있다고 알려줌
nothing added to commit but untracked files present (use "git add" to track)
아직 파일들이 스테이징 되지 않았기 때문에 현 상태에선 수정을 해도 git이 track(추적)하지 않는다.
#아래 두 가지 중 하나만 선택
#a.txt b.txt c.txt파일을 스테이징
git add a.txt b.txt c.txt
#현재 브랜치 내에 있는 .txt 파일을 모두 스테이징
git add *.txt
#다시 스테이징 영역 확인
git status
On branch master
No commits yet
#커밋이 준비된 파일들을 보여줌
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: a.txt
new file: b.txt
new file: c.txt
#danee라는 새로운 줄을 a.txt에 추가
echo danee >> a.txt
git status
On branch master
No commits yet
#스테이징 영역에 수정되기 전 a.txt가 있음
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: a.txt
new file: b.txt
new file: c.txt
#수정된 a.txt 파일이 작업 디렉토리에 있다고 알림
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: a.txt #작업 디렉토리의 a.txt파일이 modified 파일이 됨
#작업 디렉토리, 스테이징 영역에 각 다른 a.txt가 존재하게 됨
위와 같이 a.txt파일이 스테이징 영역에 있어 tracked 파일이 됐기 때문에 수정이 되자 추적해서 modified(수정된) 파일이라고 알려주는 것을 확인할 수 있다.
git commit

위처럼 기본적인 템플릿이 나옴. Title, Description(설명)을 적은 후 command+s를 눌러 저장 후 나오면
[master (root-commit) 4daf1b3] Title #Title이라는 커밋 메세지, 4daf1b3이라는 해시값의 제일 앞부분 표시
3 files changed, 4 insertions(+) #이 커밋에서 세 개의 파일이 변경되었고, 그 중에서 4개의 라인이 추가되었음을 의미
create mode 100644 a.txt #100644는 기본 파일 권한이며, a.txt라는 파일이 추가되었음
create mode 100644 b.txt
create mode 100644 c.txt
git log
commit 4daf1b325f26a10918d6da395c8439af9ba9c98d (HEAD -> master) #커밋 해시값
Author: Danee <danee@mail.com> #누가 작성했는지
Date: Sat Jan 20 18:24:54 2024 +0900 #언제 작성했는지
Title #커밋 메세지
Description #자세한 설명
#fighting이라는 줄을 a.txt에 새로 추가
echo fighting >> a.txt
#modified된 a.txt를 다시 스테이징
git add a.txt
#확인
git status
#다시 커밋, 보통 아무 옵션 없이 하는 커밋보다 이 옵션을 자주 씀
git commit -m "Second commit"
[master e698b6a] Second commit
1 file changed, 1 insertion(+)
#히스토리 확인
git log
commit e698b6a0b29d0a6cef09691775b88ba5af93ca8b (HEAD -> master)
Author: Danee <danee@mail.com>
Date: Sat Jan 20 18:44:51 2024 +0900 #+0900은 시간대
Second commit
commit 4daf1b325f26a10918d6da395c8439af9ba9c98d
Author: Danee <danee@mail.com>
Date: Sat Jan 20 18:24:54 2024 +0900
Title
Description
⬆️ 첫 번째 커밋에선 a, b, c 파일을 스테이징 영역에 추가하고 커밋했으므로 a, b, c 파일의 상태는 Unmodified가 됨
두 번째 커밋에선 a 파일을 수정하여 modified상태였으며, 수정된 내용을 스테이징 영역에 추가하고 커밋했으므로 b, c 파일은 수정되지 않았으므로 그대로 Unmodified 상태이고 a는 다시 Unmodified가 됨

소스트리 UI창에 현재 내가 작업하고 있는 폴더를 끌어와서 더블클릭 후 해당 창이 뜨면 정렬 방식에서 스테이지 뷰 나누기를 선택하면 위와 같이 스테이지에 올라간 파일(스테이징 영역에 있는 파일), 스테이지에 올라가지 않은 파일(작업 디렉토리에 있는 파일)을 확인할 수 있다.
이외에도 우측과 같이 무엇이 수정됐는지도 확인이 가능하다.

파일을 수정하고,


⬆️ 위와 같이 소스트리를 누르고 스테이지에 올라가지 않은 파일 중 원하는 파일 체크를 누르면 스테이징이 된다. 우측의 파일 내용이 표시되는 곳에서 각 줄을 클릭해서 클릭한 부분만 스테이징 하거나 여러 줄의 코드 뭉치를 스테이징 하는 것도 가능하다.
하단의 메세지 커밋에서 커밋 메세지를 작성하고 commit을 누르면 커밋도 소스트리에서 가능하다.
깃은 명시적인 종료 과정이 없으므로 작업 디렉토리에서 벗어나거나 터미널을 종료하면 종료된다고 생각하면 됨.
소스트리는 상단 막대메뉴에서 소스트리 클릭 후 Sourcetree 종료를 누르면 됨.
작업이 완료 되고 스테이징을 한 후에 벗어나는 것을 추천.
