
⭐ src 이하의 파일만 깃에 push 하고 싶을때
이클립스 워크스페이스를 C:\Users\joo\Documents\StudyAlgorithm 경로에서 열었는데
C:\Users\joo\Documents\StudyAlgorithm\StudyAlgorithm\src 이하에 있는 파일만 Git에 올리고 싶다.
.gitignore를 사용하여 다른 파일들을 제외하고, src 폴더만 Git에 추가하는 방식으로 작업 해야 한다.
폴더 구조 ▼



C:\Users\joo\Documents\StudyAlgorithm\StudyAlgorithm를 프로젝트 루트 디렉토리로 설정하고 .gitignore 파일을 열고, src 폴더 외의 모든 파일을 제외하도록 설정한다.
.gitignore 파일에 아래 코드 추가
/* !/src/
이렇게 하면 src 폴더만 Git에 포함되고, 나머지 파일들은 제외된다.
✅ 아직 Git 저장소가 초기화되지 않았다면, src 폴더만 포함하도록 초기화 하는 법
cd C:\Users\joo\Documents\StudyAlgorithm\StudyAlgorithm git init
✅ src 폴더만 Git에 추가하기
git add src/
✅ 변경 사항 커밋
git commit -m "Add src files"
원격 저장소에 main 브랜치로 푸시
git push origin main
이렇게 하면 src 폴더의 파일만 Git에 업로드된다.
C:\Users\joo\Documents\StudyAlgorithm\StudyAlgorithm>git push origin main
To https://github.com/awesomepossumgirl/Algorithm.git
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/awesomepossumgirl/Algorithm.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you want to integrate the remote changes, use 'git pull'
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
❌ 문제1.
현재 로컬 브랜치가 원격 저장소의 main 브랜치보다 뒤쳐져 있기 때문에 푸시가 거부되고 있는 문제
→ 해결하기 위해서는 원격 저장소의 변경 사항을 먼저 통합한 후 Push
원격저장소 변경 사항 가져오기
git pull --rebase
git pull origin main --rebase
리베이스 완료 후 푸시
git push origin main
강제 푸시
★ 원격 저장소의 커밋 이력을 덮어쓸 수 있기 때문에 주의
git push origin main --force
error: could not apply 9a83d91... Update .gitignore to exclude .metadata and StudyAlgorithm
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
hint: Disable this message with "git config advice.mergeConflict false"
Could not apply 9a83d91... Update .gitignore to exclude .metadata and StudyAlgorithm
❌ 문제2.
현재 리베이스 중에 .gitignore 파일에서 충돌이 발생한 상태이다.
충돌을 해결하려면, 충돌된 파일을 수동으로 수정한 후 다시 리베이스를 진행해야 한다.
해결 방법
충돌 파일 확인 및 수정: 충돌이 발생한 파일 (.gitignore)을 열어서 충돌을 해결한다. 충돌된 부분은 Git이 <<<<<<<, =======, >>>>>>>와 같은 마커로 표시된다. 이 부분을 수정 후 최종적인 .gitignore 파일을 저장한다. 충돌을 해결한 후에 해당 파일을 스테이징하면 된다.


스테이징
git add .gitignore
리베이스 계속 진행
git rebase --continue
리베이스 중지/취소
git rebase --abort
리베이스 완료 후 푸시
git push origin main



❌ 문제3.
원격 저장소에 푸시 완료했으나 algo01, algo02, algo03 패키지가 로컬에서 사라짐, 로컬에서 삭제된 파일들을 복구하려면, Git에서 이전 커밋으로 돌아가서 복원해야 한다.
이전 커밋 찾기
git reflog 명령으로 로컬에서 발생한 Git 작업의 히스토리를 확인하고, 삭제되기 전에 커밋된 상태로 되돌릴 수 있다.
git reflog
이전 커밋으로 돌아가기
여기서 삭제되기 전의 커밋을 찾아 해당 커밋으로 돌아갈 수 있는데,
예를 들어, HEAD@{3}이 해당 커밋이라면 checkout 명령어를 사용한다.
git checkout HEAD@{3}
내가 겪은 문제처럼, algo01 패키지와 그 안의 파일을 복구하는 것도 가능하다.
동일한 방식으로 algo02, algo03 패키지도 복구할 수 있다.
git checkout HEAD -- src/algo01
로컬 변경 사항 확인하고 복구하기
git status
`git status` 명령으로 로컬에서 어떤 변경 사항이 있는지 확인할 수 있다. 로컬에서 파일이 삭제되었지만 Git에서 아직 추적하지 않고 있을 수도 있기 때문에 git status로 현재 상태를 점검할 수 있고, 변경 사항이 있다면, 그 변경 사항을 커밋하고 푸시할 수 있다.
만약 로컬에서 삭제된 파일들이 이미 Git에서 추적되고 있었다면, `git restore` 명령을 사용해 복구할 수 있다.
⭐algo01 패키지만 복구하는 법 (필자는 이 방법으로 해결함)
git restore src/algo01
⭐전체적으로 복구하는 법
git restore .
강제로 푸시해서 로컬과 원격 저장소 맞추기
로컬과 원격 저장소가 다른 상태라면, 원격 저장소에서 파일을 확인하고 로컬 상태를 맞추는 작업을 해야 한다.
이 때, 원격 저장소의 상태를 로컬로 강제로 가져올 수 있다. 이 명령은 원격 저장소의 main 브랜치 상태로 로컬 브랜치를 덮어쓰게 된다. 그래서 파일들이 복원 될 수 있다.
git fetch origin
git reset --hard origin/main

⭐ src 이하의 파일만 깃에 push 하고 싶을때
이클립스 워크스페이스를 C:\Users\joo\Documents\StudyAlgorithm 경로에서 열었는데
C:\Users\joo\Documents\StudyAlgorithm\StudyAlgorithm\src 이하에 있는 파일만 Git에 올리고 싶다.
.gitignore를 사용하여 다른 파일들을 제외하고, src 폴더만 Git에 추가하는 방식으로 작업 해야 한다.
폴더 구조 ▼



C:\Users\joo\Documents\StudyAlgorithm\StudyAlgorithm를 프로젝트 루트 디렉토리로 설정하고 .gitignore 파일을 열고, src 폴더 외의 모든 파일을 제외하도록 설정한다.
.gitignore 파일에 아래 코드 추가
/* !/src/
이렇게 하면 src 폴더만 Git에 포함되고, 나머지 파일들은 제외된다.
✅ 아직 Git 저장소가 초기화되지 않았다면, src 폴더만 포함하도록 초기화 하는 법
cd C:\Users\joo\Documents\StudyAlgorithm\StudyAlgorithm git init
✅ src 폴더만 Git에 추가하기
git add src/
✅ 변경 사항 커밋
git commit -m "Add src files"
원격 저장소에 main 브랜치로 푸시
git push origin main
이렇게 하면 src 폴더의 파일만 Git에 업로드된다.
C:\Users\joo\Documents\StudyAlgorithm\StudyAlgorithm>git push origin main
To https://github.com/awesomepossumgirl/Algorithm.git
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/awesomepossumgirl/Algorithm.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you want to integrate the remote changes, use 'git pull'
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
❌ 문제1.
현재 로컬 브랜치가 원격 저장소의 main 브랜치보다 뒤쳐져 있기 때문에 푸시가 거부되고 있는 문제
→ 해결하기 위해서는 원격 저장소의 변경 사항을 먼저 통합한 후 Push
원격저장소 변경 사항 가져오기
git pull --rebase
git pull origin main --rebase
리베이스 완료 후 푸시
git push origin main
강제 푸시
★ 원격 저장소의 커밋 이력을 덮어쓸 수 있기 때문에 주의
git push origin main --force
error: could not apply 9a83d91... Update .gitignore to exclude .metadata and StudyAlgorithm
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
hint: Disable this message with "git config advice.mergeConflict false"
Could not apply 9a83d91... Update .gitignore to exclude .metadata and StudyAlgorithm
❌ 문제2.
현재 리베이스 중에 .gitignore 파일에서 충돌이 발생한 상태이다.
충돌을 해결하려면, 충돌된 파일을 수동으로 수정한 후 다시 리베이스를 진행해야 한다.
해결 방법
충돌 파일 확인 및 수정: 충돌이 발생한 파일 (.gitignore)을 열어서 충돌을 해결한다. 충돌된 부분은 Git이 <<<<<<<, =======, >>>>>>>와 같은 마커로 표시된다. 이 부분을 수정 후 최종적인 .gitignore 파일을 저장한다. 충돌을 해결한 후에 해당 파일을 스테이징하면 된다.


스테이징
git add .gitignore
리베이스 계속 진행
git rebase --continue
리베이스 중지/취소
git rebase --abort
리베이스 완료 후 푸시
git push origin main



❌ 문제3.
원격 저장소에 푸시 완료했으나 algo01, algo02, algo03 패키지가 로컬에서 사라짐, 로컬에서 삭제된 파일들을 복구하려면, Git에서 이전 커밋으로 돌아가서 복원해야 한다.
이전 커밋 찾기
git reflog 명령으로 로컬에서 발생한 Git 작업의 히스토리를 확인하고, 삭제되기 전에 커밋된 상태로 되돌릴 수 있다.
git reflog
이전 커밋으로 돌아가기
여기서 삭제되기 전의 커밋을 찾아 해당 커밋으로 돌아갈 수 있는데,
예를 들어, HEAD@{3}이 해당 커밋이라면 checkout 명령어를 사용한다.
git checkout HEAD@{3}
내가 겪은 문제처럼, algo01 패키지와 그 안의 파일을 복구하는 것도 가능하다.
동일한 방식으로 algo02, algo03 패키지도 복구할 수 있다.
git checkout HEAD -- src/algo01
로컬 변경 사항 확인하고 복구하기
git status
git status
명령으로 로컬에서 어떤 변경 사항이 있는지 확인할 수 있다. 로컬에서 파일이 삭제되었지만 Git에서 아직 추적하지 않고 있을 수도 있기 때문에 git status로 현재 상태를 점검할 수 있고, 변경 사항이 있다면, 그 변경 사항을 커밋하고 푸시할 수 있다.
만약 로컬에서 삭제된 파일들이 이미 Git에서 추적되고 있었다면, git restore
명령을 사용해 복구할 수 있다.
⭐algo01 패키지만 복구하는 법 (필자는 이 방법으로 해결함)
git restore src/algo01
⭐전체적으로 복구하는 법
git restore .
강제로 푸시해서 로컬과 원격 저장소 맞추기
로컬과 원격 저장소가 다른 상태라면, 원격 저장소에서 파일을 확인하고 로컬 상태를 맞추는 작업을 해야 한다.
이 때, 원격 저장소의 상태를 로컬로 강제로 가져올 수 있다. 이 명령은 원격 저장소의 main 브랜치 상태로 로컬 브랜치를 덮어쓰게 된다. 그래서 파일들이 복원 될 수 있다.
git fetch origin
git reset --hard origin/main