일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 오픈소스
- Source
- Tomcat
- Docker
- STS
- Open Source
- git
- ubuntu
- spring
- MySQL
- Eclipse
- 설정
- Core Java
- Spring Boot
- Thymeleaf
- maven
- jpa
- JDBC
- PostgreSQL
- myBatis
- error
- 문서
- Python
- MSSQL
- AJAX
- SpringBoot
- IntelliJ
- Exception
- JavaScript
- oracle
- Today
- Total
헤르메스 LIFE
[GIT] The most useful git commands 본문
출처 : orga.cat/most-useful-git-commands
Here there are some examples of git commands that I use often.
Not all commands written here are git commands, but all of them are related to git. Please refer to the documentation for more details.
Set your details
git config --global user.name "John Doe" git config --global user.email "john@example.com"
Use --global to set the configuration for all projects. If git config is used without --global and run inside a project directory, the settings are set for the specific project.
Make git ignore file modes
cd project/ git config core.filemode false
This option is useful if the file permissions are not important to us, for example when we are on Windows.
See your settings
git config --list
Initialize a git repository for existing code
cd existing-project/ git init
Clone a remote repository
git clone https://github.com/user/repository.git
This creates a new directory with the name of the repository.
Clone a remote repository in the current directory
git clone https://github.com/user/repository.git .
Get help for a specific git command
git help clone
Update and merge your current branch with a remote
cd repository/ git pull origin master
Where origin is the remote repository, and master the remote branch.
If you don't want to merge your changes, use git fetch
View remote urls
git remote -v
Change origin url
git remote set-url origin http//github.com/repo.git
Add remote
git remote add remote-name https://github.com/user/repo.git
See non-staged (non-added) changes to existing files
git diff
Note that this does not track new files.
See staged, non-committed changes
git diff --cached
See differences between local changes and master
git diff origin/master
Note that origin/master is one local branch, a shorthand for refs/remotes/origin/master, which is the full name of the remote-tracking branch.
See differences between two commits
git diff COMMIT1_ID COMMIT2_ID
See the files that changed between two commits
git diff --name-only COMMIT1_ID COMMIT2_ID
See the files changed in a specific commit
git diff-tree --no-commit-id --name-only -r COMMIT_ID
or
git show --pretty="format:" --name-only COMMIT_ID
Source: http://stackoverflow.com/a/424142/1391963
See diff before push
git diff --cached origin/master
See diff with only the changed lines (no context)
git diff --unified=0
See details (log message, text diff) of a commit
git show COMMIT_ID
Count the number of commits
git rev-list HEAD --countgit rev-list COMMIT_ID --count
Check the status of the working tree (current branch, changed files...)
git status
Make some changes, commit them
git add changed_file.txt git add folder-with-changed-files/ git commit -m "Committing changes"
Rename/move and remove files
git rm removeme.txt tmp/crap.txt git mv file_oldname.txt file_newname.txt git commit -m "deleting 2 files, renaming 1"
Change message of the last commit
git commit --amend -m "New commit message"
Push local commits to remote branch
git push origin master
Push commits to all remotes, in a single command
Git does not do that, but see https://stackoverflow.com/a/18674313/1391963
See recent commit history
git log
See commit history for the last two commits
git log -2
See commit history for the last two commits, with diff
git log -p -2
See commit history printed in single lines
git log --pretty=oneline
Revert one commit, push it
git revert dd61ab21 git push origin master
Revert to the moment before one commit
# reset the index to the desired tree git reset 56e05fced # move the branch pointer back to the previous HEAD git reset --soft HEAD@{1} git commit -m "Revert to 56e05fced" # Update working copy to reflect the new commit git reset --hard
Source: http://stackoverflow.com/q/1895059/1391963
Undo the last commit, preserving local changes
git reset --soft HEAD~1
Undo the last commit, without preserving local changes
git reset --hard HEAD~1
Undo the last commit, preserving local changes in the index
git reset --mixed HEAD~1
Or git reset HEAD~1
See also http://stackoverflow.com/q/927358/1391963
Undo non-pushed commits
git reset origin/master
Reset to remote state
git fetch origin git reset --hard origin/master
See local branches
git branch
See all branches
git branch -a
Make some changes, create a patch
git diff > patch-issue-1.patch
Add a file and create a patch
git add newfile git diff --staged > patch-issue-2.patch
Add a file, make some changes, and create a patch
git add newfile git diff HEAD > patch-issue-2.patch
Make a patch for a commit
git format-patch COMMIT_ID
Make patches for the last two commits
git format-patch HEAD~2
Make patches for all non-pushed commits
git format-patch origin/master
Create patches that contain binary content
git format-patch --binary --full-index origin/master
Apply a patch
git apply -v patch-name.patch
Apply a patch created using format-patch
git am patch1.patch
Break up multiple changes into separate commits (or commit only part of a changed file)
git add --patch file.txt (press 'y' for the chunks to add) git commit -m 'first part of the file' (repeat if desired)
Sources: https://stackoverflow.com/q/4948494/1391963, https://stackoverflow.com/q/1085162/1391963
Create a tag
git tag 7.x-1.3
Push a tag
git push origin 7.x-1.3
Create a branch
git checkout master git branch new-branch-name
Here master is the starting point for the new branch. Note that with these 2 commands we don't move to the new branch, as we are still in master and we would need to run git checkout new-branch-name. The same can be achieved using one single command: git checkout -b new-branch-name
Create a branch from a previous commit
git branch branchname sha1-of-commit
or using a symbolic reference (e.g. last commit):
git branch branchname HEAD~1
You can also use
git checkout -b branchname sha1-of-commit
Source: http://stackoverflow.com/a/2816728/1391963
Check out a branch
git checkout new-branch-name
See commit history for just the current branch
git cherry -v master
(master is the branch you want to compare)
Merge branch commits
git checkout master git merge branch-name
Here we are merging all commits of branch-name to master.
Merge a branch without committing
git merge branch-name --no-commit --no-ff
See differences between the current state and a branch
git diff branch-name
See differences in a file, between the current state and a branch
git diff branch-name path/to/file
Delete a branch
git branch -d new-branch-name
Push the new branch
git push origin new-branch-name
Get all branches
git fetch origin
Get the git root directory
git rev-parse --show-toplevel
Source: http://stackoverflow.com/q/957928/1391963
Remove from repository all locally deleted files
git rm $(git ls-files --deleted)
Source: http://stackoverflow.com/a/5147119/1391963
Delete all untracked files
git clean -f
Including directories:
git clean -f -d
Preventing sudden cardiac arrest:
git clean -n -f -d
Source: http://stackoverflow.com/q/61212/1391963
Delete all files from a git repository that have already been deleted from disk:
git ls-files --deleted -z | xargs -0 git rm
Source (and alternatives): https://stackoverflow.com/a/5147119/1391963
Show total file size difference between two commits
Short answer: Git does not do that.
Long answer: See http://stackoverflow.com/a/10847242/1391963
Unstage (undo add) files:
git reset HEAD file.txt
See closest tag
git describe --tags `git rev-list --tags --max-count=1`
Source: http://stackoverflow.com/q/1404796/1391963. See also git-describe.
Debug SSH connection issues
GIT_SSH_COMMAND="ssh -vvv" git clone <your_repository>
Have git pull running every X seconds, with GNU Screen
screen for((i=1;i<=10000;i+=1)); do sleep 30 && git pull; done
Use Ctrl+a Ctrl+d to detach the screen.
See previous git commands executed
history | grep git
or
grep '^git' /root/.bash_history
See recently used branches (i.e. branches ordered by most recent commit)
git for-each-ref --sort=-committerdate refs/heads/ | head
Source: http://stackoverflow.com/q/5188320/1391963
Tar project files, excluding .git directory
cd .. tar cJf project.tar.xz project/ --exclude-vcs
Tar all locally modified files
git diff --name-only | xargs tar -cf project.tar -T -
Look for conflicts in your current files
grep -H -r "<<<" * grep -H -r ">>>" * grep -H -r '^=======$' *
There's also git-grep.
Apply a patch not using git:
patch -p1 < file.patch
'형상관리' 카테고리의 다른 글
[STS] STS에서 Github 연동 / 프로젝트 업로드 (0) | 2023.02.21 |
---|---|
[SVN] svn: Unable to create pristine install stream (0) | 2021.04.22 |
[SVN] svn: ~~ is already locked. 메시지 (0) | 2021.02.15 |
[Git] .gitignore 파일 생성 (0) | 2021.01.24 |
[Git] Personal access tokens 생성 (0) | 2021.01.23 |