728x90
반응형

인프라 담당자인 나로써

실무를 하는 나로는 

개발자와 좋은 관계로 지낼 수 없다는 것을

깨달았다 ^.^

 

깃허브 계정 만들어주고 

권한도 주고

레포지토리 생성도 잘해주었는데

 

remote error GH006 에러가 난다고 master권한으로 push가 안되며 뭐 용량땜에 안된다고 했는데 

해당 건은 개발자가 설정해서 가능..!!

 

용량 관련은 

클라우드로 깃허브를 구축하엿으면 

용량 설정 하였으나 

서버로는 용량 설정 불가 

 

인프라 담당자가 많이 알아야

개발자들의 요구를 잘 알고

거절 할 수 있을 것 같다 ^^

 

 

 

 

반응형

'IT > GitHub' 카테고리의 다른 글

[Git] Git 개념 정리  (0) 2022.06.17
SVN의 개념 및 GIT과의 차이점  (0) 2022.06.15
728x90
반응형

SVN(Subversion)

 

SVN은 여러명이서 작업하는 프로젝트의 버전관리나 각자 만든 소스의 통합과 같은 문제를 해결하기 위해 저장소를 만들어 그곳에 소스를 저장해 소스 중복이나 여러 문제를 해결하기 위한 형상관리/소스 관리 툴이다.

형상관리 : 소스의 변화를 끈임없이 관리하는 것 

 

프로젝트 소스는 SVN 서버의 Trunk라는 곳에 위치하는데, 자신의 Local 저장소에 Trunk의 소스를 다운 받아 수정 및 

추가 후 다시 업로드 하는 방식.

 

자신만의 소스를 다른 개발자들과 떨어져서 작업하려면 Branch를 만들어 작업 후 자기자신만 접근, 개발하여 

완성되면 Merge 기능을 사용하여 Trunk와 소스를 합치면 된다.

 

A가 자신이 수정한 소스나 폴더를 Commit하면 B는 해당 소스를 Update하면 최신 소스를 받아올 수 있다. 

 

SVN 사용 목적

 

형상관리 툴을 사용하게 되면 소스를 버전 별로 관리할 수 있어서 개발할 때 실수로 소스를 삭제하거나 수정하기 이전으로 돌아가야되는 경우에 유용하게 사용할 수 있다.

 

팀 프로젝트에서도 누가,무엇을.어떻게 수정했는지도 알 수 있기 때문에 코드를 병합하거나 수정된 소스를 추적하는 데에도 사용 된다.

 

단순히 사용 목적을 나열하자면 아래와 같다. 

 

- Revision 별로 파일 백업이 가능하다.

  파일 복원이 가능해지고, 실수가 발생해도 수정이 빨리 이루어 질 수 있다.

 

- 개발 버전과 배포 버전을 섞이지 않고 쉽게 관리 가능

   소스코드 버전관리

 

- 파일 이름 변경,이동,디렉토리 버전 관리도 지원이 가능하다.

- 여러 사용자가 동시에 커밋을 하더라도 충돌이 발생하지 않는다.

   프로젝트 협업 지원

 

 - 한번 커밋이 발생 할때 마다 revision이 올라간다.

   어느 revision이 어떤 파일을 commit했는지 확인 용이

 

- commit시에 자동 로그 기능이 있다.

  작업 이력 관리

 

- 서버와 클라이언트 양방향 데이터 전송으로 네트워크 소통량이 최소화된다.

- 접근이 가능한 개발자는 누구든 쉽게 수정이 가능하다.

 

SVN 용어 & 명령어 

 

용어 

 

Repository 

 

프로젝트 파일 및 변경 정보가 저장되는 장소로 모든 프로젝트의 프로그램 소스들은 이 저장소안에 저장 된다.

한 프로젝트 마다 하나의 저장소가 필요하며, 네트워크를 통해서 여러 사람이 접근 할 수 있고 

소스뿐만이 아니라 소스의 변경 사항도 모두 저장된다.

 

Trunk 

 

프로젝트에서 가장 중심이 되는 디렉토리로 개발 소스를 Commit했을 때 개발 소스가 모이는 장소이다.

소스와 파일 포함 

 

모든 개발 작업은 trunk 디렉토리에서 이루어지며 trunk 디렉토리 아래에는 바로 소스들의 파일과 디렉토리가 들어가게 된다.

 

Branch

 

