$ git push -u origin main
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 520 bytes | 520.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/HJ0216/TIL.git
   5376d70..1843ac3  main -> main
branch 'main' set up to track 'origin/main'.

1. Git 홈페이지에서 사양에 맞는 Git Download

 

2. 모든 내용을 Default로 진행하되,

"Select Destination Location"에서 경로에 한글이 포함되지 않게 유의

* 문제가 발생하진 않으나 향후 발생할 수 있는 문제를 예방하고자 함

 

3. Git 설치 후 정상 작동 확인을 위해 Git Bash에

$ git --version
git version 2.39.1.windows.1

입력 후, version 확인

 

4. user name 및 user email 설정

git config --global user.name "이름"
git config --global user.email "이메일"
# --global: 해당 PC에서 사용하는 모든 git 조작에 적용

git config user.name "이름"
git config user.email "이메일"
# 미지정(local): 해당 저장소에 한해서만 적용
# local이 global보다 우선 적용됨
# user 삭제
git config --unset --global user.name # global user 삭제
git config --unset --global user.email # global user 삭제
git config --unset user.name # local user 삭제
git config --unset user.email # local user 삭제

# user name 변경
git config --global user.name "변경할 이름"

# user 확인
git config --list

Github와 Git을 연동하기 위해서 Github에 등록된 이메일을 user.email에 설정

 

5. local PC에 git 저장소 설정

 5.1. 폴더 생성

 5.2. 해당 폴더 내에서 git bash 실행 후, 입력 및 응답 확인

git init
Initialized empty Git repository in C:/git_total/.git/

# local c 폴더의 git_total 폴더를 local 저장소로 지정

 

6. local PC에 생성한 git 저장소와 원격 저장소 연결

$ git remote add origin https://github.com/HJ0216/TIL.git

# TIL repository와 연동

 

7. 현재 git 상태 확인

$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

# Branch: master, Commit 대상: 없음

 

8. Test file Add(커밋할 대상으로 지정한 상태)

$ git add /c/git_total/test.txt

# local c 폴더 안의 git_total 폴더의 test.txt 파일 add

 

9. 현재 git 상태 확인

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   test.txt

# Branch: Master, Staging: test.txt(add한 파일)

 

10. commit 진행(변경 사항에 대한 기록을 저장한 상태)

$ git commit -m "Commit Message 입력"
[master (root-commit) 9549c78] using a git bash
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

# "Commit Message"와 함께 commit 진행(Commit: 변경사항에 대한 기록 저장)

 

11. Push 진행(원격저장소에 변경된 내용을 올린 상태)

$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 229 bytes | 229.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'master' on GitHub by visiting:
remote:      https://github.com/HJ0216/TIL/pull/new/master
remote:
To https://github.com/HJ0216/TIL.git
 * [new branch]      master -> master
 
 # Branch: Master로 TIL repository에 text.txt 파일 저장

 

⚠️ 문제: [new branch] master -> master

Default Branch인 main Branch가 아닌 master Branch가 새로 생성됨

$ git branch -m master main

# master branch name을 main으로 변경

 

⚠️ 문제: 변경된 이름의 main branch로 push 진행 시 다음의 오류 발생

 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'https://github.com/HJ0216/TIL.git'

(참조: [해결 방법] error: failed to push some refs to 'https://github.com/')

 

기존 원격 저장소에 저장되어있는 버전과 원격 저장소와 연동시킨 로컬 저장소의 버전이 맞지 않을 경우, 발생하는 문제로 원격저장소 내용을 로컬 저장소에 pull을 진행시킨 후 push를 진행

 

 

필요없는 Branch 삭제

$ git push origin --delete master
To https://github.com/HJ0216/TIL.git
 - [deleted]         master

 

 

 

참고 자료

📑 git username 확인, 변경

📑 Git 최초 설정: 사용자 이름과 이메일 설정하는 방법

 

발생 Error

Git Bash에서 다음 명령어를 입력할 경우,

$ git push -u origin main
To https://github.com/HJ0216/TIL.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'https://github.com/HJ0216/TIL.git'

