[TOC]
Git 常用命令
1. gitignore
git .gitignore 文件只能够忽略 untracked file ,对于已经 tracked 的文件,再加入 .gitignore 文件中是无效的。
若想忽略已经 tracked 的文件,可采取如下方式:
- git rm -- cached a.conf;将 a.conf 加入到 .gitignore 中,然后 commit & push
- git update-index --assume-unchanged a.conf
Note:此种方式适用于你对某个文件做了修改,但仅限于 local branch。
git update-index --no-assume-unchanged a.conf
命令可将 changes 释放出来。
对于配置文件,git 中可采取如下的方式配置:
remote repository 保存的应该是 a.conf.example 文件,当我们 clone 下来后,cp a.conf.example a.conf,再对 a.conf 进行修改,而 a.conf 应该是 git ignore 的。
2 . cherry-pick
git cherry-pick 用于把另一个本地分支的 commit 修改应用到当前分支。
Note:此命令只会合并当前 commit id 所修改的内容
usage:git cherry-pick <commit id>
3. log
git log
用于查看版本的提交记录。
usage:git log --pretty=format:"%H , %an , %ar : %s" --stat -1
git log -p -1
4. reset & revert
reset
与 revert
的区别在于一个主要用于本地版本的回滚一个用于 remote server 上的回滚。
- reset
usage:git reset --hard commit_id
Tips:可以使用
git reflog
命令来查看命令历史,以便回到回滚之前的版本。
- revert
usage:git revert commit_id
Note:git revert 使用一次新的 commit 来回滚之前的 commit,所以 HEAD 是一直往前的;而 git reset 是直接删除指定的 commit ,HEAD 是向后移动的。
5. diff
- 查看尚未暂存的文件更新了哪些部分。
git diff
- 查看已暂存起来的文件和上次提交快照(HEAD)之间的差异。
git diff --cached
- 显示工作版本和 HEAD 的差异。
git diff HEAD
- 显示当前目录和另一个分支的差别。
git diff master
- 显示目录下的某个目录和另一个分支的差别。
git diff HEAD -- ./lib
6. stash
git stash save "some message"
# save uncommited changes
git stash list
# list stashed changes
git stash show stash@{n}
# see stash change
git stash apply/pop stash@{n}
# apply stash and remove it from the list
git stash drop stash@{n}
# drop stash changes
git stash clear
# clear all stash changes
git stash branch <branchname> stash@{n}
# create branch base on stash