一.Git
1.Git 配置
git config – global user.name “用户名”
git config – global user.email “邮箱”
检查自己的git是否安装成功: git --version
二.Git的本地实现
2.初始化一个本地git仓库
(首先新建一个文件夹,右键git bash,输入命令 git init),初始化成功会出现一个.git的文件夹
注意:文件路径避免出现中文。
3.关于文件的一些基本命令行操作
创建一个文件夹: mkdir aaa
进入文件: cd 路径
查看文件: ls
查看当前工作目录: pwd
显示隐藏文件:
ls -al
创建index.html文件,并把xxx输入 echo xxx > index.html
将ccc添加到index.html文件中 echo ccc >> index.html
查看index.html的内容 cat index.html
4.git本地仓库的认知:工作区、暂存区、历史区(又被称为版本库)
工作区到暂存区提交代码可多次提交,暂存区到版本库建议一次提交
5.本地仓库常用操作
工作区内容保存到暂存区三种方法: git add . /A/文件名
暂存区代码到历史区两种方法: git commit -m +”注释”
git commit如果不加-m参数会弹出编辑页面,输入注释,按Esc退出编辑模式,再输入:wq!退出编辑器。
W:保存 q:退出 !:强制执行
查看工作区的状态: git status
查看状态的精简模式: git status -s
*注意: 标红代表:工作区到暂存区有差异
标绿代表:暂存区到历史区有差异
删除index.html文件 rm index.html
强行删除index.html文件 rm -rf index.html
rm -rf * 删除当前目录下的所有文件,这个命令很危险,应避免使用。
创建文件夹 touch index.js
查看当前分支的提交日志 git log
查看当前分支的提交短日志 git log --oneline --graph
解释: 显示本机所有的提交日志 --online 显示所有分支 --all
显示分支关系 --graph 显示当前指针指向的分支名 --decorate
比较工作区和暂存区的差异 git diff
比较暂存区和版本库的差异 git diff --staged 或者 git diff --cached
注意:diff后面不带参数默认是工作区和历史区的区别
在git bash打印操作命令 history
新建文件打印操作命令 history > test.txt
三、git本地库和远端仓库的交互
1.关于远端仓库的科普:
Git是版本控制系统,Github是在线的基于Git的代码托管服务
GitLab拥有GitHub拥有的一切,但他拥有更多让团队对它们的repositories(库)拥有更多的控制,比如:非常便捷的用户界面;设置仓库权限、只有特定的人可以push,force push或者删除一个分支的代码;不再权限范围内,将不知道这个资源的存在。
2.本地和远端的交互
案例:https://github.com/githubwyn/aaa.git (这是一个github的远端操作)
连接远程仓库 git remote add origin +远程仓库地址
查看连接了哪些远程仓库地址 git remote -v
删除远程仓库: git remote rm origin
工作区内容保存到暂存区三种方法: git add . /A/文件名
暂存区代码到历史区两种方法: git commit -m +”注释”
一步完成提交: git commit -a -m”注释”
从远端仓库pull代码带本地(第一次不需要) git pull origin master
将本地仓库代码push到远端仓库 git push origin master
Push后远端可以看到本地的提交内容
点击index查看修改详情
四、多人协作命令
1.团队新加入一个贡献者,如何做第一次操作
查看是否安装git git --version
初始化本地仓库 git init
连接远程仓库 git remote add origin +仓库地址
查看本地仓库连接的所有远程仓库 git remote -v
从远端pull代码到本地 git pull origin master
创建分支 git checkout dev
创建并切换分支 git checkout -b dev
查看分支 git branch
查看主线提交内容 git show master
2.在分支上修改代码,进行提交,会遇到如下问题。
warning: LF will be replaced by CRLF in aa.html.
windows中的换行符为 CRLF, 而在Linux下的换行符为LF,所以在执行add . 时出现提示,解决办法:
$ git config --global core.autocrlf false //禁用自动转换 $ rm -rf .git // 删除.git
然后重新执行:
$ git add . $ git init
分支上修改了代码,如何合并到主线
3.分支上修改代码如何合并到主线
git add . git commit -m”注释” git checkout master git merge dev
问:这样就完成了merge?是否太容易了。
答:是的,这样顺利是有前提的。前提是dev有提交,master没有任何改动。
如果master也发生了修改,在master中merge的时候回报错:
提示:自动合并 index.js
冲突(内容):合并冲突在index.js
自动合并失败;修复冲突,然后提交结果。
打开冲突的文件:找到冲突位置,解决冲突
然后执行 git add . git commit -m”” git push
成功之后执行:git log --oneline --graph --decorate --all
分支修改完问题后可以删除分支: git branch -d dev
查看所有分支: git branch
4.细说删除分支
git branch -d dev
Git默认是Fast forword的模式,这种情况下删除分支会丢掉分支信息
使用-no-ff会在merge的时候生成一个新的commit,从分支历史上就可以看出分支信息
git merge --no-ff -m“merge add commit”
5.工作中常遇到的问题
有一种情况灰常常见,当你拉分支修改问题时,突然有一个急活需要切换分支进行修改,而手头的问题修改了一半。你的修改应该怎么办?
提交?不是一个完整的commit
不提交?切换分支会丢掉你所有的修改
分支上进行修改如果未提交切换分支会提示错误,需要保存后再切换
在分支上保存了工作区和暂存区的内容在分支上 git stash
查看工作状态 git status
查看被缓存的信息 git stash list
得到这些信息的两种方式 git stash pop
第二种 git stash apply stash@{0}
git stash drop
回滚 git reset --hard
Git提交了很多东西有的想要,有的不想要,可以进行选择 git cherry-pick f7217c2