본문 바로가기
my_lesson/_GIT

GIT - GITHUB 사용법 [중급]

by boolean 2017. 4. 22.
728x90

Github 사용법 [중급]



1. Github

먼저 Github.com에서 repository를 생성한다. 가입 및 생성

git clone https://github.com/khjoony/MovieList.git

echo "test file" >> test.txt

git add test.txt

git commit -m "test commit"

git remote add origin https://github.com/khjoony/MovieList.git

git push -u origin master


…or push an existing repository from the command line

git remote add origin https://github.com/khjoony/MovieList.git

git push -u origin master

fatal: refusing to merge unrelated histories 에러가 날경우 아래처럼 옵션을 넣어서 실행한다.

git pull origin master --allow-unrelated-histories  // 원격 내용을 강제로 가져온다

0.설정하기

 1.로컬저장소 생성하기

 

2.로컬저장소에 저장하기

 

 3.로컬저장소와  원격저장소 연결하기

 

4.원격저장소에 저장하기

 

요약

 

2. Git Configuration(깃 기본설정)


>>git init

>>git status

>>.vi .gitconfig    // vi 사용법

---------------------이하  .gitconfig의 문서 내용 편집가능-------------

[user]

email = boolean@booolean.com

name = Kimboolean

[core]

editor = vim

[merge]

tool = vimdiff

[color]

status = auto

branch = auto

interactive = auto

diff = auto

---------------------이상  .gitconfig의 문서 내용 편집가능-------------

>>git config --global user.name "Kimboolean" //이런식으로 명령라인에서 개별로 입력가능

>>git config --list     //gitconfig 설정값들을 보여줌

>>git remote add remote_nickname your own repository URL(ex : https://github.com/.......)

>>git remote         //Output nickname of remoteserver

>>git remote -v     //Output nick & URL of remoteserver


특정 branch | folder | file 가져오는 방법 두가지

1.

>> git clone {URL}  -b remote_branch_name[/folder_name | file_name]

2.

>>git branch -r              /remote's list of branches

>>git  checkout -b  local's branch_name  origin/remote's branch_name  




fatal: unable to access 'https://github.com/khjoony/git-workshop.git/': Failed to connect to localhost port 3128: Connection refused

git- set : Configure git as well

git config --global http.proxy http://localhost:3128 

git config --global https.proxy http://localhost:3128 

git config --global url."http://".insteadOf git://

git- unset 

git config --global --unset http.proxy 

git config --global --unset https.proxy 

git config --global --unset url."http://".insteadOf


3.문서 수정 및  생성 

아래 순서를 꼭 지키기 바란다. 이유는 해보면 알겄이다.


빈 폴더에서 처음 파일을 생성해서 commit을 한 다음에어 branch를 생성할 수 있다. 


원하는 이름의 branch를 생성하고 나면 다시 add commit 해야 push할 수 있다.


>>git status 


>>echo helllo git test > gittest.txt  // 문서가 없으면 간단한 파일생성


>>git add filename  or [all | *]

>>git reset    // git add 취소하려고 할 때


>>git status  // Only for check status. Not necessarily.


>>git commit   or  git commit -m "reason of commit's message"


>>git branch         //  Lookup branch of local


>>git branch -a     //  Lookup all of branch


>>git branch -[a]v     //  Detail lookup [all] local of branch


>>git branch --merged  // If Without *, it can delete.


>>git branch --no-merged // It can't delete.


>>git branch -[d | D]  local's branch   // [delete | force delete]  local's branch


>>git push remote_nickname --delete  remote's branch  //remote branch 삭제


>>git branch new_branch_name   // create branch 


>>git checkout branch's name   //Select which branch to use


>>git add filename  or [all | *]


>>git reset    // git add 취소하려고 할 때


>>git status  // Only for check status. Not necessarily.


4.리모트에 잘못 올린 파일 삭제 및 수정(로컬에는 남아있음)

>>git rm -r foldername to be delete or filename to be delete

>>git git commit   or  git commit -m "reason of commit's message"

>>git push

5.문서 결합(merge) 연결(추적) 시키기

>> git branch -vv

  iss53     7e424c3 [origin/iss53: ahead 2] forgot the brackets

  master    1ae2a45 [origin/master] deploying index fix

* serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it

  testing   5ea463a trying something new


iss53 브랜치는 origin/iss53 리모트 브랜치를 추적하고 있다는 것을 알 수 있고 “ahead” 표시를 통해 로컬 브랜치가 커밋 2개 앞서 있다(리모트 브랜치에는 없는 커밋이 로컬에는 존재)는 것을 알 수 있다.

master 브랜치는 origin/master 브랜치를 추적하고 있으며 두 브랜치가 가리키는 커밋 내용이 같은 상태이다. 

serverfix 브랜치는 server-fix-good 이라는 teamone 리모트 서버의 브랜치를 추적하고 있으며 커밋 3개 앞서 있으며 동시에 커밋 1개로 뒤쳐져 있다. 이 말은 serverfix 브랜치에 서버로 보내지 않은 커밋이 3개, 서버의 브랜치에서 아직 로컬 브랜치로 머지하지 않은 커밋이 1개 있다는 말이다. 

testing 브랜치는 추적하는 브랜치가 없는 상태이다.

6. git add commit 되돌리기

>>git checkout { . | dir | file }  //repository 내 {모든 | 폴더 | 파일 } 수정 되돌리기   

>>git reset    //  git add 취소   ^(1단계전,) ^^(2단계전), ^^^(3단계전),.........

>>git reset --hard HEAD^n  //바로전commit을 취소하고 내용을 없애고 HEAD를 바로전으로 이동

>>git reset  HEAD^n  //n번째까지 commit을 취소하고 내용을 남기고 unstage상태로 만들기

>>git reset --soft HEAD^n  //n번째까지 commit을 취소하고 내용을 닉기고 staged상태로 이동

>>git clean -fdx                // 모든 untracked 파일들을 지우기

7. git push를 한 경우 remote repository도 이전으로 되돌리기

>>git reset HEAD^            //local repository에서 commit을 하나 되돌림

>>git commit -m "..."         //되돌린 것으로 commit

>>git push origin +master  //remote repository를 강제로 revert

8. git에서 특정 날짜(일시) 특정시점으로 되돌리기fetch할 수 있는 방법

>>git log gitlog.txt  /git log 의 실행내용을 gitlog.txt라는 파일을 만들어 저장한다.

>>vi gitlog.txt       //gitlog.txt파일을 vi편집기로 열어서 열람한다.

>>git checkout commitID //commitID는 해싱형태로 되어있으며 앞 6자리만 사용해도 된다.

9.특정위치의 브렌치(branch)를 로컬로 복사(clone)하자

>>git clone my_branch remote_repo

댓글