一、Git的命令行操作
1.Git的本地库初始化
本地库初始化,也就是把本地库创建出来
命令:git init
创建一个文件夹,在文件夹右键菜单中打开Git Bash Here窗口,输入命令
可以看到显示初始化了一个空的git仓库在我们创建的文件夹,我们可以勾选查看隐藏文件就可以看到这个生成的文件夹。
注意:
.git目录中存放的是本地库相关的目录和文件,不要删除也不要胡乱修改。
2.设置签名
用这个字符串可以区分开开发人员的身份。
形式:
用户名:chenjiaxing
邮箱:2609076192@qq.com
这里设置的签名和登录远程库(也就是代码托管中心)的帐号密码没有任何关系。
命令:
git config --global user.name chenjiaxing
git config --global user.email 2609076192@qq.com
项目级别/仓库级别:仅在当前本地库范围内有效
git config
系统用户级别:登录当前操作系统的用户范围
git config --global
级别优先级:项目级别优先于系统用户级别,二者都有时,采用项目级别的签名。 如果只有系统用户级别的签名,就以系统用户级别为准。
二者都没有不允许!
一般设置用户级别的就不用我们创建每个项目都去设置它,一般项目级别的配置信息在.git文件夹中,而用户级别的在当前系统用户目录下的.gitconfig文件中,可以使用cd ~名称切换到当前用户文件夹,然后进行查看。
3.Git基本命令
1)状态查看
git status
查看工作区、暂存区状态
当在一个新初始化的项目中输入命令时:
2)添加
git add [file name]
将工作区的“新建/修改” 添加到暂存区
3)提交
git commit -m "commit message" [file name]
将暂存区的内容提交到本地库
4)查看历史记录
多屏显示控制方式:
- 空格向下翻页
- b 向上翻页
- q 退出
git log:
git log --pretty=oneline:
git log --oneline:
git reflog:
提示:HEAD@{移动到当前版本需要多少步}
5)前进后退
本质:指针的移动
基于索引值操作[推荐]
git reset --hard [局部索引值]
如:git reset --hard a6ace91使用^符号: 只能后退
git reset --hard HEAD^
注:一个^表示后退一步, n 个表示后退 n 步使用~符号: 只能后退
git reset --hard HEAD~n
注: 表示后退 n 步
reset 命令的三个参数对比 :
--soft: 参数 :仅仅在本地库移动 HEAD 指针--mixed:参数在本地库移动 HEAD 指针、 重置暂存区--hard: 参数: 在本地库移动 HEAD 指针 、重置暂存区 、重置工作区
6)找回删除的文件
前提: 删除前, 文件存在时的状态提交到了本地库。
操作:
git reset --hard [指针位置]
删除操作已经提交到本地库: 指针位置指向历史记录
git reset --hard a6ace91
删除操作尚未提交到本地库: 指针位置使用 HEAD
git reset --hard HEAD
7)比较文件差异
操作:
将工作区中的文件和暂存区进行比较
git diff [文件名]
将工作区中的文件和本地库历史记录比较
不带文件名比较多个文件
git diff [本地库中历史版本] [文件名]
二、Git分支
1.什么是分支
在版本控制过程中, 使用多条线同时推进多个任务。
比如我们的主分支是master,现在要开发一个蓝色的皮肤功能feaure_blue和一个游戏的功能feature_game。这时候两个分支可以同时进行开发,谁也不用等谁,当功能开发完成后,可以申请合并到主分支中。
如果开发过程中遇到了bug,我们可以直接创建一个错误修复分支hot_fix,进行bug修复,而不影响主程序的运行。
2.分支的操作
创建分支
git branch [分支名]查看分支
git branch -v切换分支
git checkout [分支名]合并分支
第一步: 切换到接受修改的分支(被合并, 增加新内容) 上
git checkout [被合并分支名]第二步: 执行
merge命令git merge [有新内容分支名]
冲突:当我们创建了分支后,其实两个分支我们是都可以修改的,当我们正好修改的两个分支的同一个地方,两个修改的地方又不一致的时候,就会产生版本冲突的问题。
冲突 :
冲突的解决:
- 第一步: 编辑文件, 删除特殊符号
- 第二步: 把文件修改到满意的程度, 保存退出
- 第三步:
git add [文件名] - 第四步:
git commit -m "日志信息"(注意: 此时 commit 一定不能带具体文件名 )
三、Git远程操作
1.在Github创建远程库
第一步:在Github创建帐号,登录
第二步:
第三步:
2.创建远程库地址别名
git remote -v 查看当前所有远程地址别名
git remote add [别名] [远程地址]
3.推送
git push [别名] [分支名]
4.克隆
git clone [远程地址]
功能:
- 完整的把远程库下载到本地
- 创建 origin 远程地址别名
- 初始化本地库
5.团队成员邀请
点击Collaborators,输入新成员的Github用户名,点击Add collaborator ,
也可以复制邀请地址发送给新成员,进入地址同意后即可加入团队
6.拉取
pull=fetch+merge
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名/远程分支名]
git pull [远程库地址别名] [远程分支名]
7.解决冲突
- 如果不是基于 GitHub 远程库的最新版所做的修改, 不能推送, 必须先拉
取。 - 拉取下来后如果进入冲突状态, 则按照“分支冲突解决” 操作解决即可。
四、跨团队操作
也就是非本团队成员想在不加入本团队的基础上进行协同开发。
1.Fork
团队外成员点击fork按钮将代码仓库复制到自己帐号
2.本地修改, 然后推送到远程
3.pull request
向团队的代码发起合并请求
4.输入修改的标题,说明信息
5.仓库创建者审核、合入代码
仓库创建人点击pull request可以查看合并请求
可以进行审核代码:
审核没有问题有可以同意合并:
五、设置SSH免密登录
1.进入当前用户家目录
cd ~
2.删除.ssh目录
rm -rvf .ssh
3.运行命令生成.ssh 密钥目录
//xx.xx@xxx.xx替换成自己的邮箱
ssh-keygen -t rsa -C "xx.xx@xxx.xx"
注意: 这里-C 这个参数是大写的 C
4.进入.ssh 目录查看文件列表
ll -la
可以看到生成了两个文件id_rsa和id-rsa.pub,id-rsa.pub这个文件中存储的就是生成的秘钥信息。来查看一下
cat id_rsa.pub
5.将秘钥添加到github
复制id_rsa.pub文件内容, 登录 GitHub,点击用户头像→Settings→SSH and GPG
keys
6.创建ssh别名
git remote add origin_ssh git@github.com:2609076192/mydoc.git
然后就可以使用这个别名来进行代码的提交和拉取操作了