반응형
  • GIT: author/commiter
    • 차이 
      • author: 특정 commit의 최초 저자
      • committer: 특정 commit에 commit --amend를 해서 여러개 쌓았을 때 마지막으로 쌓은 사람, 혹은 어떤 사람의 커밋을 cherry-pick해서 push했을 때 - author는 어떤사람이고 push한 내가 committer가 됨
    • author/committer로 남겨지는 이름을 변경하고 싶으면 git config로 세팅을 바꾸면 됨. 세팅 안되어 있으면 해당 컴퓨터내 사용자 이름이 자동으로 사용됨, 이렇게 자동으로 이름을 사용할 경우, warning 차원에서 커밋시 다음 메세지를 보여줌
      Your name and email address were configured automatically based
      on your username and hostname. Please check that they are accurate.
      You can suppress this message by setting 
      
          git config --global user.name "Your Name"
          git config --global user.email you@example.com
      
      After doing this, you may fix the identity used for this commit with:
      
          git commit --amend --reset-author
      Your name and email address were configured automatically based
      on your username and hostname. Please check that they are accurate.
      You can suppress this message by setting them explicitly. Run the
      following command and follow the instructions in your editor to edit
      your configuration file:
      
          git config --global --edit
      
      After doing this, you may fix the identity used for this commit with:
      
          git commit --amend --reset-author
  • GERRIT: owner/uploader/reviewer
    • 차이
      • owner: gerrit에서 code review를 생성한 최초 저자
      • uploader: gerrit에서 동일 code review에 여러개가 쌓였을 때 마지막으로 쌓은 사람
      • reviewer: 말그대로 review화면에서 보이도록 설정한 사람
    • gerrit code review에 남는 명칭
    • git config에 설정된 이름이 아니라 git ssh 계정을 따라 정보가 남음
    • hyungsub.song 데스크탑을 받아서 git까지 세팅된 것 그대로 사용하다가 review에 내이름이 아니라 hyungsub.song으로 잘못 남게 되는 것 발견함, 수정하기 위해서는 다음 과정을 거치면 됨
      • git remote -v
        • remote의 상세정보 확인, ssh://hyungsub.song@mod.lge.com:29450/rich-dev/cdp-web이었음
      • git remote remove origin
        • 기존 origin 삭제
      • git remote add origin ssh://sy919.kim@mod.lge.com:29450/rich-dev/cdp-web
        • origin 재등록
      • git remote show origin
        • origin 정상등록 확인, 권한이 없다느니 그런 에러가 남
        • 현재 이 로컬내 키 정보가 hyunsub.song의 계정에만 등록되어 있고 sy919.kim에는 없기 때문
        • 해결을 위해 /home/hyungsub/.ssh/id_rsa.pub내용을 카피해서 gerrit setting화면에 붙여넣자
        • 더 정확히 하기 위해 hyungsub.song계정 gerrit setting에 기존 등록된 id_rsa.pub는 삭제해면 여기로 더이상 남는 것 아예 방지가능함, 하지만 구지 여기까지는...

 

반응형
반응형
stash: to store or hide something, especially a large amount
git stash는 branch에 따라 달라지지 않고 전체적으로 공유됨
  • git stash (=git stash save)
  • git stash save [stash명, 기본이름-stash@{0}] : 이름 지정해서 저장하려면 git stash save를 써줘야함
  • git stash list
  • git stash apply [stash명, 기본이름-stash@{0}] : 가장 최근 stash 가져와 merge하되 다시 staged상태까지 복원하진 않음
    • but git stash apply localTemp[stash명] 실행하면 locallTemp is not a valid reference 에러나고 git stash apply stash@{0} 이렇게 해야만 정상동작함
  • git stash apply --index                              : staged상태까지 복원하려면 --index 붙어야함
  • git stash drop [stash명, 기본이름-stash@{0}] : 가장 최근 stash 제거
  • git stash clear : stash전체 다 비움
  • git stash pop                                          : git stash apply + git stash drop 인듯
  • git stash show -p | git apply -R                   : merge한 stash 되돌리기 (unapply 개념)
  • git stash --patch  : 대화형 프롬프트가 뜨며 변경된 데이터 중 저장할 것과 저장하지 않을 것 지정가능

 

