git学习
安装GIT
官网下载安装gith 后
初始化
打开 git bash
进行全局配置
git config --global user.name "名字"
git config --global user.email "邮箱"
初始化本地仓库
选取一个文件夹做为仓库
git init
添加文件到暂存区 / 从暂存区删除
git add 文件名 对应 git rm --cached 文件名
git add *.txt 添加某类 对应 git rm --cached *.txt
git add . 添加所有 对应 git rm --
查看状态:是否添加上
git status
将暂存区文件提交到本地仓库
git commit
git commit -m "日志"
查看日志 参数 --pertty
git log 查看完整日志
git log --pretty=oneline 查看一行,用参数
回退版本 参数 --hard HEAD
HEAD指向当前版本,实际是通过指针
命令 git reset --hard commit_id
代表上一个版本,^类推上两个,很多个的时候波浪线 + 回退上x个版本数字,如HEAD~100
git reset --hard HEAD^
查看命令历史,方便确认版本
git reflog
工作区和暂存区
工作区:文件夹就是一个工作区
版本库:工作区下.git文件夹就是git的版本库
git add 实际是把文件修改 添加到 暂存区
git commit 实际是把暂存区的所有文件提交到当前分支
git commit 每次提交只会把 git add 的文件修改进行提交,如果add后再次修改文件,commit后是不会包含add之后修改的内容
也就是说,每次修改都需要add之后,提交才会包含那次最新的修改
- 加深理解:每次修改,如果不用git add到暂存区,那就不会加入到commit中
撤销修改三种情况
-
本地改动,舍弃本地修改
1、没有git add 到暂存区,使用git checkout -- file 恢复到和版本库一样的状态
2、git add 到暂存区,git checkout -- file 恢复成add 到暂存区的状态 -
本地改动,add到了暂存区,git reset HEAD file (把暂存区的修改回退至工作区) 随后按上面的步骤进行
-
本地改动,且提交到了版本库,按照版本回退处理
远程仓库
创建ssh key: ssh-keygen -t rsa -C "youremail@example.com"
.ssh 中含有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
配置GitHub,SSH KEY
设置title 在key中粘贴 id_rsa.pub公钥的内容
git 关联远程库
origin是习惯命名,通常指远程仓库
git remote add origin git@github.com:fangHAOgithub/Fang_Repository.git
关联后使用:git push -u origin master 第一次推送master分支的所有内容
git push origin master
克隆远程仓库到本地
git clone 地址
git 支持多种协议,https ssh等
分支管理 实际创建的分支只是添加了新的分支指针
创建dev分支: git checkout 命令,-b参数表示创建并切换 等价于 ===> git branch dev git checkout dev
git branch 分支名 也可以创建分支
- git checkout -b dev
查看分支: 星号 * 指向当前分支
git branch
切换分支回master: git checkout master
合并dev分支到master, 控制台中的Fast-forward 指的是合并时快进模式,也就是直接把master指向dev的当前提交,速度很快
git merge dev
合并完成后删除dev 分支
git branch -d dev
- 需要留意
切换分支用switch更加科学
创建并切换至dev分支 - git switch -c dev
git switch master
解决冲突
查看分支合并情况
git log --graph
git log --graph --pretty=oneline --abbrev-commit
分支管理策略
fast forward模式删除分治后,会丢失分支信息
禁用fast forward模式,合并分支
使用 --no-ff参数
git merge --no-ff -m "日志" dev ====>因为合并需要创建新的commit,所以需要-m 参数
- bug分支 创建一个不影响现有开发分支的 bug分支来修复BUG
git stash 它可以保留此前工作区中修改但是没有提交(没做完的),修复bug后可以恢复
恢复现场,两种方式
1、 git stash apply 恢复此前开发中的现场,但是stashd 内容并不会删除,需要用 git stash drop 删除
2、 git stash pop 恢复的同时把 stash 的内容也删除了
查看stash中的内容可以 用 git stash list 查看
可以多次git stash,恢复时 指定某个即可 git stash apply stash@{i}