trunk에서 뻗어져 나온 나뭇가지를 뜻하며, 프로젝트 내의 작은 프로젝트의 개념이다.

 

trunk 디렉토리에서 개발하다 보면 큰 프로젝트에서 또 다른 작은 분류로 빼서 따로 개발해야할 경우가 생기는데, 

이때 프로젝트안의 작은 프로젝트를 생성하는 개념으로,  branches 디렉토리 안에 또 다른 디렉토리를 두어

그 안에서 개발하게 된다.

 

trunk에서 분리/복사한 소스로 버전별 배포판을 생성하거나 trunk와 별도로 운영환경을 위한 안정화된 소스 관리 목적으로 사용된다. 

 

Tag 

 

tag는 꼬리표라는 뜻으로 버전 별로 소스코드를 따로 관리하는 공간이다.

버전 별로 태그를 붙여 tag 디렉토리 안에 보관하는 개념 

 

특정 시점의 상태 보존 목적으로 사용 장기적으로 버전 별로(1.0, 1.1 등) 소스 코드를 따로 저장하는 공간이다.

특정 시점에서 프로젝트의 스냅샷을 찍어두는 것

 

Revision

 

수정된 버전이라는 의미로, 클라이언트가 Repository에 새로운 파일,수정 등을 commit할때 마다 번호가 하나씩 증가한다.

 

Head 

 

Repository에 저장된 최신 revision을 의미한다.

누군가에 의한 가장 최근에 commit된 revision이다.

 

Base 

 

클라이언트가 checkout,update 등의 명령을 통해 Repository로 부터 내려받은 revision을 의미한다.

 

이 revision을 가지고 클라이언트는 수정 및 commit을 하게 된다.

 

만약 Head와 Base가 다르다면 commit이 거부되고 update를 먼저 수행해야 commit이 가능해진다.

 

내가 update한 후 소스 코드를 수정하고 있는 상황에서 다른 사람이 commit하여 revision이 증가한 경우 

Head는 다른 사람이 commit한 revision이 되어 내 소스코드가 이전 revison이 된 경우이다.

 

lmport 

 

맨 처음 프로젝트 시작할때 빈 Repository에 맨 처음 파일들을 저장소에 등록하는 명령어이다.

 

Checkout 

 

저장소에서 소스를 받아 오는 명령어로, 받아온 소스에는 소스 뿐만이 아니라 버전관리를 위한 파일도 같이 받아 온다.

지우거나 변경시 저장소와 연결 불가능 

 

Export 

 

Checkout과 달리 버전관리 파일을 뺀 순수한 소스만 가져오는 명령어로 마지막에 사용한다.

 

Commit 

 

로컬 저장소의 체크아웃 한 소스의 변경된 내용(수정,파일 추가,삭제 등)을 저장소에 저장하여 갱신 하는 명령어이다.

 

Update 

 

체크아웃 해서 받은 소스를 서버 저장소의 최신 소스 버전으로 업데이트 하는 명령어이다. 

소스 수정이나 Commit하기전에 한 번씩 해주는게 좋다.

 

Revert 

 

로컬 저장소의 소스 코드 내용을 이전 상태로 돌리는 명령어이다.

 

Log 

 

저장소에 어떠한 것들이 변경 되었는지 revison을 통해 확인 할 수 있는 명령어이다.

 

Diff 

 

예전 소스 파일과 지금의 소스 파일의 차이점을 비교해 보는 명령어이다.

 

Blame 

 

한 소스 파일을 대상으로 각 리비전에 대해서 어떤 행을 누가 수정했는지 작업한 내용을 확인하는 명령어이다.

출력 순서는 리비전,커밋한 사용자의 ID,소스 순이다.

 

lock 

 

파일에 락을 걸어 락을 건 사용자만이 수정할 수 있게 해주는 명령어이다.

해제는 svn unlock을 통해 할 수 있으며, 왜 파일에 락을 걸었는지도 로그를 기록 할 수 있다.

 

Add

 

새 파일을 만들었을 경우에 파일을 추가 해주는 명령어이다.

저장소에 저장은 되지 않아 add 뒤엔 꼭 svn commit을 꼭 해줘야 한다.

 

Status 

 

자신이 수정하고 있는 파일의 상태를 알려주는 명령어이다.

 

Mkdir 

 

새로운 디렉토리를 만드는 명령어로 실제 변경사항은 commit시에 적용된다.

 

