文章目录
- git源代码管理
- git单人本地仓库操作
- 创建远程仓库(github为例)
- 多人开发与冲突
- 分支操作
- SSH(安全外壳协议)
 
git源代码管理
文档连接:https://git-scm.com/docs
git是用于源代码管理,方便多人协同开发,方便版本控制
git管理源代码特点:git是分布式管理,服务器和用户端都有版本控制能力,都能进行代码的提交、合并
git操作流程
 git服务器 -> 本地仓库 -> 客户端 -> 本地仓库 -> git服务器
 
 
git单人本地仓库操作
1.安装git:sudo apt-get install git
 2.查看git安装结果:git
 3.创建项目文件:mkdir localgit
 4.进入项目文件:cd localgit
 5.创建本地仓库:git init
 运行之后会有个隐藏的文件.git
 6.设置个人信息名字:git config user.name qiruihua
 7.设置个人信息邮箱:git config user.email qiruihua@email.com
 (六七两条设置的到保存在.git/config文件中)
8.创建文件:touch login.py
 9.查看文件状态:git status
 红的可以理解为没有在git管理下(没有在工作区)
 10.加入工作区:git add login.py
 git add .所有修改的文件
 11.查看文件状态:git status
 绿的可以理解为在git管理下(在工作区)
 12.由暂存区到仓库区:git commit -m ‘备注’
 备注一般用来标记该步骤的含义,实现的功能
 13.查看文件状态:git status
 没有任何信息
 14.编辑login.py文件:vim login.py
 内容自行编写
 15.查看文件状态:git status
 红的
 (新建的文件要通过git add来追踪,追踪了之后才有对应的工作区、暂存区、仓库区)
 (追踪的文件分为工作区、暂存区、仓库区)
 16.由工作区转到暂存区:git add login.py
 17.查看文件状态:git status
 绿的
 18.由暂存区到仓库区:git commit -m ‘备注’
 git commit -am ‘备注’(可省略git add那步)
 19.查看文件状态:git status
 没有任何信息
查看提交记录:git log
 回退最近一笔提交:git reset --hard HEAD^
 回退两个版本HEAD^^,回退10个版本HEAD~10
 显示所有版本信息:git reflog
 回退到某个版本:git reset --hard id (id为git reflog查询结果的第一列)
 将暂存区的代码回退到工作区(执行过add没执行commit或者都没执行情况)(代码恢复原样,未修改):git checkout login.py
 撤销暂存区代码回退到工作区(执行过add没执行commit或者都没执行情况)(代码不恢复原样,进行过修改):git reset HEAD login.py
创建远程仓库(github为例)
(还有gitee也类似)
1.进入网址并登入:https://github.com/
 2.进入后点击create repository
 
 3.输入Repository name:仓库名
 description:仓库介绍
 Add .gitignore:输入python,忽略文件: 我们在写代码过程中(运行过程中)本地的一些文件,不需要提交到服务器进行代码管理
 choice a liense:多人开发选择MIT license,单人开发不用选(None)
 create repository:创建
 
4.将github中的代码下载到本地:
复制如下链接https://github.com/EnJoyABoy/python.git
在虚拟机里面运行指令:git clone https://github.com/EnJoyABoy/python.git
然后在虚拟机里面对文件进行操作(修改,add,commit)(commit并没有提交到github上面)
执行commit之后,执行指令git status会提示在某分支有一笔提交,这时,本地的代码修改了,但是github中的没有被修改
要将修改的代码提交到github上,需要执行指令:git push,然后输入github的用户名和密码
更新本地代码为github上最新的代码:git pull
多人开发与冲突
代码编辑界面模拟两个人,一个是经理,一个是员工
 在一个终端模拟员工操作:
将github仓库克隆下来:git clone https://github.com/EnJoyABoy/python.git
修改用户名:git config user.name 员工
修改邮箱:git config user.email 员工@email.com
在另一个终端模拟经理操作:
将github仓库克隆下来:git clone https://github.com/EnJoyABoy/python.git
修改用户名:git config user.name 经理
修改邮箱:git config user.email 经理@email.com
提交冲突
 当两人同时提交的时候(一人提交后另一个人没有更新本地也提交)会发生冲突,修改之前没有更新本地代码容易引发冲突(其他人提交过,自己本地没更新)
当提交发生冲突的时候,先执行git pull
接着对发生冲突的文件进行修改(删除<<<,===,>>>等各行内容)
tag标签:当一个大版本完成之后,需要打一个标签,用于记录大版本,备份大版本代码,当后面开发需要回到该版本的时候,可以通过标签回到该版本
 新增一个标签版本:git tag -a v1.0 -m ‘完成注册’
 (-a新增,-m描述)
 查看版本:git tag
 提交到github中:git push origin v1.0
 删除版本:git tag -d v1.0
 删除github中的版本:git push --delete origin v1.0
分支操作
分支作用:比如有两个分支,一个主分支,一个副分支,我们在副分支中提交修改代码,当编写的差不多了,可以将副分支的提交提交到主分支当中,从而不影响主分支的使用
查看当前分支:git branch
 创建一个分支:git checkout -b pay
 创建之后自定切换到了pay分支,当前的修改提交都在pay分支中
 切换到master分支:git checkout master
 在pay分支中修改提交代码之后,切换回到master查看pay中修改的文件在这没有被修改
 将pay分支的修改合并到master主分支中(要切换到master主分支中操作):git merge pay
 删除pay分支:git branch -d pay
 将本地新分支pay提交到github中:git push --set-upstream origin pay或者git push -u origin pay
SSH(安全外壳协议)
在https://github.com中点击右上角头像,点击settings
 
然后点击SSH and GPG keys,再点击New SSH key新建个SSH
 
 然后再虚拟机里面去生成SSH公钥(输入自己的邮箱):ssh-keygen -t rsa -C “邮箱@email.com”
 运行之后,cd .sh进入目录,里面有个id_rsa.pub文件
 
在文件夹.sh里面将id_rsa.pub文件内容复制出来,粘贴到key中,title写一个名字,然后点击Add SSH key
 
 建立完成之后,到github仓库中,点击SSH复制链接
 
 然后在虚拟机里面执行如下指令,将github的代码下载到本地:git clone git@github.com:EnJoyABoy/python.git
上面如果报错,先执行eval "$(ssh-agent -s)"和ssh-add



















