Git 로컬저장소를 GitHub 에 푸쉬하는법




   Start a project 버튼을 선택한다.



Repository name을 입력하고, 저장소를 공용으로 쓸지 개인으로 쓸지 선택한다. 

Create repository 버튼을 선택하면 저장소가 생성된다. 




git remote add origin https://github.com/kknd83/finedust.git


명령어를 이용해서 원격지 저장소를 설정한다.


git init 명령어를 이용해서 로컬저장소를 생성한다. 이미 저장소가 생성되어 있으므로 해당과정을 생략하였다. 


echo "# finedust" >> README.md

 git add README.md

 git commit -m "README.md add"

README.md 파일을 생성한뒤 commit 한다.


git remote -v 


통해서 현재 연결된 원격지 저장소 정보를 확인한다.



git config --local user.email "이메일"

git config --local user.name "계정"

git config --local e


git conifg 명령어를 이용하여 git local 정보를 설정해주고, 설정값을 git conifg --local e 명령어로 확인 할 수 있다.





Repository not found 에러가 발생하였다. 




git remote set-url origin "https://계정명@github.com/계정명/레포지토리명.git"


위에 명령어로 원격 저장소 주소를 변경한다음  git push -u origin master  원격저장소로 push 한다.




Github 원격저장소에 푸쉬가 정상적으로 된 내용을 확인할 수 있다. 



블로그 이미지

클라인STR

,

GitHub 시작하기

형상관리 2019. 1. 23. 14:09

GitHub 서비스 계정 생성



sign up  버튼을 클릭한다.




username, Email address , password 입력한다.



   Verify account 에서 이미지 옮기기를 수행한다.



검증하기 눌러서 한번더 검증하고 Create an account 버튼을 선택한다.




사용할 Plan 을 선택한 다음 , Continue 버튼을 클릭한다. 





문항에 알맞는 내용을 체크하고 Submit 버튼을 선택한다.



가입이 완료되면 이메일 인증을 해야된다. 가입시 작성한 이메일 내용을 확인한뒤 이메일 인증을 완료한다.




블로그 이미지

클라인STR

,



git init  - 새로운 git 저장소를 생성한다.  .git이라는 폴더가 생성된다. 

git은 세가지 상태를 가지고 있다. 작업디렉토리는 실제 파일들로 구성되어있고, 파일을 수정하고 수정된 파일을 add 할경우 Staging Area(Index)상태가 되며, commit을 하면 최종확정본 상태(HEAD) 된다. 


git add 명령어를 사용하면 Staging Area 상태로 변경된다. 폴더 전체를 add 할경우 git add * 명령어를 사용한다. git status 명령어를 사용하여 git에 현재 상태를 확인 할 수 있다. 

git rm --cached 파일명 명령어를 이용하면 Staging 상태를 작업상태로 변경할 수 있다. 

Staging 상태에서 Head 상태로 변경할려면 git  commit -m "커밋 메세지" 명령어를 사용한다. 


git log 명령어를 실행하면, commit 기록을 확인할 수 있다.

commit id, 커밋한브랜치정보, 작성자 정보 , commit message를 확인할 수 있다. 

git log --oneline 명렁어를 입력하면 git log를 한줄로 볼 수 있다. 


modified 상태인 파일을 수정전으로 돌릴경우 git checkout -- 파일명 명령어를 사용하면 상태를 변경할 수 있다. 이 명령어는 로컬의 변경내용을 변경 전 상태로 돌려준다. 이미 Staging 추가된 변경내용과 새로 생성한 파일은 그대로 남아있다. 만약 로컬에 있는 모든 변경 내용과 확장본을 포기하려면, 아래 명령으로 원격 저장소의 최신 이력을 가져오고, 로컬 master 브랜치가 저 이력을 가리키도록 수정 할 순 있다. git fetch origin,  git reset --hard origin/master

BookList.js파일을 수정한뒤 git add 명령어를 이용하여 Staging상태로 변경하였다, 이때 git reset --hard 명령어를 이용하면 수정전 상태로 다시 변경된다. 


BookList.js 파일을 add 하고 commit한다음 git log 명령어를 실행하면 최근이력부터 순차적으로 log이력을 보여준다.


