git命令笔记
git常用命令
配置git
git config [options]
options(常用):
--global #使用全局配置文件在当前用户下
--system #使用系统配置文件 在/etc文件夹下
--local #使用库配置文件
eg:
$ git config --global user.name "name" #用户名
$ git config --global user.email email #邮箱
$ git config --global core.editor emacs #文本编辑器
$ git config --global merge.tool vimdiff #差异分析工具
$ git config --list #查看配置信息
创建仓库
git init <dir> #在dir目录下构建git仓库huo在当前目录下构建git仓库
git clone [repo/mydir] <directory>
repo:Git 仓库。
directory:本地目录。若为空会在当前目录下创建一个名为mydir的目录,
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
git add #将文件加入暂存区
git commit #将文件加入版本库
git reset [--soft|--mixed(默认)|--hard][version] #版本回退-到[version]版本
--soft #只回退版本库
--mixed(默认) #版本库和暂存区
--hard #全部回退
git checkout -- filename #撤销工作区修改
一种是filename自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
一种是filename已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态
git mv [from_name] [to_name] #文件重命名
git rm filename #文件删除如果误删 git checkout --filename 撤销修改,否则commit
git bisect #用来查找哪一次代码提交引入了错误
git grep #检索文件中的文本内容
git log [--pretty=oneline](一行输出) #查看版本库提交的历史纪录
git reflog #查看命令的历史纪录
git show [options] <object> #用于显示各种类型的对象
git status #查看工作区状态
分支管理
git branch [name] #创建name分支
git branch #查看所有分支
git checkout [name] #切换到name分支
git switch [name] #切换到name分支
git merge [name] #用于合并name分支到当前分支
git stash #可以把当前工作场景储存起来
git stash list #查看保存的工作场景
git stash pop==git stash apply+git stash drop #恢复工作场景并删除存储纪录
git diff #差异分析
git rebase #变基操作
#把分叉的提交历史“整理”成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了。
git rebase -i #修改commit信息
git rebase --onto [master] [topic]
A---B---C topic
/
D---E---F---G master
changed
A'--B'--C' topic
/
D---E---F---G master
git rebase --onto [master] [topicA] [topicB]
H---I---J topicB
/
E---F---G topicA
/
A---B---C---D master
changed
H'--I'--J' topicB
/
| E---F---G topicA
|/
A---B---C---D master
git rebase --onto topicA~5 topicA~3 [topicA]
E---F---G---H---I---J topicA
changed
E---H'---I'---J' topicA
#删除barnchName分支startpoint之后包括endpoint的commit
git tag #打标签 commit 后的-m -a
远程合作
git remote add [alis] [repo] #增加远程仓库
git branch --set-upstream-to=origin/<branch> dev #将本地dev分支与远程关联
git fetch [alis] [master|dev] #从远程仓库拉代码 不会自动merge
git pull [alis] [master|dev] #从远程仓库拉代码 会自动merge
git push [alis] [master|dev] #将代码推到仓库