Open Sources

Git 주요 명령어

Happy@Cloud 2019. 12. 18. 17:51

git 공부하기

git의 핵심만 빠르게 이해하고 싶으면 아래 글을 참조하세요.

rogerdudler.github.io/git-guide/index.ko.html

 

git - 간편 안내서 - 어렵지 않아요!

 

rogerdudler.github.io

git에 대한 체계적인 공부를 하시려면 아래 교재를 이용하세요.

backlog.com/git-tutorial/kr/

 

누구나 쉽게 이해할 수 있는 Git 입문~버전 관리를 완벽하게 이용해보자~ | Backlog

누구나 쉽게 알 수 있는 Git에 입문하신 것을 환영합니다. Git을 사용해 버전 관리를 할 수 있도록 함께 공부해봅시다!

backlog.com

상황별로 사용하는 명령어를 예를 들어 설명합니다.

 

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 

 

Spring Tool Suite, Eclipse에서 git commit & push 하기

git CLI를 이용하여 git commit과 git push를 할 수 있지만, eclipse와 spring tool suite는 UI로 쉽게 할 수 있는 기능을 제공합니다. 동일한 어플리케이션을 여러명이 개발할때는 git push할때 충돌의 위험이 있.

happycloud-lee.tistory.com