브랜치란? 독립적으로 어떤작업을 진행하기위한 개념이다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다.


git checkout -b 브랜치명  이용해서 새로운 branch를 생성할 수 있다. git branch 명령어를 이용해서 현재 로컬 브랜치를 확인 할 수 있다. git checkout 브랜치명 통해서 현재 선택된 브랜치를 변경할 수 있으며, git branch -d 브랜치명 이용하여 브랜치를 삭제할 수 있다. git add 파일이름

git diff 원본 비교대상브랜치 


브랜치를 병합하기위해서는 git merge 브랜치명 사용한다.


참고 : https://backlog.com/git-tutorial/kr/stepup/stepup1_1.html


 


블로그 이미지

클라인STR

,


1. OverView

  • 소프트웨어 공학의 목적 - 어떻게 고객이 원하는 고품질의 생산성이 높은 프로그램의 만드는것이 목적 

  • 품질이 높은소프트웨어 - 생산성,유지보수 좋다.
    고객의 원하는 요구사항을 명확하게 캐치하는것이 필요함 - 요구공학 프로세스 - 최종합의에 대한 도장을 찍는것을 Baseline이라고함 

  • 소프트웨어 공학에서의 형상관리란 - 모든 산출물에 대한 형상관리를 하는것을 얘기한다. 모든것 (다른문서 또한) 관리가 가능하다. 

  • Git 을  써야되는이유? - 파일시스템 기반의 형상관리는 제약사항이 많이 발생한다.


1.2. SW 형상관리

  • SW 를 생산 하는 과정에서 발생하는 모든 산출물을 관리
  • 협업하는 환경에서 데이터의 무결성을 보장
  • 요구사항분석부터 테스트까지 이력 추적성 보장

1.3. 베이스라인 (BaseLine)

  • SW 개발에 발생하는 모든 산출물 및 명세에대한 이해당사자들간의 합의된 시작 지점
  • 흔히 말하는 버전(Version)과 같은개념
  • 협업하는 환경에서 베이스라인은 소통하는 기준이 되며, 베이스라인이 불명확한 경우 개발혼선이 발생할 수 있다.


1.4. 형상통제위원회 (CCB : Configuration Control Board) 

  • 무분별한 변경이 발생하고 있고, 통제 되지 않는다. 

  • 제품 출시 준비와 지속적인 솔루션 개선이 이루어 져야한다. 

  • 잠재 오류가 출시 제품에 들어가는 것은 아닌지 우려 스럽다.

출시전 계속적으로 버그가 발생한다고 했을때 어떻게 처리해야될것인지에 대한 통제를 CCB에서 해야된다. (PM, 또는 테크니컬 그룹이 진행함) - 보통회의를 얘기함

1.5 형상 관리 도구 (Configuration Management Tool)

SUBVERSION VS GIT


2. Git 이란

  • Git간단한 설명

  • 특징

    • 빠른속도

    • 단순한 구조

    • 비선형적인 개발 (수천 개의 동시 다발적인 브랜치)

    • 완벽한 분산

    • 리눅스 커널 같은 대형 프로젝트에도 유용

2.1 Git 설치

https://git-scm.com

2.2 Git workflow

  • Git 저장소를 만드는 두가지 방법

    1. 원격지에서 저장소를 로컬로 가져오는 방법

    2. 유니크한 레포지토리를 처음부터 만든다.

  • Git Pull = Fetch + Merge 의 명령어 조합이다.

Git Fetch - 원격지에 리포트정보를 로컬리포지토리에 알려줌 
Commit - 변경단위에 하나의 묵을을 만드는것을 말한다.

git commit -a : 모든 수정사항을 한번에 기록하겠다.

git add : 수정사항을 묶어주기위한 단위명령어이다. a,b,c중 a,b만 올릴려고 할경우 
Tracking 정보가 Staging Area에 정보가 올라간다.

git Checkout : 브랜치정보를 옮기는 것을 얘기한다.

git diff : 레포지터리내용과 내가 수정한내역 확인