Delete 

 

파일/디렉토리를 삭제하는 명령어이다.

 

Move 

 

파일을 이동하는 명령어로 실제 변경사항은 commit시에 적용된다.

 

rename 

 

파일 이름을 변경하는 명령어로 실제 변경사항은 commit시에 적용된다.

 

List 

 

파일 리스트를 확인하는 명령어이다.

 

Switch

 

소스 서버를 변경하는 명령어이다.

 

lnfo

 

로컬 저장소 또는 원격 저장소의 파일, 폴더 정보를 확인하는 명령어이다.

 

SVN vs GIT

 

SVN 

 

- svn은 대부분의 기능을 완성해놓고 소스를 중앙 저장소에 commit한다.

  SVN에서 commit은 중앙 저장소에 해당 기능을 공개한다는 의미.

 

- GIT과 가장 큰 차이점은 개발자가 자신만의 Version History를 가질 수 없다.

  local History를 이용하긴 하지만 일시적이고 자신이 몇일전까지에 한해 작업한 내역을 

 확인 가능하지만 버전 관리가 되지는 않는다.

 

- Commit한 내용에 실수가 있을 시에 다른 개발자에게 바로 영향을 미치게 된다.

 

GIT 

 

- GIT은 개발자가 자신만의 Commit History를 가질 수 있고, 개발자 저장소와 서버 저장소를

독립적으로 관리가 가능하다.

 매우 유연한 방식으로 소스를 운영할 수 있으며, 이러한 유연성이 git의 가장 큰 장점

 

- Commit한 내용에 실수가 있더라도 바로 서버에 영향으 미치지 않는다.

- 마음대로 Commit(Push)하다가 자신이 원하는 순간에 서버에 변경 내역을 보낼 수 있으며,

서버의 통합 관리자는 관리자가 원하는 순간에 각 개발자의 Commit History를 가져올 수 있다.

 

참고 사이트 

 

https://velog.io/@gillog/SVNSubversion-%EA%B8%B0%EB%B3%B8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'IT > GitHub' 카테고리의 다른 글

[Git] Git 개념 정리  (0) 2022.06.17
[실무] 깃허브 remote error GH006 에러  (0) 2022.06.15
728x90
반응형

깃허브란 ?

 

Github는 소프트웨어 개발 프로젝트를 위한 소스코드 관리 서비스입니다. 소스 코드를 열람하고 간단한 버그 관리,

SNS 기능까지 갖추고 있어 개발자에게 없어서는 안될 서비스 입니다. GitHub를 사용하여 버전 관리를 실시하고 있는 기업도 다수 있습니다. 

 

깃허브를 사용하기 위해서 커밋과 푸시는 꼭 알아 둬야 하는 개념 

 

커밋 (commit) : 파일을 추가하거나 변경 내용을 저장소에 저장하는 작업

푸시 (push) : 파일을 추가하거나 변경 내용을 원격 저장소에 업로드하는 작업 

 

사전 지식 2 : 로컬 저장소와 원격 저장소 

 

저장소는 파일이나 디렉토리를 저장하는 장소입니다. 변경 이력을 관리하고자하는 디렉토리 등을 

저장소의 관리하에 두는 것으로, 그 디렉토리에 있는 파일 등의 변경 내역을 기록 할 수 있다. 

 

저장소는 자신의 컴퓨터에 있는 "로컬 저장소"고 서버 등 네트워크에 있는 "원격 저장소"의 2개소에 있습니다.

기본적으로 로컬 저장소에서 작업을 수행하고 그 결과를 원격 저장소에 저장하게 됩니다. 

 

사전 지식 3 : 브랜치 

 

소프트웨어 개발은 현재 출시하고 있는 버전의 유지 보수를 하면서 새로운 기능 추가 및 버그 수정을 할 수 있습니다. 

이러한 병렬로 수행되는 여러 버전 관리를 위해 Github에는 브랜치라는 기능이 있습니다. 

 

지점은 역사의 흐름을 분기하여 기록해 나가는 것 입니다. 분기 한 지점은 다른 지점의 영향을 받지 않기 때문에

같은 저장소에서 각 개발을 해 나갈 수 있습니다.

 

GitHub 사용법 

 

1번의 작성은 처음 한번 하고 2번에서 5번 반복 ~ !! 

 

기본적으로 작은 작업 단위를 커밋하고 어느 정도 작업이 일단락했을때 푸시를 하는 것이 일반적 