반응형

'git' 카테고리의 다른 글

git commit 취소  (0) 2022.05.20
git author/committer, owner/uploader/reviewer 차이  (0) 2022.05.17
git ignore  (0) 2019.09.03
git bash shorcuts: copy(ctrl+insert), paste(shift+insert)  (0) 2019.06.11
git rebase, cherry-pick을 잘 이해해보자  (0) 2019.06.11
반응형
반응형
반응형

git bash shorcuts

  • copy(ctrl+insert)
  • paste(shift+insert)
반응형

'git' 카테고리의 다른 글

git stash: branch에 따라 달라지지 않고 전체적으로 공유됨  (0) 2019.12.18
git ignore  (0) 2019.09.03
git rebase, cherry-pick을 잘 이해해보자  (0) 2019.06.11
git tag  (0) 2019.06.07
git diff troubleshooting  (0) 2019.06.07
반응형

현재 이런상태라고 할 때

  • A <-B(master)
  • A <-C(develop)

mater와 develop branch를 합치려면 merge 또는 rebase 할수 있음

merge를 한다는 것은 parent를 2개로 모시겠다는 것,

rebase는 특정한 branch를 base(parent의 의미로 봐도 무방할 듯, 혹은 공통조상)로 보고 그 이후 수정을 모두 복사해봐서 갖다붙여서 일렬로 만들겠다는 것

git checkout master, git rebase develp을 하면

  • A <- C(develop) <-B'(master) 가 된다.

git checkout develp, git rebase master를 하면

  • A <- B(master) <- C(develop)이 된다
git rebase [branch] 를 한다는 것은 [branch]까지는 base로 보존하고 그 이후에는 현재 checkout 되있는 애의 변경을 다 복사해서 갖다붙이겠다는 것

cherry-pick은 한개 commit만 rebase하는 것과 같은 효과를 낼수 있다. 다만 cherry-pick과 rebase는 수동태/능동태 처럼 주어/목적어가 반대로 사용된다. cherry-pick은 특정커밋을 가져오는 것이고 rebase는 특정 브랜치를 base로 만들어버리는 것

  • A <- C(develop) <-B'(master) 로 만드려면, 다음 2가지로 가능
    • git checkout develop, git cherry-pick (B No.)
    • git checkout master, git rebase develop
반응형

'git' 카테고리의 다른 글

git ignore  (0) 2019.09.03
git bash shorcuts: copy(ctrl+insert), paste(shift+insert)  (0) 2019.06.11
git tag  (0) 2019.06.07
git diff troubleshooting  (0) 2019.06.07
gerrit  (0) 2019.04.30
반응형
  • git log --pretty=format:"%h %s"
  • git log --oneline [직전 반영된 submission번호] ..[반영할 submission번호]  git log --oneline submissions/2..submissions/5
  • local에 tag 추가 (annotated tab)
    • git tag -a submissions/1 -m "submissions/1" → 현재 HEAD가 가리키는 커밋을 가리키는 태그가 생성, HEAD가 뭔지 봐야함
    • git tag -a versions/1.0.0 -m "versions/1.0.0"
    • lightweight tag를 붙이려면 -a -m option "message" 빼고 git tag myTag
    • 특정 commit에 붙이려면 뒤에 hashCode 붙임 git tag myTag 9fceb02
  •  remote에 tag push
    • git push --tag → remote에는 적용안됨, local에만 적용되는 듯 remote에 적용됨
    • git push origin v1.0.0 → remote에 특정태그 적용
    • git push origin --tags → remote에 모든태그 적용
  • tig 해보면 맨 위에가 submissions/1이라는게 로그에 붙어져있음...
  • tag 확인
    • git tag
    • git show-ref submissions/1
  • tag삭제
    • git tag -d v1.0.0 → local에서 v1.0.0 태그 삭제
    • git push origin :v1.0.0 → remote 서버에서 v1.0.0 태그 삭제