Git 레포지토리 생성시 중첩시켜서 만들지말것!!!!!!! 
상위디렉토리안에 .git 파일이 있는지 반드시확인한다. 
.git 로컬레파지토리 DB정보

Git Server 구성

Git 을 제공용 레포지토리로 만들려면 Bare파일로 만들어서 제공해야된다. 
–bare타입으로 만들어야됨. 소스파일 없이 생성

Bare타입을 어떻때 쓰는가? 
로컬로 가져있는 소스환경을 외부에서 가져올수 없다.

내부에 깃서버를 따로써서 이력관리를 하고 싶다.

cat .git/config

–bare타입 옵션을 걸고 만들었을때와 아닐때의 차이점은 무엇인가?

git clone 시 remote정보를 여러개로 할수도 있다.

remote정보가 –bare타입이아니면 에러가난다.

remote , branch 도 여러개 가져갈수 있다. .git/config정보를 알면 좋음.

Git Branch / Git Checkout

Git Branch 로 인해 비선형적 개발이 가능하다. 
Git에 체인지단위는 Diff로 구성된다. 각각 Diff는 디펜던시를 가진다.

기본브랜치는 Master 브랜치이다.

Checkout 명령어로 브랜치를 선택한다. 
반드시 -b 옵션을 줘서 브랜치를 로컬로 새로 생성한다.

커밋아이디는 유니크하므로 커밋아이디 8자리만 적어줘도된다.

충돌날때 방안

  • 커밋을 하지않았을때 stash

개발자별로 브랜치를 별도로 따는게 바람직하지 않음(10명이 개발자가 하나씩딴다고한다면)

Master 브랜치에 4개의 각기다른 브랜치가 발생한다면, merge commit이 여러번발생할수 밖에없음. 체리픽을 이용하면, 이부분을 깔끔하게 해결할수 있음. 하지만 체리픽 하게되면 커밋아이디가 새로 따지므로, 이력관리가 백프로이어지는 건아님.

파일하나단위로 커밋하고 푸쉬를 자주하는 구조는 결코 바람직하지않다.

그래프가 깔금하게 유지하기위해서 로컬브랜치를 여러개 따서 작업을 하며, 로컬브랜치에 작업이 끝난경우 최종본에 대한 브랜치만 푸쉬하는방식으로 하면 이력관리가 깔금하게된다.

git check VS git reset 차이점

git reset –hard 헤드위치를 소스까지 적용시킨다.


• git reset 
• git revert 
• git stash 
• git remote 
• git diff 
• git difftool 
• git format-patch 
• git am (apply merge) 
• git grep

revert 커밋을 또 revert 할수있을까? 있다…revert한 이력에 커밋을 남긴다.

confilic 했을때의 대처방안

git stash 활용용도 
http://wit.nts-corp.com/2014/03/25/1153 
git format-patch


블로그 이미지

클라인STR

,


Intellij SVN 소스를 커밋할일이 생겼는데, 한번도 사용해본적이없어서 사용한 방법을 기록해 본다.


Subversion -> Update Directory 선택한다.


Update Directory 화면이 뜨고 OK를 선택한다. 


svn 인증정보를 요청한경우 User name 과 Password 정보를 입력하고 OK를 선택한다. 


Files Merged with Conflicts 화면이 이 나타나며 Merged 또는 Conflicts난 소스 리스트가 나타난다.  

Merge 버튼을 선택한다.


3개의 분할된 영역이 나타난다. 왼쪽이 현재 내가 가진 소스 버전이고 오른쪽이 서버의 소스버전이며 가운데영역이 실제 merged될 결과를 표시하는 영역이다.



붉은색으로 표시된 화살표 모양을 클릭하면 반영하고자하는 소스 내역이 가운데 Result 영역으로 합쳐진다. 충돌내역을 잘 확인하고 적용 버튼을 선택한다.


Subversion -> Commit Directory 를 선택한다.


Commit Change 화면에서 commit 내역을 확인하고 Commit 버튼을 선택한다. 


Code Analysis 창이 뜨고 Commit 을 선택하면 Commit이 완료된다.


참고 : https://okky.kr/article/279048

블로그 이미지

클라인STR

,