[컴] 알아두면 편리한 git command

git 에 연결 / 원격 repository 에 연결하는 방법 / command line 연결 / git 사용법 /git 연결 / git init / git command / git commands git cherry-pick / git cherry /git cherrypick

알아두면 편리한 git commands

git clone

git clone https://<git_url>

특정 commit id 에 대한 clone 을 하려 할 때:

git clone https://<git_url>
git checkout <commit_id>

git add <file_path>

# `-p` 를 하면 interactive 하게 확인하고 stage 로 올리게 된다.
git add -p 
// 현재 directory 의 변경 사항을 staged changes 로 놓음
git add .
// 개별 file 을 staged changes 로 변경
git add <file_path>

// 모든 `git-` 으로 시작하는 txt file 들을 add 한다.
git add git-*.txt

// staged files list
`git status` --> 'Changes to be committed' 부분 확인

또는 

git diff --name-only --cached

git commit –amend

// 메시지 변경
git commit --amend -m "an updated commit message"

// stage file 들을 마지막 commit 에 추가
git commit --amend --no-edit

undo

--soft 는 undone 한 revision 의 변경사항들을 보관해준다. 즉, commit 됐던 내용들을 staged 로 돌려준다. 이 상황에서 staged 에 있는 변경사항을 없애려면, git reset --hard 를 하면 된다.

--hard 는 그냥 commit 된 것들을 삭제한다.

git reset // 현재 staged 로 된 것들을 unstaged 해준다.
git reset --soft HEAD~<n>
git reset --hard    // 현재 local change 들을 날려준다.

git reset --hard HEAD~1
git reset --hard <commit-id>


git revert <commit-id>  // commit-id 로 되돌아 간다. push 가 된 commit 을 돌릴 때 사용할 수 있다.

push, pull

origin 의 변경사항을 반영(push) 하고 가져온다.(pull)

git push
git pull

local branch 를 origin 에 반영하기

git branch feature/my-branch
git checkout feature/my-branch
git push -u origin feature/my-branch

-u 대신에 --set-upstream 을 사용해도 된다.

git push --set-upstream origin feature/my-branch

local 의 commit 중 push 되지 않은 commit 을 찾는법

git log --branches --not --remotes

새로운 branch 를 생성하고, checkout 하기

git branch <new_banch_name>
git checkout <new_banch_name>

branch 삭제

git branch -d <local_branch_name>
git push origin --delete <remote_branch_name>

merge

master 로 가서 feature/mynewfeature 의 내용을 master 로 merge 한다.

git checkout master
git merge feature/mynewfeature

하나의 commit 으로 merge 하려면 --squash 를 사용한다.

git merge --squash feature/mynewfeature

merge 를 하고는 싶은데, 일부를 걸러내고 싶다면, 일단 --no-commit 으로 merge 를 하고, 필요없는 것들을 제외하자.

git checkout master
git merge feature/mynewfeature --no-commit

tags list {#tags list}

# tag 들을 가져온다.
git fetch --all --tags --prune
# tag list
git tag

특정 commit id 에 tag 를 달때

git tag -a v1.2.1 3c4c87462eff680f17d3688ebe82634c26fcf24c -m "materails.stock update"

tag 를 origin 에 push commit

git push origin <tag_name>
git push --tags

이글git push --tags 를 추천하지 않는다.

특정 commit 만 push 하기

git push <remote name> <commit hash>:<remote branch name>

git push origin 068bbb5e8335d2349b6bbbe422368778e7392098:master

특정 commit 만 merge 하기

master 에 다른 branch 에 있는 commit 을 merge 하려고 할 때

git checkout master
git cherry-pick ecb81a4f15d38c2a394a33207e29ccf95bf4bb24

현재 변경사항을 처박아두기

현재 stage/commit 되지 않은 변경사항을 일단 숨겨놓는다. 그리고 commit 이나 pull 등의 작업을 마치고 나서 stash pop 등을 통해서 다시 불러올 수 있다.

git stash
git stash pop

현재 branch 의 base 를 변경하기

master 에서 branch A를 만든 후에, master 가 변경될 수 있다. 그러면 새로운 branch A 의 base 는 master 에서 왔지만 다를 수 있다. 이 경우에 다시 base 를 master 의 현재 상황으로 update 하는 것이라 보면 된다.

git rebase master

현재 branch 의 이름 변경

변경하길 원하는 branch 로 변경하고, 거기서 git branch -m 으로 변경하면 된다.

git checkout <branch>
git branch -m <new_branch_name>

See Also

  1. local 에서 git init 후 remote git repository 연결
  2. git flow 자료들
  3. GitLab Flow
  4. git rebase 설명

댓글 없음:

댓글 쓰기