깃에 대해서 어떤것부터 설명해야 될지 모르겠고, 일단 설치하고 닥치는대로 해보는 수밖에 없다.
# 동기화
git fetch origin
# 특정태그
git tag 1.300.0 fetch_head
# 원격과 동일하게 이름따서 release 가져오기
git checkout -t origin/release
# 원격 master 이름따면서 내려받기
git checkout -b master-2 origin/master
git clean -fdx
git rebase -i HEAD~3
squash
remote → fort sync
git remote add upstream {url}
remote git source down : git fetch upstream master
current git location(local) : git rebase upstream/master
local→fork : git push origin master
git log —pretty=format:"%h %s" head~3..head
git checkout {/src/file}
git branch -d {branchname}
git branch -D {branchName}
git branch -m old new
git rm --cached package-lock.json -r
fetch : 수동 merge
pull : 자동 merge
git fetch
git merge origin/master
git log --decorate --all --oneline
git cherry-pick b8ffcad(가져 가고 싶은 커밋넘버)
git checkout feature/add-title
git reset feature/add-title-correct — hard
git diff master
명령어 입력시 아래와 같이 오류가 난다면 아래는 임시 방편이다.
기존명령: HaHwul #> git push -u origin master
강제명령: HaHwul #> git push -u origin +master
To https://github.com/hahwul/a2sv.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/hahwul/a2sv.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
해당 커밋내용만 롤백
git revert {commit}
모두 롤백: commit 만 돌리고 싶을때
https://ahracho.github.io/posts/trials_and_errors/2018-08-29-git-revert-revert/
git reset —hard {commit} : 이력을 모두 날린다. 돌아 갈 수 없다.
git reset —soft {commit} : 이력은 남긴다. 돌아갈 수 있다.
git reset —mixed {commit} : 이력은 남긴다. 인덱스가 초기화 된다. 돌아갈 수 있다.
git reflog
# git reset --soft <돌아가고 싶은 commit id>
git add는 되어 있는 상태로 돌아간다.
# git reset --mixed <돌아가고 싶은 commit id>
git add 이전으로 돌아간다.
tag
git tag
git tag -a v1.0.0 -m"Release version 1.0.0"
git show v1.0.0
github에서 포크시 최신소스 유지 방법
git remote add upstream ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
git fetch upstream
git merge upstream/master
git remote remove upstream
# 소스내려받기
git fetch upstream
git commit —amend -m "12123" // 마지막 커밋 내용 수정
https://github.com/ohmyzsh/ohmyzsh
zsh 셀로 편하게....
--no-ff
중요하고 생각한다.
// feature 브랜치(feature/login)를 'develop' 브랜치('master' 브랜치에서 따는 것이 아니다!)에서 분기
$ git checkout -b feature/login develop
/* ~ 새로운 기능에 대한 작업 수행 ~ */
/* feature 브랜치에서 모든 작업이 끝나면 */
// 'develop' 브랜치로 이동한다.
$ git checkout develop
// 'develop' 브랜치에 feature/login 브랜치 내용을 병합(merge)한다.
# --no-ff 옵션: 아래에 추가 설명
$ git merge --no-ff feature/login
// -d 옵션: feature/login에 해당하는 브랜치를 삭제한다.
$ git branch -d feature/login
// 'develop' 브랜치를 원격 중앙 저장소에 올린다.
$ git push origin develop
master: 제품
release: 제품 출시를 준비하는 브랜치
// release 브랜치(release-1.2)를 'develop' 브랜치('master' 브랜치에서 따는 것이 아니다!)에서 분기
$ git checkout -b release-1.2 develop
/* ~ 배포 사이클이 시작 ~ */
/* release 브랜치에서 배포 가능한 상태가 되면 */
// 'master' 브랜치로 이동한다.
$ git checkout master
// 'master' 브랜치에 release-1.2 브랜치 내용을 병합(merge)한다.
# --no-ff 옵션: 위의 추가 설명 참고
$ git merge --no-ff release-1.2
// 병합한 커밋에 Release 버전 태그를 부여한다.
$ git tag -a 1.2
/* 'release' 브랜치의 변경 사항을 'develop' 브랜치에도 적용 */
// 'develop' 브랜치로 이동한다.
$ git checkout develop
// 'develop' 브랜치에 release-1.2 브랜치 내용을 병합(merge)한다.
$ git merge --no-ff release-1.2
// -d 옵션: release-1.2에 해당하는 브랜치를 삭제한다.
$ git branch -d release-1.2
https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html
배포한 버전에 긴급하게 수정을 해야 할 필요가 있을 경우, ‘master’ 브랜치에서 분기하는 브랜치이다.
https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html
// release 브랜치(hotfix-1.2.1)를 'master' 브랜치(유일!)에서 분기
$ git checkout -b hotfix-1.2.1 master
/* ~ 문제가 되는 부분만을 빠르게 수정 ~ */
/* 필요한 부분을 수정한 후 */
// 'master' 브랜치로 이동한다.
$ git checkout master
// 'master' 브랜치에 hotfix-1.2.1 브랜치 내용을 병합(merge)한다.
$ git merge --no-ff hotfix-1.2.1
// 병합한 커밋에 새로운 버전 이름으로 태그를 부여한다.
$ git tag -a 1.2.1
/* 'hotfix' 브랜치의 변경 사항을 'develop' 브랜치에도 적용 */
// 'develop' 브랜치로 이동한다.
$ git checkout develop
// 'develop' 브랜치에 hotfix-1.2.1 브랜치 내용을 병합(merge)한다.
$ git merge --no-ff hotfix-1.2.1
https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html
https://medium.com/@hohpark/vs-code를-git-diff-tool로-설정하기-88baa1d9f2b3
code diff
git rebase --interactive
pick -> edit
# 원하는 내용 수정
git add .
git git commit --amed
:q!
git rebase --continue
git push --force
# 조금 안전 하게
git push --force-with-lease