반응형

'git' 카테고리의 다른 글

git bash shorcuts: copy(ctrl+insert), paste(shift+insert)  (0) 2019.06.11
git rebase, cherry-pick을 잘 이해해보자  (0) 2019.06.11
git diff troubleshooting  (0) 2019.06.07
gerrit  (0) 2019.04.30
Git: ssh public key 등록  (0) 2019.04.26
반응형

git diff 제대로 안될 때

\r 때문이라면
\r=CR(Carriage Return) // Used as a new line character in Mac OS before X 캐럿이 그 줄 맨 앞으로
\n=LF(Line Feed) // Used as a new line character in Unix/Mac OS X 캐럿이 다음 줄로
\r\n=(End Of Line) CR + LF // Used as a new line character in Windows
해결방법
git config --global core.autocrlf true 로 설정변경

git config --global -l 로 확인함

https://www.lesstif.com/pages/viewpage.action?pageId=20776404 참조

 

아래와 같이 LF로 바꿔도 계속 다시 crlf로 자동변환하는데 이거 안하게 하는 방법은?

$ git stash
warning: LF will be replaced by CRLF in src/main/java/com/lge/cdp/model/Program.java.
The file will have its original line endings in your working directory.

 

반응형

'git' 카테고리의 다른 글

git rebase, cherry-pick을 잘 이해해보자  (0) 2019.06.11
git tag  (0) 2019.06.07
gerrit  (0) 2019.04.30
Git: ssh public key 등록  (0) 2019.04.26
git  (0) 2019.04.26
반응형
  • gerrit이란?
    • Google에서 만든 code review tool, 커밋단위로 리뷰를 진행하여 -2,-1,0,2,1점을 줄수 있으며, 2점을 받아야 main branch로 소스적용(submit)할 수 있음 
    • submit된 리뷰는 추가수정(patchset올리기)할 수 없음, commit message도 못고침, reviewer추가는 할 수 있음 
      • 추가 시도하면 다음 에러발생

  • code review를 올린다는 것은 다음과 같이 바로 push하지 않고 아래와 같이 push하는 것
    • git push origin HEAD:refs/for/[branch name] 공개리뷰
    • git push origin HEAD:refs/drafts/[branch name] 비공개리뷰
  • 위 push가 무슨 뜻인지 이해해보자
    • 원래 git push도 많은 것들이 생략되어 있음, 즉 원래는
      • git push [<repository>] [<refspec>...]
      • git push [remote repository, 생략하면 origin] [<local branch refs>:<remote branch refs>]
      • git push = git push origin master = git push origin refs/heads/master:refs/heads/master
      • 이말인즉슨, 내 master에서 remote의 master로 push하라는 것
    • 그렇다면 git push origin HEAD:refs/for/master (branch name) 얘는 이런의미!
      • 내 것중에 HEAD에서 refs/for/master라는 곳으로 push하라
      • HEAD는 내가 현재 branch에서 commit한 최신 위치를 가리킴, master일수도 있고 아닐수도 있고 remote랑 연결안된 애일수도 있고, 아무튼 현재 checkout되어 있는 브랜치에서 작업한 사항을 말하는 것
      • refs/for/master는 master로 적용되기 위한 code review(그냥 임시 브랜치라고 볼수 있을 것 같음)를 위한 공간, +2점을 받으면 master branch로 merge (이것을 submit이라 표현)될수 있음

  • code review는 patchSet이라고도 하며 리뷰받은 것들을 계속 수정해가며 추가할 수 있는데, 그러기 위해서 커밋메세지 내 change-id라는 것을 통해 동일 code review patch라는 것을 연결할 수 있음
    • 커밋메세지 연결을 위해서 아래 작업 필요
      • scp -p -P 29448 sy919.kim@wall.lge.com:hook/commit-msg ./git/hooks/ (를 commit전에 입력해야 한다고 하는데 hook..가 없다며 에러남)
      • commit message 마지막에 Change-Id: Ib99b87b88cead9f5afe4beaee624c1935f4f33b0 이걸 항상 연결시켜줘야 함 - git/hooks/commit-msg가 저절로 해줌
      • Change-Id: review에 대한 revision (uniqueID)

  • git push origin master → code review, merge없이 바로 push, 하면 안됨
    • 뭔가 원복하기 위해서 이거저거 해봤으나 안됨: git push HEAD:refs/for/master를 다시 실행하면 다음 메세지뜸
      warning: push.default를 설정하지 않았습니다. 묵시적 값은 깃 2.0에서
      'matching'에서 'simple'로 바뀌었습니다. 이 메시지를 표시하지
      않고 과거의 동작을 유지하려면 다음과 같이 하십시오:이 메시지를 표시하지 않고 새 동작을 받아들이려면 다음과 같이
      하십시오:push.default가 'matching'으로 설정되면, 로컬 브랜치를 이미 같은 이름이
      있는 리모트 브랜치로 푸시합니다.더 자세한 정보는 'git help config'에서 'push.default' 설명을 보십시오.
      ('simple' 모드는 깃 1.7.11에 추가되었습니다. 과거 버전의 깃을 사용하게
      되면 비슷한 'current' 모드를 사용하십시오.)
    • 깃 2.0부터 더 보수적인 'simple' 동작이 기본값입니다. 여기서는 현재
      브랜치를 'git pull'에서 현재 브랜치를 업데이트할 때 사용하는 해당
      리모트 브랜치로 푸시합니다.
    • git config --global push.default simple
    • git config --global push.default matching
  • git push origin HEAD:/for/refs/master 로 잘못 쓰면 remote에 for/refs/master라는 branch가 자동생성되고 글로 push되며, 원래 하려고 했던 master로 push로 다시 push하면 new change가 아니라서 push할 수 없다고 함
    • checkout 해서 일단 local에 for/refs/master를 받고  git branch --delete 으로 branch 삭제 (다른 곳으로 가야 삭제가능)후 push 하여 remote branch까지 삭제해줌, 그후 다시 push 하면 동작함