커밋 작업이 알기 쉽게 커밋 메시지를 남겨두면 로그를 따라가는 때 도움이 됩니다.

 

1. Github에 저장소 작성 (git init) 또는 복제 (git clone)

2. 파일의 작성, 편집

3. 파일의 생성/변경/삭제를 git 인덱스에 추가 (git add)

4. 변경 결과를 로컬 저장소에 커밋 (git commit)

5. 로컬 저장소를 푸쉬해 원격 저장소에 반영 (git push)

 

mkdir : 새로운 디렉토리를 만드는 명령 

cd : 디렉토리 이동하는 명령 

git init : Git 저장소를 새로 만드는 명령 

 

파일의 생성 / 변경 /삭제 git 인덱스에 추가 (git add)

 

hello.html 저장소에 커밋할 준비를 하기 위한 변경 내용을 임시로 저장할 위치

 

변경 결과를 로컬 저장소에 커밋 (git commit)

 

다음으로 인덱스에 추가 된 파일 커밋, 커밋은 파일이나 디렉토리의 추가 또는 변경을 저장소에 기록하는 작업 

 

git commit -m "new file"

 

이제 저장소에 파일 추가가 기록되었습니다. 파일이 추가되어 있는지 확인 

 

git status 

 

원격 저장소에 반영하기 전에 원격 저장소 정보 추가 

 

로컬 저장소를 밀어 원격 저장소에 반영 (git push)

 

로컬 저장소의 변경 사항을 GitHub에 있는 원격 저장소에 반여앟기 위해 다음 명령을 실행

 

git push origin master

 

GitHub의 사용자 이름과 암호를 입력하면 GitHub에 푸시하고 원격 저장소에 반영할 수 있습니다. 

작업이 끝났으면 github.com 페이지로 가서 파일이 잘 푸쉬 됐는지 확인 

 

브랜치 사용 

 

사전 지식에서도 소개했지만 분기는 동시에 이루어지는 여러 버전 관리를 할 수 있는 구조 

 

- 브랜치 생성, 이동

- 브랜치에서의 개발 작업 

- 브랜치에 푸시 

- 브랜치에서 풀 

- 브랜치 병합 

- 브랜치 삭제 

 

브랜치의 생성, 이동 

 

우선 현재 브랜치 목록을 살펴 보자 

 

git branch

 

실행 결과는 다음과 같다.

 

* master 

 

현재 브랜치에는 "*"가 붙는다. 이는 브랜치가 master 것이고 현재 브랜치도 master 임을 나타내는 것입니다.

subdir01이라는 브랜치 생성 

 

git branch subdir01 

 

지점 이동은 checkout 명령 사용 

 

git checkout subdir01

 

지점 만들기 및 이동 다음 명령으로 정리 

 

git checkout -b subdir01 - 이동 명령어

 

git merge subdir01 - 브랜치 결과 병합

 

git status 

 

저장소 상태를 확인하기 위해 사용하는 명령어 

현재 브랜치의 이름과 추가,변경된 파일 및 디렉토리 목록 표시 

 

git add 

 

파일이나 디렉토리를 인덱스에 추가하는데 사용하는 명령어 

추가 할 때 [file_pattern]에는 파일 및 디렉토리 이름을 직접하고있는 외에 "*.txt"처럼 와일드카드로 여러 대상을 지정할 수도 있습니다. 

 

git add [file_pattern]

 

git commit 

 

인덱스에 추가 된 파일이나 폴더의 내용을 저장소에 쓸 때 사용하는 명령어입니다. 옵션을 지정하지 않고 

이 명령을 실행하면 커밋 메시지를 작성하는 편집기를 시작합니다. 

 

편집기는 각각 다르기 때문에 쉽게 메시지를 지정하려면 -m 옵션을 붙인 후 큰 따옴표 안에 있는 메시지를 지정합니다. 

또한 -a 옵션을 지정하면 변경된 파일을 검색하고 인덱스에 추가하는 작업도 동시에 실시합니다. 

 

git commit -am "A first commit"

 

git branch 

 

브랜치에 대해 다양한 작업을 수행하기 위해 사용하는 명령어 입니다. 아래와 같이 사용합니다.

 

git branch : 브랜치 만들기 

git branch : 브랜치 목록보기 

git branch -d : 지정한 브랜치를 삭제 

 

git checkout 

 

