{"id":27250641,"url":"https://github.com/jbee37142/minimal_git_command","last_synced_at":"2025-04-11T00:45:01.102Z","repository":{"id":97828647,"uuid":"95211050","full_name":"jbee37142/Minimal_Git_command","owner":"jbee37142","description":"🌈 This is a repository that summarizes the Git commands and tips that you should at least know about development.","archived":false,"fork":false,"pushed_at":"2018-11-30T07:15:10.000Z","size":8,"stargazers_count":104,"open_issues_count":0,"forks_count":39,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-11T00:44:55.830Z","etag":null,"topics":["basic","commandline","git"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jbee37142.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-06-23T10:38:57.000Z","updated_at":"2025-03-12T02:30:03.000Z","dependencies_parsed_at":"2024-02-11T09:44:06.216Z","dependency_job_id":null,"html_url":"https://github.com/jbee37142/Minimal_Git_command","commit_stats":null,"previous_names":["jbee37142/minimal_git_command"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbee37142%2FMinimal_Git_command","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbee37142%2FMinimal_Git_command/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbee37142%2FMinimal_Git_command/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbee37142%2FMinimal_Git_command/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbee37142","download_url":"https://codeload.github.com/jbee37142/Minimal_Git_command/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248322604,"owners_count":21084336,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["basic","commandline","git"],"created_at":"2025-04-11T00:45:00.442Z","updated_at":"2025-04-11T00:45:01.089Z","avatar_url":"https://github.com/jbee37142.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Minimal_Git_command\n\nGit 을 사용하면서 자주 사용하는 명령어들에 대해 정리한 repository 입니다.\n\n\u003c/br\u003e\n\n## Basic\n\n#### add\n\n```\ngit add [file name]\n```\n\n#### 변경 사항이 있는 모든 파일 add\n\n```\ngit add .\n```\n\n#### commit message 와 commit\n\n```\ngit commit -m \"[commit message]\"\n```\n\n#### 변경 사항이 있는 모든 파일 add 와 동시에 commit\n\n```\ngit commit -am \"[commit message]\"\n```\n\n#### remote repository 등록하기\n\n```\ngit remote add [remote github repository address]\n```\n\n#### 특정 branch 생성하며 remote 에 push 하기\n\n```\ngit push origin [branch name]\n```\n\n#### branch 간 이동하기\n\n```\ngit checkout [branch name]\n```\n\n#### branch 생성하기\n\n```\ngit checkout -b [branch name]\n```\n\n#### branch 이름 바꾸기\n\n```\ngit branch -M [changed name]\n```\n\n#### 이전 commit 과 비교하여 파일 변경 사항 확인하기\n\n```\ngit diff\n```\n\n#### commit log 보기\n\n```\ngit log\n```\n\n#### git log graph 로 출력하기\n\n```\ngit log --graph\n```\n\n---\n\n\u003c/br\u003e\n\n## Useful command\n\n#### 변경 사항이 있는 파일 변경 사항 취소하기\n\n```\ngit checkout -- [file name]\n```\n\n#### commit 한 개 취소하기\n\n```\ngit reset HEAD^\n```\n\nor\n\n```\ngit revert HEAD\n```\n\n#### 바로 이전 commit message 수정하기\n\n```\ngit commit --amend\n```\n\n#### local git repository 에 remote repository 을 upstream 으로 등록하기\n\n```\ngit remote add --track master upstream [remote github repository address]\n```\n\n#### master branch 를 uptream 의 latest version 으로 update 시키기\n\n```\ngit pull --ff upstream master\n```\n\n#### 여러 commit 을 하나로 합치기(squash)\n\n```\ngit rebase -i HEAD~[commit 개수]\n```\n\n`.gitconfig`에서 설정해둔 editor 창이 나타난다. 기준이 될 맨 위의 한 commit 만 `pick`으로 두고 나머지는 `squash`라는 명령어로 바꿔준다. `:wq` 명령어를 통해 저장하고 종료한다. 그러면 또 다른 editor 창이 나타나는데, commit message 를 설정하는 editor 이다. 원하는 commit message 를 입력하고 `:wq` 명령어를 통해 저장하고 종료해주면 squash 가 된다.\n\n#### git history 출력하기\n\n```\ngit reflog\n```\n\n#### 바로 이전 commit 에 새로운 파일 변경 사항을 추가하기\n\n```\ngit commit -C HEAD --amend\n```\n\n_cf\u003e 만약 push 를 한 상태라면 `-f`옵션을 통해서 push 를 해줘야 한다. commit 을 새로 생성하지 않고 변경사항을 추가하는 것처럼 보이지만 내부적으로는 새로운 커밋이 생기는 것이기 때문에 push 된 commit 과 다른 commit 이다._\n\n#### 파일의 변경 이력을 무시해서 stage 에서 임시로 제외하기\n\n```\ngit update-index --assume-unchanged [파일명]\n```\n\n#### 파일의 변경 이력을 무시해서 stage 에서 임시로 제외한 상황을 되돌리기\n\n```\ngit update-index --no-assume-unchanged [파일명]\n```\n\n#### 현재 branch 에서 변경 사항 커밋없이 저장해두기\n\n```\ngit stash\n```\n\n#### 저장해두었던 변경 내역 불러오기\n\n```\ngit stash pop\n```\n\n#### 다른 branch 의 특정 commit 가져와서 merge 하기\n\n```\ngit cherry-pick [COMMIT_HASH_NUMBER]\n```\n\n#### upstream 제거하기\n\n```\ngit branch --unset-upstream\n```\n\n\u003c/br\u003e\n\n---\n\n\u003c/br\u003e\n\n## 상황에 따른 git command 집합\n\n### 상황 1. conflict 가 발생하는 상황\n\n여러 가지 방법이 있지만 그 중 두 가지.\n\n```\ngit merge upstream/master\n(resolve conflict in editor)\ngit add src\ngit commit\ngit rebase upstream/master\n(resolve conflict in editor again)\ngit add src\ngit rebase --continue\ngit push -f upstream YOUR_BRANCH_NAME\n```\n\nor\n\n```\ngit fetch upstream\ngit rebase upstream/master\n(resolve conflict)\ngit add .\ngit rebase --continue\ngit push -f origin [YOUR_WORKING_BRANCH_NAME]\n```\n\n\u003c/br\u003e\n\n### 상황 2. 과거 commit 에 fix 한 commit 이 존재하여 이 commit 순서를 정렬하고 싶은 상황\n\n어떤 commit 이 이미 올라갔는데 그 commit 에 해당하는 수정 사항이 발생하면 그에 해당하는 fix commit 을 추가할 경우가 있다. 이 때, commit 의 순서가 난잡해지는데 이 경우,`fixup`과 `autosquash` command 를 사용한다.\n\n```\ngit commit --fixup [HASH]\n```\n\n이렇게 해서 해당 fix commit 을 추가해놓은 다음에\n\n```\ngit rebase -i --autosquash [HASH]\n```\n\n위 명령어를 통해서 squash 해주면 커밋 순서도 정렬되면서 하나의 commit 으로 squash 된다. 위 명령어에서 `HASH`란 어느 커밋부터 squash 를 할 것인가를 의미한다.\n\n_cf\u003e fixup 과 squash 그리고 squeeze 의 차이점_  \n`squash`는 새로운 인터페이스가 열리면서 commit message 도 수정(포함 또는 배제)할 수 있다. `fixup`은 commit message 를 `pick`한 commit 에 대해서만 적용한다. `squeeze`는 squash 하고자 하는 모든 commit message 를 포함하면서 squash 한다.\n\n---\n\n\u003c/br\u003e\n\n## 알아두면 쓸모있는 Git Tip\n\n### Git command alias\n\n`Git`을 설치한 디렉토리에는 `.gitconfig` 파일이 존재한다. 이 파일에서 자주 사용하는 명령어에 대해서 alias 를 지정해줄 수 있다.\n\n```.gitconfig\n[alias]\n    g = git\n    st = status\n    co = checkout\n    ad = add\n    cm = commit -m\n    acm = commit -am\n    ph = push\n    rb = rebase -i\n    fh = fetch\n    df = diff\n    br = branch -a\n    lg = log --graph --abbrev-commit --decorate --format=format:'%C(cyan)%h%C(reset) - %C(green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(yellow)%d%    C(reset)' --all\n    re = reset HEAD\\\\^\n    fu = fetch upstream\n    rum = rebase upstream/master\n    pom = push origin master\n    list = config --get-regexp alias\n    readme = !git add . \u0026\u0026 git commit -m \"Update README.md\" \u0026\u0026 git push origin master\n    docs = !git add . \u0026\u0026 git commit -m \"Update\" \u0026\u0026 git push origin master\n    update = !git fetch upstream \u0026\u0026 git rebase upstream/master \u0026\u0026 git push origin master\n```\n\n\u003c/br\u003e\n\n### Commit Log format\n\n- 제목과 본문을 빈 행으로 분리한다\n- 제목 행을 50 자로 제한한다\n- 제목 행 첫 글자는 대문자로 쓴다\n- 제목 행 끝에 마침표를 넣지 않는다\n- 제목 행에 명령문을 사용한다\n- 본문을 72 자 단위로 개행한다\n- 어떻게 보다는 무엇과 왜를 설명한다\n\n* 제목\n  - 대문자, 동사로 시작. 앞에 'If applied, this commit will '가 생략된 것으로 간주\n  - 가급적 50 자 안쪽\n  - 마침표 생략\n* 본문\n  - 3 번째 줄부터 시작 (두번째 줄은 비움)\n  - 최대줄 너비는 80 자. 이상은 줄바꿈\n\n### 추천 동사(personal)\n\n- `Add` : 새로운 기능 또는 api 추가\n  - 예) Add API creating PDF\n- `Remove` : 제거\n  - 예) Remove unused local variables\n- `Enhance` : 기능 또는 성능의 향상\n  - 예) Enhance performance in select queries\n- `Fix` : 버그, 오타, 스타일의 수정\n  - 예) Fix typos in Javadoc\n  - 예) Fix styles for standards of Naver Corp\n- `Upgrade` : 라이브러리 버전 업그레이드\n  - 예) Uprade commons-dbcp to 2.3.1\n- `Document` : 문서화\n- `Refactor` : 리팩토링\n- `Update` : 다른 주변 상황에 맞추어서 갱신\n  - 예) Update README.md for 1.0 release\n- `Polish` : 잡다한 수정 묶음 (다른 적절한 문구가 없을 경우 사용)\n\n#### Reference\u003e\n\n- [How to Write a Git Commit Message](https://item4.github.io/2016-11-01/How-to-Write-a-Git-Commit-Message)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbee37142%2Fminimal_git_command","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbee37142%2Fminimal_git_command","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbee37142%2Fminimal_git_command/lists"}