네, 이전 브랜치의 커밋들이 새 브랜치에 불필요하게 따라오는 상황이네요. 다음과 같은 절차로 해결할 수 있습니다:
git stash
git checkout main
git pull origin main
git checkout -b fix/recommand/issue-173
git stash pop
git status
git add src/main/java/org/team14/webty/recommend/repository/RecommendRepository.java
git add src/main/java/org/team14/webty/recommend/service/RecommendService.java
git commit -m "fix: 댓글 및 리뷰페이지관련 오류해결"
git push -f origin fix/recommand/issue-173
이렇게 하면:
1. 이전 브랜치의 커밋 히스토리가 새 브랜치에 따라오지 않습니다.
2. main 브랜치의 최신 상태에서 시작하므로 깔끔한 커밋 히스토리를 가질 수 있습니다.
3. 실제로 필요한 변경사항만 새로운 커밋으로 남게 됩니다.
주의사항:
git push -f 명령어는 원격 저장소의 내용을 강제로 덮어쓰므로 신중하게 사용해야 합니다.Gradle 빌드 시 'Permission Denied' 오류 처리
문제: ./gradlew build 시 gradlew: permission denied 오류 발생
해결 방법:
문제 원인 분석: 'Permission Denied' 오류는 실행 파일에 실행 권한이 없어서 발생합니다.
권한 설정:
chmod 명령어: chmod +x ./gradlew
chmod: 파일 권한 변경 명령어
+x: 실행 권한 추가 옵션
./gradlew: Gradle 실행 파일
chmod +x ./gradlew 명령어를 입력하여 - gradlew 파일에 실행 권한을 부여합니다.
권한 부여 후 실행:
./gradlew build 다시 실행합니다.
이제 'Permission Denied' 오류가 해결되었기 때문에 Gradle 빌드가 정상적으로 진행됩니다.
위 과정을 통해 파일에 실행 권한을 부여하여 'Permission Denied' 오류를 해결하고, 이후 Gradle 빌드를 수행할 수 있게 됩니다.
Next.js 프로젝트를 실행하는 기본적인 명령어들을 알려드리겠습니다:
개발 서버 실행:
# npm 사용 시
npm run dev
# yarn 사용 시
yarn dev
# pnpm 사용 시
pnpm dev
프로덕션 빌드 후 실행:
# 1. 빌드
npm run build
# 또는 yarn build
# 또는 pnpm build
# 2. 실행
npm run start
# 또는 yarn start
# 또는 pnpm start
주요 포트 정보:
http://localhost:3000에서 실행됩니다# 예: 3001 포트 사용
npm run dev -- -p 3001
# 또는
PORT=3001 npm run dev개발 시 유용한 팁:
1. 자동 새로고침이 안 될 경우:
# 개발 서버 완전 재시작
npm run dev -- --turbo
캐시 클리어가 필요할 경우:
# next.js 캐시 삭제
npm run dev -- --clear
터미널에서 Ctrl + C를 누르면 개발 서버를 종료할 수 있습니다.
개발 서버를 실행하면 코드 변경 사항이 실시간으로 반영되어 브라우저에서 확인하실 수 있습니다.
Git의 명령어에 대해서 정리해볼까 한다. 대부분의 사용자들이 주로 add, commit, push, pull, fetch 등을 사용하겠지만 Git의 명령어는 정말 다양하고 옵션도 많다. 이 포스팅에서는 간단하게 살펴보고 Git에 대해서 포스팅을 진행하면서 각 명령어가 쓰이는 곳과 더 상세한 설명을 추가하도록 하겠다.
참고로 아래 명령어를 보면 (-)대시 사이에 공백이 있는 걸 볼 수 있는데 Medium에서 대시를 이어서 쓸 수가 없다 보니 중간에 공백을 끼워 넣었다. 실제로 사용할 때는 (-)대시 사이에 공백 없이 이어서 써야 한다.
현재 로컬에서 수정한 SecurityConfig.java 파일이 있어서 pull이 안되고 있네요.
다음 두 가지 방법 중 하나로 해결할 수 있습니다:
# 변경사항 저장
git add src/main/java/org/team14/webty/security/config/SecurityConfig.java
git commit -m "SecurityConfig 수정"
# 그 후 pull 실행
git pull origin main
# 변경사항 임시 저장
git stash
# pull 실행
git pull origin main
# 임시 저장한 변경사항 다시 적용
git stash pop
보통은:
어떤 방법으로 진행할까요?
네, 로컬 변경사항을 무시하고 원격 저장소의 내용으로 강제로 덮어쓰는 방법이 있습니다:
# 현재 변경사항 모두 버리고 원격 저장소 내용으로 덮어쓰기
git fetch origin
git reset --hard origin/main
⚠️ 주의: 이 명령어를 실행하면 현재 작업 중인 모든 로컬 변경사항이 영구적으로 삭제됩니다.
더 안전한 방법을 원하신다면:
# 현재 변경사항을 백업 브랜치로 저장한 후 pull
git checkout -b backup-branch
git checkout main
git reset --hard origin/main
어떤 방법으로 진행할까요?
git config - -global user.name “Your name”
git config - -global user.email “Your email address”
git config user.name “Your name”
git config user.email “Your email address”
참고로 user 설정이 되어 있지 않으면 Github에 있는 repository에 변경사항을 푸시 한다고 해도 commit count 집계도 안되고 해당 커밋의 작성자 프로필 아이콘도 ? 로 표시되기 때문에 웬만하면 name과 email 주소를 설정하길 추천한다.
git config - -global - -list
git config - -list
git config - -global color.ui “auto”
mkdir /path/newDir
cd /path/newDir
git init
git clone <저장소 url>
git remote add <원격 저장소> <저장소 url>
아래 명령어에서 [ ]는 선택적인 매개변수를 의미한다.
git add <파일>
git commit -m “<메시지>”
git add -p [<파일> [<파일> [기타 파일들…]]]
git add -i
git add -u [<경로> [<경로>]]
git commit -m “<메시지>” -a
git checkout HEAD <파일> [<파일>]
git reset HEAD <파일> [<파일>]
git commit -m “<메시지>” - -amend
git commit -C HEAD - -amend
git branch
git branch -r
git branch -a
git branch <새로운 브랜치>
git checkout <브랜치>
git checkout -b <새로운 브랜치>
git branch <새로운 브랜치> <브랜치를 생성할 위치>
git branch -f <기존 브랜치> [<브랜치를 생성할 위치>]
git checkout -m <기존 브랜치> <새로운 브랜치>
git checkout -M <기존 브랜치> <새로운 브랜치>
git merge <브랜치>
git merge - -no-commit <브랜치>
git cherry-pick <커밋명>
git cherry-pick -n <커밋명>
git merge - -squash <브랜치>
git branch -d <삭제할 브랜치>
git branch -D <삭제할 브랜치>
git log
git log -p
git log -1
git log -20 -p
git log - -since=”6 hours”
git log - -before=”2 days”
git log -1 HEAD-3
git log -1 HEAD^^^
git log -1 HEAD~1^^
git log <시작 지점>…<끝 지점>
*시작 지점이나 끝 지점은 커밋명, 브랜치명, 혹은 태그명이 될 수 있고 조합하여 사용 가능하다.
git log - -pretty=oneline
git log - -stat
git log - -name-status
git diff
git diff - -cached
git diff HEAD
git diff <시작 지점>
*시작 지점은 커밋명 or 브랜치명 or 태그명이다.
git diff <시작 지점> <끝 지점>
git diff - -stat <시작 지점> [<끝 지점>]
git blame <파일>
git blame -M <파일>
git blame -C -C <파일>
git log -C -C -p -1 <특정 지점>
git clone <저장소>
git clone - -depth 200 <저장소>
git remote add <원격 저장소> <저장소 url>
git branch -r
git branch <새로운 브랜치> <원격 브랜치>
git branch <새로운 브랜치> <원격 태그>
git fetch
git fetch <원격 저장소>
git pull <원격 저장소>
git pull
git checkout -b typo-fix/review/issue-63
git add src/main/java/org/team14/webty/reviewComment/repository/ReviewCommentRepository.java
git commit -m "typo-fix: 재귀적 하위댓글 조회기능 오류를 네이티브 쿼리로 변경"
git push origin typo-fix/review/issue-63
git push <원격 저장소> <지역 브랜치>:<원격 브랜치>
git push <원격 저장소> <지역 브랜치>
git push <원격 저장소> <지역 브랜치>
git remote prune <원격 저장소>
git remote rm <원격 저장소>
위에 작성된 명령어들은 주로 사용될만한 명령어들이고 이외에도 git 의 명령어는 상당히 많다. 더 다양한 사용법들을 알아보고자 한다면 아래 링크에서 확인하면 된다.