[CCC: build repository 변경]


차이는?

반응형

'git' 카테고리의 다른 글

git rebase, cherry-pick을 잘 이해해보자  (0) 2019.06.11
git tag  (0) 2019.06.07
git diff troubleshooting  (0) 2019.06.07
Git: ssh public key 등록  (0) 2019.04.26
git  (0) 2019.04.26
반응형

git clone 시에 아래와 같이 인증에러가 난다면 ssh public key를 등록하자!

D:\IoT>git clone http://mod.lge.com/prosys/iot-dev/iot-service
Cloning into 'iot-service'...
remote: Unauthorized
fatal: Authentication failed for 'http://mod.lge.com/prosys/iot-dev/iot-service/'

Linux) 먼저 ~/.ssh로 가서 public key가 이미 생성되어 있는지 확인

Windows)의 경우 c:/Users/user/.ssh 위치에서 확인가능

$ ls ~/.ssh
id_rsa  id_rsa.pub  known_hosts ==> 이렇게 나오면, pub키가 생성되어 있는 상태임
$ cd ~/.ssh
$ cat id_rsa.pub          ==> key file 내용 확인 후 클립보드에 저장 ( 아래에서 public key등록 시 사용 )

생성안되었으면 ssh-keygen으로 생성한다!

Windows도 git bash 실행후 console에서 동일하게 ssh-keygen 입력하면 됨, ssh-keygen 입력후 키의 이름을 무엇으로 할 것인지 등 질문을 받는데 그냥 enter키만 반복입력하면 됨 (key 이름 지정하여 생성후 키등록하니까 인증실패로 소스를 못받아옴)

$ ssh-keygen              ==> [중요!!] enter키만 입력하여 키 생성을 완료해주세요. password를 입력하지 말것
$ cat id_rsa.pub          ==> key file 내용 확인 후 클립보드에 저장 ( 아래에서 public key등록 시 사용 )

수정후 자신의 .ssh 폴더 내용

