Git 주요 명령어
git 공부하기
git의 핵심만 빠르게 이해하고 싶으면 아래 글을 참조하세요.
rogerdudler.github.io/git-guide/index.ko.html
git에 대한 체계적인 공부를 하시려면 아래 교재를 이용하세요.
상황별로 사용하는 명령어를 예를 들어 설명합니다.
1. git server에 project를 만들거나 기존에 있는 git 프로젝트를 Local에 clone하고 다시 push하고 싶을때
- Local에 clone은 아래와 같이 합니다. git 주소는 본인 git 주소로 바꿔서 테스트 하세요.
$ cd tmp
$ git clone https://gitlab.com/happycloudpak/hello1.git
테스트로 파일을 하나 수정하고 , 아래 명령어로 push합니다. id, pw를 입력하면 push됩니다.
$ git add . && git commit -m "test" && git push
2. git push 시 id, pw를 저장하여, 계속 안 물어보게 하고 싶을 때
아래와 같이 하면 1시간 동안은 안 물어 봅니다. --timeout을 지정하지 않으면 15분 후에 다시 물어 봅니다.
$ git config credential.helper 'cache --timeout=3600'
* 영구로 설정하려면 git config credential.helper store 을 사용하십시오. 보안상 권장하지는 않습니다.
* 현재 작업하는 temninal에 전역적으로 설정하고 싶으면 --global 옵션을 추가하세요.
$ git config credential.helper store --global
3. Local project를 신규 git project에 push하고 싶을 때
Local에서 개발한 project 소스들을 git project에 저장하고 공유하고 싶을 때 아래와 같이 하십시오.
- git에 프로젝트 생성합니다. 이때 README.md는 만들지 마십시오. (initialize repository with README.md를 체크하지 마세요.)
> cd hello2
> git init
> git remote add origin https://gitlab.com/happycloudpak/hello2.git
파일을 추가하거나, 수정한 후 아래 명령어로 push합니다.
> git add . && git commit -m "Initial commit" && git push -u origin master
* 만약 push가 안되면 아래와 같이 git주소를 변경합니다. username을 앞에 추가해 줍니다.
> git remote set-url origin https://happycloudpak@gitlab.com/happycloudpak/hello2.git
4. Local project를 기존 git project에 push하고 싶을 때
> mkdir hello3
> cd hello3
> git init
> git remote add origin https://happycloudpak@gitlab.com/happycloudpak/hello2.git
파일을 추가하거나, 수정한 후 아래 명령어로 push합니다.
먼저 pull한 후 , push합니다.
> git pull -r origin master
> git add . && git commit -m "Initial commit" && git push -u origin master
* 만약 push가 안되면 아래와 같이 git주소를 변경합니다. username을 앞에 추가해 줍니다.
> git remote set-url origin https://happycloudpak@gitlab.com/happycloudpak/hello2.git
5. https 통신 disable
> git config --global http.sslverify "false"
6. A git의 프로젝트를 B git으로 옮기기
> git clone https://github.com/kabanero-io/collections.git
> cd collections
> git remote set-url origin https://git.example.com/my_org/collections.git
> git push -u origin master
==
또는 아래와 같이 새로운 git의 별명을 새롭게 부여해서 push해도 됨
> git remote add private-org https://git.example.com/my_org/collections.git
> git push -u private-org
7. 본인만의 Feature브랜치 운영 방법
ㅇ 본인 Local branch로 전환
반드시 Local에 본인만의 branch를 만들어 작업하십시오.
여러 사람이 글을 관리하므로 충돌나지 않게 자기만의 날짜별 branch에서 작업하셔야 합니다.
git checkout -b 20200305
이미 있다면 git checkout 20200305
ㅇ Commit
아래와 같이 본인 작성 소스를 병합하고 push합니다.
git add .
git commit -m "describe changes"
ㅇ Pulling
dev브랜치로 전환
$ git checkout dev
서버에서 변경사항 pulling
$ git pull origin dev
ㅇ Merge
$ git merge <local 작업 branch>
예) git merge 20200305
ㅇ Push
$ git push origin dev
ㅇ Local git 변경 사항 취소
로컬에서 작업한 내용을 모두 초기화하여, remote git repository의 내용으로 되돌리는 방법입니다.
$ git resotre .
$ git reset
$ git clean -fd
충돌 최소화 가이드
작업순서: master branch에서 clone하는 경우
- git clone <git url>
- Local git에서 작업
- push전에 pull하면서 -r 옵션(rebase) 줍니다. pull은 서버 git에서 소스만 fetch한 후 local git과 자동 merge를 합니다. 그리고 rebase라는 것을 하면 충돌이 최소화 됩니다. 동일한 파일을 수정하지 않았다면 충돌이 나지 않습니다.
$ git pull -r origin master
- Local git에 변경사항 Add & commit : git add . && git commit -m "<comment>" && git push origin master
충돌파일 처리
git pull -r 로 갖고 왔을 때 내용이 다른 동일한 파일이 서버와 local에 있다면 자동 merge가 됩니다.
파일을 열어 보면 아래와 같이 내용이 merge가 되어 있습니다.
'<<<<<<<< HEAD'와 '>>>>> xxx'사이에 충돌되는 내용이 표시 됩니다. '=======' 위에가 서버 내용이고, 아래는 Local 내용입니다.
# Webhook
config관리용 git repo입니다.
<<<<<<< HEAD
Write on Server
=======
Write on PC
>>>>>>> update README.md
충돌 상황을 재현하려면, 아래와 같이 하시면 됩니다.
- $ git pull -r origin main
- Local에서 README.md 수정하고 저장
- $ git add . && git commit -m "update README.md"
- 서버 git에서 README.md 열어서 수정하고 commit
- $ git pull -r origin main
충돌 파일 merge하기
- 파일을 열어 충돌난 부분을 합친 후 저장합니다.
# Webhook
config관리용 git repo입니다.
Merged.
- git add . && git rebase --continue && git push -f origin main
git commit 대신에 rebase --continue를 사용하고, push 시 -f (--force) 옵션으로 푸시 합니다.
eclipse, STS(Spring Tool Suite)에서 git pull/push하기
https://happycloud-lee.tistory.com/194?category=832250