一、Git安装git
安装后需配置对应的用户名和邮箱github
git config --global user.name "xxxx"windows
git config --global user.email "email@example.com"app
global参数设置表示为全部本地git仓库应用,若要单独配置需去除3d
二、Git建立版本库(windows建议目录不使用中文)指针
git init 将当前目录变为Git可管理仓库日志
git add 添加文件进入仓库cdn
git add -f (文件名)可进行强制添加,若须要修改,则将.gitignore中文件进行修改blog
git check-ignore 查看对应ignore文件rem
git commit 递交文件 -m(接本次修改的说明)
add可屡次添加多份文件进入暂存区
commit可一次性递交全部文件
三、Git回溯版本
git status 获取当前本地仓库状态
git diff (文件名)比对当前文件修改内容
git log 获取递交的历史记录 --pretty=oneline精简日志信息
git reset --hard (commit id)回退到指定版本
git reflog 记录每次命令
四、工做区和暂存区
文件在本地仓库执行git add 后会添加到暂存区
文件在暂存区commit后直接传入远程仓库
五、管理修改
cat +(文件)能够直接打开文件进行编辑
git diff HEAD -- (文件)能够直接查看工做区和版本库之间的区别
git add同一个文件两次后会合并修改内容 commit以后会一次性递交
六、撤销修改
git checkout -- file能够丢弃工做区的修改
有两种对应的修改状况:
一、文件修改后未存入到暂存区,撤销以后即回到当初获取到的文件内容
二、文件已经添加入暂存区,在暂存区作出了修改,修改撤销后即回到初步添加到暂存区的状态
git reset HEAD (file)能够直接将暂存区的修改撤销并退回到工做区
HEAD表示当前最新版本
reset指令能够回退版本,也能够将暂存区的修改回退到工做区
七、删除文件
git rm (文件)删除文件
当本地和远程仓库中文件不一致时,经过git status进行文件比对判断
若须要在本地删除,则进行git rm后再进行commit才可在远程仓库中删除
若错误的在本地中删除,则可经过git checkout -- (文件)进行恢复
本质是用版本库中的文件替换工做区的版本
git branch -D xxxxx 强制删除
八、远程仓库
git remote add origin git@github.com:michaelliao/learngit.git 关联本地仓库和远程仓库
git push -u origin master关联以后直接进行push,本质是将当前分支直接递交至远程仓库
-u选项是在第一次push时也将本地master分支和远程master分支进行关联,以后再进行push能够去掉该参数
九、分支
Git用master指向最新的提交,再用HEAD指向master,就能肯定当前分支,以及当前分支的提交点
当咱们建立新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上
对工做区的修改和提交就是针对dev分支了,好比新提交一次后,dev指针往前移动一步,而master指针不变
直接把master指向dev的当前提交,就完成了合并
删除dev分支就是把dev指针给删掉,删掉后,咱们就剩下了一条master分支
git checkout -b dev 建立dev分支并切换到dev分支
git checkout命令加上-b参数表示建立并切换,至关于如下两条命令:
git branch dev
git checkout dev
git merge dev 将dev分支合并到master分支,合并时,dev分支需进行add commit操做,切换到master分支后,修改文件是不存在的,以后再进行merge能够完成合并,合并时的fast-forward代表该次为快进模式,该模式下,删除分支后会直接丢掉对应分支信息,若强制禁用该模式,git会在merge后生成一个新的commit,能够从git log中看出分支信息
图示为ff模式合并
图示为--no-ff模式合并,即禁用ff模式
git merge --no-ff -m "merge with no-ff" dev 禁用快速模式进行合并,后面需加上-m,由于该合并需建立一次新的递交
git branch -d dev 删除dev分支
git switch -c dev 建立并切换到dev分支
git switch master 切换到master分支
使用switch进行切换分支
十、Bug分支
git stash 当进行多个不一样分支的工做时,有某个紧急工做须要当即完成,可是当前工做仍处于处理阶段时,可经过stash来隐藏当前工做区间,隐藏后经过status查看当前工做区确保工做区是干净的。后续步骤即为普通的git递交步骤(切换分支,添加文件,递交文件,推送文件,删除分支)
git stash list 查看隐藏工做区,恢复方式有两种:
git stash apply 该恢复不会删除stash内容,须要用git stash drop进行删除
git stash pop 恢复工做区间,同时删除stash内容
进行恢复后再经过git stash list确保不存在隐藏工做区
git cherry-pick (commit id)复制一个特定的提交到当前分支
适用于在master分支修复bug后,由于dev分支拉取后二者也会具备相同bug问题,所以直接经过该方法重复递交至dev(需切换至dev分支),同理,dev分支修复后也能够修复master分支上的bug,不过从dev分支切换至master分支时,须要用stash保留当前工做区间
十一、多分支
git remote 查看远程库信息
git remote -v 显示详细远程库信息
git push origin dev 向远程推送dev分支,前提是远程需存在对应分支
当推送的远程分支和你正在修改的分支在多人工做状况下形成了内容冲突时,须要先pull远程仓库内容,在本地进行合并,解决冲突后再推送
git branch --set-upstream-to=origin/dev dev 将本地dev分支和远程dev分支创建链接,若远程递交存在冲突,则需手动解决冲突后在递交,或者经过git remote prune origin 强制同步远程和本地内容
十二、rebase
git rebase
rebase操做能够把本地未push的分叉提交历史整理成直线
rebase的目的是使得咱们在查看历史提交的变化时更容易,由于分叉的提交须要三方对比