文章目录
- 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