로컬 저장소의 브랜치를 전환 할 때 사용하는 명령어 입니다. 

 

git checkout 

 

git log 

 

로컬 저장소의 커밋 히스토리를 탐색하는데 사용하는 명령 입니다.

-n 옵션 내역보기 수를 지정할 수 있습니다. 

 

git log -n 10

 

git grep 

 

저장소의 파일 내용에서 검색하고자 할 때 사용하는 명령어 입니다.

특정 단어가 포함 된 파일을 검색하고 해당 파일의 어디에 단어가 포함되어 있는지를 확인할 수 있습니다.

 

git grep "검색 단어" 

 

git clone 

 

기존 원격 저장소를 로컬에 다운로드하기 위하여 사용하는 명령어 입니다.

예를 들어, GitHub에 공개되는 저장소를 자신의 컴퓨터에 다운로드할때 사용합니다. 

 

git clone [url]

 

git remote 

 

원격 저장소를 조작하는데 사용하는 명령으로 아래와 같이 사용합니다. 

 

git remote : 원격 저장소의 이름 목록 표시 

git remote -v : 원격 저장소에 대한 자세한 목록보기 

git remote add : 원격 저장소를 추가 

git remote rm : 원격 저장소를 제거 

 

git reset 

 

로컬 저장소의 커밋을 취소하기 위하여 사용하는 명령어 입니다.

잘못 커밋하거나 수정 누락이 있을때 자주 사용 

 

git reset -soft HEAD 

 

git merge

 

현재 브랜치에 다른 지점에서 변경 사항을 병합하는데 사용하는 명령 

다음의 예에서 분기 bug-fix를 master 브랜치에 병합

 

git pull

 

브랜치의 변경 사항을 캡처하기 위해 사용하는 명령어 

로컬 저장소의 브랜치에 원격 저장소 origin의 master 브랜치를 가져옵니다. 

 

 

출처 : https://tagilog.tistory.com/377

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'IT' 카테고리의 다른 글

CI/CD(지속적 통합/지속적 제공)란 ??  (0) 2021.09.16
github에서 자주 쓰는 영어  (0) 2021.09.15
WMS이란 ?  (0) 2021.08.20
SCM과 SRM이란 ?  (0) 2021.08.20
RPA 란 ??  (0) 2021.08.18
728x90
반응형

깃허브 

 

깃허브는 분산 버전 컨트롤 소프트웨어 깃을 기반으로 소스 코드를 호스팅하고 협업 지원 기능들을 지원하는 마이크로소프트의 웹서비스입니다. 

2020년 현재 가장 인기 있는 소스 코드 호스팅 서비스이자 소프트웨어 개발 플랫폼이다.

 

깃허브에서는 코드 호스팅 서비스 외에 다양한 기능들을 제공하고 있습니다. 깃 저장소를 원격에서 관리할 수 있을 뿐만 아니라 협업이 가능하도록 웹 서비스로 이슈 트랙커를 제공하고 있다. 

 

저장소를 자신의 계정에 복사할 수 있는 포크 기능과 코드 변경 사항 반영을 요청하는 풀리퀘스트 기능은 오픈 소스의 기본적인 협업 방식으로 이루어져 있다.

 

깃으로 사용할 수 있는 기능을 웹 인터페이스로 사용할 수 있으며 저장소 관련 통계 저장소 위키 정적 웹사이트 호스팅 

패키지 호스팅 지속적으로 통합을 제공하는 깃허브 액션 등의 서비스를 제공하고 깃허브 데스크탑과 깃허브 포 모바일로도 서비스를 사용할 수 있다. 

 

깃허브는 수많은 오픈소스들이 자리잡고 있는 것으로도 유명하다.

프레임워크 뷰, 컨테이너 도구 도커, 웹 프레임워크 루비 온 레일스, 머신러닝 라이브러리 텐서플로우, 

파이썬 데이터 분석 라이브러리,판다스, 페이스북의 자바스크립트 프레임워크 리액트, 정보시각화 라이브러리 

 

반응형

'IT' 카테고리의 다른 글

핫 스패어(Hot Spare)란 ??  (0) 2021.08.10
핫 스왑이란 ?  (0) 2021.08.10
RAID 란 ?  (0) 2021.08.10
젠킨스란 무엇 일까 ??  (0) 2021.08.09
WAS와 웹서버의 차이  (0) 2021.08.06

+ Recent posts