Git 常用命令
# 查看全局配置
git config --global --list
# 设置用户名和邮箱
git config --global user.name "yourname"
git config --global user.email "youremail@example.com"
# 创建ssh key
ssh-keygen -t rsa -C "youremail@example.com"
# git 配置全局字符集编码
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8ba
# 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true
# 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn
# git 设置能检测文件名大小写
git config core.ignorecase false
# 创建一个本地仓库
git init
# 查看git状态
git status
# 将文件添加到暂存区
git add filename
# 撤销对工作区文件的更新或操作
git restore filename
# 撤销暂存区的内容
git restore --staged filename
# 将暂存区内容提交
git commit -m "更新说明"
# 回退版本 将当前hard指定到对应的commit_id
git reset --hard commit_id
# 查看更新记录 参数 --pretty=oneline,只会显示版本号和提交时的备注信息
git log --pretty=oneline
# 查看历史更新记录
git reflog
# 删除文件(对于git管理的文件),提交后可以删除本地和版本库的文件
# -r 递归 -f 对于已修改的文件(与版本库不一致)执行强制删除
git rm filename
# 删除文件,不删除工作区文件,提交后版本库文件被删除,工作区文件没有删除
git rm --cached <filename>
# 查看分支 -r 远程分支 -a 本地和远端分支
git branch <-r> <-a>
# 创建分支
git branch dev
# 本地分支重命名
git branch -m <oldbranch> <newbranch>
# 切换分支
git checkout dev
# 创建并切换分支
git checkout -b dev
# 删除分支
git branch -d dev
# 合并指定分支到当前分支 --no-ff
git merge dev [--no-ff]
git merge sivan-dev -m "dev合并sivan-dev" --no-ff
# 强制删除未合并的分支
git branch -D dev
# 分支合并时有冲突,中止合并
git merge --abort
# 手动解决冲突后,可通过将冲突文件添加到暂存区告诉git,冲突已解决
git add filename
git commit -m ""
# 使用可视化工具解决冲突
git mergetool
# 查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit
# 关联远程仓库
git remote add origin git@github.com:michaelliao/learngit.git
# 把本地仓库的所以内容推送到远程库
# -u 参数,Git 不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来
git push -u origin master
# 从远程仓库克隆 -b 克隆指定分支
git clone git@github.com:chodble/localhost.git [本地仓库名字]
# 要查看远程库的信息 -v 详细信息
git remote [-v]
# 删除本地指定的远程地址
git remote remove origin
# 本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name
# 推送到远程分支
git push origin master
# 拉去远程分支解决冲突
git pull
# 本地分支和远程分支创建链接
git branch --set-upstream branch-name origin/branch-name
# 推送当前分支,并在远程创建当前分支
git push --set-upstream origin dev
# 将远程主机的最新内容拉到本地,不进行合并
git fetch origin master
# 获取最新代码到本地 ,并在master下面创建master1
git fetch origin master:master1
# 将远程主机的master分支最新内容拉下来后与当前本地分支直接合并
git pull origin master
git pull <远程主机名> <远程分支名>:<本地分支名>
# 统计文件改动
git diff --stat master origin/master
git diff <local branch> <remote>/<remote branch>
# 比较本地分支与git 主分支差异情况
git diff <local branch> <remote>/<remote branch>
# 本地与远程的差集 :(显示远程有而本地没有的commit信息)
git log master..origin/master
# 获取最新代码到本地 ,并在master下面创建master1
git fetch origin master:master1
# 将当前未提交的内容暂存
git stash
# 查看git暂存记录
git stash list
# 恢复暂存记录
git stash apply
# 删除暂存记录
git stash drop
# 恢复并删除记录
git stash pop
常用git stash命令:
(1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
(2)git stash list :查看stash了哪些存储
(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
(8)git stash clear :删除所有缓存的stash
tag-标签
注意,标签不是按时间顺序列出,而是按字母排序的。
# 创建tag -a 指定标签名,-m 指定说明文字 后面可以指定commit_id
git tag -a v0.1 -m "version 0.1 released" 3628164
# 查看所有tag
git tag
# 删除tag
git tag -d v1.0
# 查看标签详细信息
git show v1.0
# 推送本地标签到远程
git push origin <tagname>
# 一次性推送全部尚未推送到远程
git push origin --tags
# 删除远程标签
git push origin :refs/tags/v0.9
alias-别名
每个仓库的 Git 配置文件都放在.git/config 文件中
global 位置在用户主目录下的一个隐藏文件.gitconfig
# co 表示 checkout,ci 表示 commit,br 表示 branch
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
# 配置一个 git last,让其显示最后一次提交信息
git config --global alias.last 'log -1'
# lg
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git add -A 提交所有变化
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
git 分支
-
主分支
-
master分支:存放随时可供生产环境中的部署的代码
-
develop分支:存放当前最新开发成果的分支,当代码足够稳定时可以合并到master分支上去。
-
辅助分支
-
feature分支:开发新功能使用,最终合并到develop分支或抛弃掉
-
release分支:做小的缺陷修正、准备发布版本所需的各项说明信息
-
hotfix分支:代码的紧急修复工作