/[자신의 계정]/.ssh/
|-authorized_keys       --> 개인 설정에 따라 없어도 무방
|-config            --> 새로 생성된 파일
|-id_rsa            --> id_dsa로 되어 있어도 무방
|-id_rsa.pub        --> id_dsa.pub로 되어 있어도 무방
`-known_hosts       --> 개인 설정에 따라 없어도 무방

그리고나서 git에 자기 public key를 등록해야함

gerrit login > settings 클릭 >  SSH Public Keys클릭 > Add Key > 클립 보드에 복사한 id_rsa.pub의 내용을 등록

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8G9BUES20uv0aioy333VD+yIQVkNlg/56kdDC/NOcvfzdEx87y6aiUKs26uWnwa8uazwxG/slzjq3iCXqyQ0M7r4xpezzCbxWHroHmvLpmOrtLVkQI0bXyKsRCFE+ZoawQ24CbD0TUJey8l/8KgdpekWIF61BTdYpBmsREJR5VdWwvwKlQ+xhTguf2hxq4yukbxEM831wP/r6c6Y4kuhdrX0GwPqC+HtIHeXgV4Wp6C6ib6uNGl6Q139VSU14QC5bignjl6DYEp7ckG33uzJEgAZQLnD84/ZRF3UVUETqFfrn0dS0MlO/ahxIhkL4zLFh3sBiGoAJoloQg4JKaKt5 ibs@ibs-sykim

위와 같이 생겼을텐데 위 내용 전부 복붙해야함, ssh-rsa 시작하는 이거부터 다~ 

반응형

'git' 카테고리의 다른 글

git rebase, cherry-pick을 잘 이해해보자  (0) 2019.06.11
git tag  (0) 2019.06.07
git diff troubleshooting  (0) 2019.06.07
gerrit  (0) 2019.04.30
git  (0) 2019.04.26
반응형
  • git branch 개념
    • branch: 어떤 한commit을 가리키는 40글자의 SHA-1 체크섬 파일, 결국 branch도 어떤 특정한 commit임
    • master: 기본 branch
    • origin: 기본 remote, remote repository를 여러개 사용할 수 있고 각각의 이름을 지정해서 쓸수도 있으나 사실 이렇게 여러개 remote사용하는 경우가 별로 없음, 그래서 그냥 remote = origin이라고 쉽게 생각하면 됨, origin하면 내 local의 것이 아니라 remote 외부서버 것이라는 의미로 볼 수 있음
  • .git
    • .git/HEAD: 현재 branch
    • .git/refs/heads/*: 로컬 저장소의 branches
    • .git/refs/remotes/*: 원격 저장소의 branches
    • .git/refs/tags/*: 태그, 로컬? 원격?
  • 참고정보

commit 관련

git add <file1> <file2>
git add .
git reset HEAD <file>
git reset HEAD
git checkout -- <file>
git checkout -f <other branch>
아마 git checkout -f <other branch>로 가능할듯git clean -f
로컬저장소의 index(staging area)에 파일 2개 추가
변경된 모든 파일 추가
특정파일 add 취소 (staging area에서 내쫓기)
전체파일 add 취소 (add 취소해도 modified 상태로 남기 때문에 수정한게 없어지지 않음)
add하기 전에 수정한 것 자체를 삭제 (완전히 없어짐)
한꺼번에 모든수정자체를 없앰 (강제로 다른곳으로 가면됨)
기존파일은 이렇게 없어지는데 새로 추가한 파일, 즉 untracked까지 몽땅 없애는 방법은?
git commit <file>
git commit
git commit -a  
git commit -a -m "log" 
git commit --amend

로컬저장소의 head에 변경내용 확정
add된 전체사항 commit
add와 commit을 한꺼번에
add와 commit을 한꺼번에 하는데 commit message "log"로 지정
이전 commit에 묻어가기, commit message만 변경할때에도 사용

git reset HEAD^
(=git reset --mixed HEAD^)
 
git reset HEAD~2
git reset --soft HEAD^
git reset --mixed HEAD^
git reset --hard HEAD^
commit취소 (=Local Repository의 최신 commit 리비전을 바로전 리비전(HEAD^)로 설정) 그럼 이미 커밋한 revision번호는 어디로?
c90f6405920652b379bbfcb8a925940f2c73743f [TVOQAISSUE-8953] delete FB.init 취소했음 이 revision은 어디로?
삭제 후 바로 git show 하니까 정보는 다 나옴


commit 2개 취소
index 보존(add한 상태, staged 상태, 변경사항 당근 보존)
index 취소(add하기 전 상태, unstaged 상태, 변경사항 보존) (기본 옵션)
index 취소(add하기 전 상태, unstaged 상태, 변경사항 삭제) 워킹 디렉터리의 파일 삭제. 즉 모두 취소


 
(1)
git reset HEAD^


git reflog 또는 git log -g
git reset HEAD@{#} 또는 git reset [commit id]
(2) git commit -m "message"
(3) git push origin <branch name> -f 또는 git push origin +<branch name>
git push 취소방법 https://gmlwjd9405.github.io/2018/05/25/git-add-cancle.html
(1) commit 을 되돌림
commit 1개 취소된 상태로
Reflog(branch와 HEAD가 지난 몇달 동안에 가리켰던 commit) 확인
특정 commit 상태로


(2) 되돌려진 상태에서 다시 commit
(3) 원격저장소에 강제 push
  • git log --oneline -10
  • git log --oneline submissions/1
  • git log -5 --decorate --graph –oneline
  • git log -5 --author=dhrim –oneline
  • git log --before={3.weeks.ago} --after={2010-04-18}
  • git log --grep=“some message”
  • git log --pretty=format:"%h,%ar,%an : %s" 
  • git log --pretty=format:"%h,%ar,%an : %s" --graph
  • 1줄씩 최근 10개 commit보여줌
  • 최근 5개의 리비전을 그래프로 보여준다
  • 저자가 dhrim인 리비전을 5개 보여준다
  • 주어진 기간내의 리비전만 보여준다
  • commit 메시지에 “some message”가 포함된 것만 보여준다
  • commit 정보를 한줄 단위로 보여주되. format 에 맞게 보여줌 
  • Git GUI 툴처럼 graph로 보여줌
    • %h : commit 번호(간략) 
    • %ar : 시간 (housrs ago, days ago) 
    • %an : commit한 사람 
    • %s : commit 로그

git init: 새로운 저장소 만들기

git clone: 이미 만들어진 저장소 받아오기 (=svn checkin?)

git diff (=git diff HEAD)

git diff HEAD^

git diff 브랜치명 브랜치명: 2 브랜치간 차이

git diff 브랜치명 revision: 브랜치와 revision간 차이

git help stash (=man git-stash) stash 도움말보기

git mv: 파일명 변경

git rm: 파일삭제

branch 관련 명령

git branch
git branch -r
git branch -a
git branch -vv
local에 있는 전체 branch list랑 현재 작업중인 branch가 뭔지를 알려줌
remote에 있는 전체 branch list
remote, local에 있는 모든 branch list와 현재 작업중인 branch가 뭔지를 알려줌
현재 local branch와 remote branch가 어떤 상태에 있는지 (더 앞서있는지, 뒤에있는지 등) 알려줌
git checkout -b [branch name]
git checkout -b [branch name] revision번호
git checkout -b [생성할 local branch name] [remote branch name]
git checkout [remote branch name]
git checkout -t [remote branch name]
git push origin [생성한 branch name]
git push --set-upstream origin frontend
새로운 브랜치 생성하고 그곳으로 감
새로운 브랜치 생성하고 그곳에 특정revision(다른 branch에서 생성한 revision)을 내려받고 그곳으로 감
 
remote에 있는 특정 branch 내려받는데 local에서 이름을 바꿔서 받기
-b가 어떤 약자인지 확인해 봤으나 ( https://git-scm.com/docs/git-checkout ) branch란 의미외에 다른 약어는 없는듯



remote에 있는 특정 branch 임시로 내려받기, 소스 수정가능하나 comit/push는 안되며 타 branch로 checkout 하면 소스사라짐
remote에 있는 특정 branch 내려받기
생성한 branch를 remote로 push
To push the current branch and set the remote as upstream
git branch --set-upstream-to=origin/<branch> dev.sy branch 생성하고 push해도 remote와 local이 연결되지 않을 수 있는데 (There is no tracking information for the current branch) 그럴 때 If you wish to set tracking information for this branch you can do so with:
tracking(연결)하지 않고 다른 branch 내용 받아오고 싶을 때 (tracking안되면 'git pull' 뒤에 branch 명시해야함) Please specify which branch you want to merge with. See git-pull(1) for details.
git branch --delete [branch name]
git branch -D [branch name]
git push origin :[branch name]
local branch 삭제 (삭제할 branch로 checkout된 상태이면 안됨)
local branch 강제삭제(작업내역이나 commit이력이 있을 때 삭제안될때 있음)(삭제할 branch로 checkout된 상태이면 안됨)
삭제한 branch를 push, 즉 remote branch 삭제, origin(한칸안띄우면 안됨):[branch name]
git push origin --delete [branch] checkout 필요없이 그냥 한방에 remote branch삭제
git merge 브랜치명 현재 내가 있는 브랜치에서 브랜치명의 브랜치 내용을 가져와서 merge (checkout해서 간 다음 끌어당겨온다고 생각)
git remote
git remote -v
git remote add <remote> <url>
git fetch <remote>
git push <remote> <branch>
git remote show origin
현재 프로젝트에 등록된 리모트 저장소 확인, 저장소를 Clone 하면 `origin`이라는 리모트 저장소가 자동으로 등록
리모트 저장소, URL 확인
기존 워킹 디렉토리에 새 리모트 저장소 추가
리모트 저장소에서 데이터 가져오기
리모트 저장소로 push
리모트 저장소의 구체적인 정보 확인

 

git checkout <remote에 없는 branch name> 하면 local에 새 branch만들어지고 그전에 있던 branch내용을 그대로 가져와서 만들어짐, 그전에 commit한 이력도 그대로 다 가져오는 듯

git stash 

  • $ git diff  (1)
  • # Changed …. : ….
  • $ git stash  (2)
  • $ git diff  (3)
  • $ git pull  (4)
  • $ git stash pop  (5)
  • $ git commit –a –m “my modification”  (6)
  • (1) 변경된 사항이 있다.
  • ......
  • (2) 변경된 사항을 Stash에 보관해 두고, 현재의 상태를 Local Repository의 최근 commimt 상태로 변경한다.
  • (3) 변경된 사항이 없음을 확인
  • (4) Remote Repository에서 최신 것을 가져온다.
  • (5) Stash에 보관된 변경사항을 적용하여 머징한다.
  • (6) 변경된 사항을 Local Repository에 commit 한다.
  • $ git stash list  (1)
  • stash@{0}: WIP on master: …
  • stash@{1}: WIP on master: …
  • $ git stash show -p  (2)
  • $ git stash show –p stash@{1}    (3)
  • $ git stash apply  (4)
  • $ git stash clear  (5)
  • (1)Stash에 저장된 것을 조회한다. 현재 2개가 있다.
  • ...
  • ...
  • (2)최신의 것과 비교한다. –p 옵션을 주면 내용까지 확인 한다.
  • ...
  • (3) 이름 ‘stash@{1}’로 저장된 것과 비교한다.
  • ...
  • (4) 최신의 것으로 merging한다. ‘stash pop’을 사용할 경우 merging하고 삭제한다.
  • (5) Stash에 저장된 것을 전부 삭제한다.

.svn은 자기 변경본만 가지고 있지만 .git은 모든 서버정보 다 가짐

반응형

'git' 카테고리의 다른 글

git rebase, cherry-pick을 잘 이해해보자  (0) 2019.06.11
git tag  (0) 2019.06.07
git diff troubleshooting  (0) 2019.06.07
gerrit  (0) 2019.04.30
Git: ssh public key 등록  (0) 2019.04.26

+ Recent posts