! [rejected]        main -> main (fetch first)
⭐ error: failed to push some refs to 'https://github.com/HJ0216/TIL.git'

Error 발생

 

 

Error 원인

원격 저장소의 main branch에 저장되어있는 내용과 로컬 저장소의 내용이 일치하지 않아 발생

 

 

해결 방법

원격 저장소 내용을 로컬 저장소에 먼저 pull 시킴

$ git pull origin main
remote: Enumerating objects: 247, done.
remote: Counting objects: 100% (247/247), done.
remote: Compressing objects: 100% (187/187), done.
remote: Total 247 (delta 73), reused 157 (delta 38), pack-reused 0
Receiving objects: 100% (247/247), 59.49 KiB | 378.00 KiB/s, done.
Resolving deltas: 100% (73/73), done.
From https://github.com/HJ0216/TIL
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
fatal: refusing to merge unrelated histories

 

 

⚠️ 추가 문제: fatal: refusing to merge unrelated histories Error 발생

(참조: [해결 방법] fatal: refusing to merge unrelated histories)

 

 

 

참고 자료

📑[GitHub] Repository에 'main' branch로 push 하기

 

발생 Error

Git Bash에서 다음 명령어를 입력할 경우,

$ git push

fatal: The current branch main has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin main

To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.

 

fatal: The current branch main has no upstream branch

Error 발생

 

 

Error 원인

현재 브랜치의 원격 저장소 설정을 정확하게 하지 않았기 때문에 발생

 

 

해결 방법

git bash에 push를 안내대로 진행

$ git push --set-upstream origin main

Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 263 bytes | 65.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/HJ0216/TIL.git
   681b6a8..3dc0358  main -> main
branch 'main' set up to track 'origin/main'.

git push --set-upstream origin main의 의미

➡️upstream: 로컬과 연결된 원격 저장소

로컬 저장소: origin의 원격 저장소를 main으로 지정하여, main으로 push하라는 의미

 

 

 

참고 자료

📑 [Git] 깃 오류 해결 fatal: The current branch master has no upstream branch.

📑  git 최초 push 시 왜 --set-upstream 옵션을 설정해야할까?

발생 Error

Git Bash에서 다음 명령어를 입력할 경우,

$ git mv Machine_Learning ai
fatal: bad source, source=Machine_Learning, destination=ai/Machine_Learning

fetal: bad source

Error 발생

 

 

 

Error 원인

1. 동일한 폴더 이름을 대소문자만 변경하는 경우

2. 변경이 필요한 file name을 잘못 지정한 경우(⭐)

-> ai로 이름이 변경되어 Machine_Learning이라는 폴더가 없음에도 바꿀 대상으로 Machine_Learning을 지정

-> git status를 입력하니,

On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        renamed:    Machine_Learning/ann_model.py -> AI/ann_model.py
        renamed:    Machine_Learning/useful_method_from_numpy.py -> AI/useful_method_from_numpy.py

이미 폴더명이 AI로 변경되어 Changed to be committed된 상태였다.

 

 

해결 방법

수정사항 없이 다음 단계 이동

git add .
git commit -m "change the folder name"

 

 

 

참고 자료

📑 [Git] 폴더명 변경사항 반영하기

발생 Error

Git Bash에서 다음 명령어를 입력할 경우,

git add .

 

this operation must be run in a work tree

Error 발생

 

 

Error 원인

.git 디렉토리 내부에서 git add .을 명령할 경우 발생

 

 

해결 방법

.git 디렉토리의 상위 디렉토리로 이동

cd ../

cd: change directory

../: 상위 디렉토리(폴더)

➡️ 현재 디렉토리에서 상위의 디렉토리로 이동

 

 

➕ 용어 정리

Working tree: 버전으로 만들어지기 전 단계의 수정된 파일들이 있는 공간
Staging Area: 버전을 만들려고하는 파일들이 있는 공간
.git(Repository): 버전이 저장되는 공간, 만들어진 버전이 있는 공간

 

 

참고 자료

📑 버전관리 실습1