Git基础
一、简介
-
方便多人协同开发
-
方便版本控制
-
作者Linux之父:Linus Torvalds
-
git开发目的:为了辅助Linux内核的开发
-
是Linus被逼无奈,花了2个星期用c写的
-
2008年,GitHub网站上线,为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub
-
Git迅速成为最流行的分布式版本控制系统(没有之一)
二、Git结构
Git
是分布式管理系统。服务端和客户端都有版本控制功能,都能进行代码的提交,合并,..
图一

图二

三、本地仓库操作
1、安装git
-
ubuntu下安装
sudo apt-get install git
-
windows下安装
2、查看是否安装成功
git --version
3、创建本地仓库
-
创建一个文件夹用于存放项目文件(mygit)
-
新建本地仓库
cd ~/mygit/ # 初始化 git init # 会创建一个.git的隐藏文件,关于版本控制的文件都存放在这里,绝对不要改动
-
配置个人信息
# 配置全局信息 git config --global user.name 'yun' git config --global user.email '570454176@qq.com' # 配置信息会保存在家目录下 ~/.gitconfig
# 配置本项目个人信息 git config user.name 'yun' git config user.email '570454176@qq.com' # 配置信息存储在当前目录下的.git/config下
help
git add --help
调用浏览器,打开help页面
4、添加文件
在项目文件加下创建readme.md文件,输入以下内容。
1、先提交到暂存区
git add Readme.md
2、查看git状态
git status

3、提交到本地仓库
git commit -m '新建了Readme.md文件'
git commit
命令的,-m
参数后输入的内容是提交说明。命令执行成功后显示几个文件被改动,加了多少行。每提交一次就会生成一个版本。

5、历史版本
查看历史版本
git reflog
可以查看所有分支的所有操作记录(),包含已删除的commit记录。
git log
不能查看已删除的commit记录
git log

git reflog

6、版本切换
git reset --hard HEAD^
-
HEAD
表示当前最新版本 -
HEAD^
表示当前最新版本的前一个版本 -
HEAD^^
表示当前最新版本的前两个版本,以此类推 -
HEAD~1
表示当前最新版本的前一个版本 -
HEAD~8
表示当前最新版本的前8个版本,以此类推
git reset --hard 版本号
当版本非常多时选择这种方法。版本号就是每次commit生成的hash值,只用取前几位数。

7、撤销修改
运行git status
命令会显示当前工作区,暂存区,仓库的状态。当工作区的所有代码都提交到仓库 并和仓库保持一致时会显示:
一旦有修改,git status
命令会显示改动的文件,以及你应该怎么提交这些修改。

1、撤销工作区代码
git checkout 文件名
修改文件后没有执行add
,运行此命令可以撤销所有修改,一旦撤销没有后悔药哦,在确定抛弃所有修改时使用。
2、撤销暂存区的代码
# 第一步:将暂存区代码撤销到工作区
git reset HEAD 文件名
# 第二步:撤销工作区代码
git checkout 文件名

8、对比文件
-
对比本地仓库与工作区
git diff HEAD -- 文件名
-
对比本地仓库上个版本代码
git diff HEAD HEAD^ -- 文件名

9、文件删除
-
删除没有添加进版本库中的工作区中的文件
# 直接删除不用做任何操作
-
删除已添加进工作区但没有提交的文件
# 1.先撤回工作区 git reset HEAD 文件名 # 2.直接删除 rm 文件名
-
已提交到版本库
# 1.删除文件 rm 文件名 # 2.运行`git add .` git add . # 3.提交 git commit -m 'delete some file'
四、分支管理
新建仓库时默认创建master主分支
1、创建分支
git branch newbranch
切换到分支
git checkout newbranch
创建并切换到分支
git checkout -b newbranch
查看分支
git branch
2、合并分支
分支任务完成后,合并到主分支
首先切换到master分支
git checkout master
然后合并分支
git merge newbranch
3、删除分支
分支合并完之后,没有其他任务了,可以删除分支
git branch -d newbranch
五、远程仓库
github:https://gitee.com/
码云:https://github.com/
首先你需要注册一个码云的账户,然后创建一个空的仓库。这个在码云上有教程大家自行操作。
创建好仓库后,你的仓库会有两个地址,一个是https,一个是ssh。因为使用https需要输入用户名和密码,推荐使用ssh的方式。要使用ssh你需要设置你账户的ssh公钥。公钥管理

1、公钥管理
生成公钥
ssh-keygen -t rsa -C '570454176@qq.com'

部署公钥


添加后,在终端中输入
ssh -T git@gitee.com
clone测试

2、添加远程仓库
要把本地仓库和远程仓库联系起来有两种方式:
克隆
远程仓库里已经存在项目文件,更换开发电脑,需要将项目从远程仓库clone到本地进行工作。
# 首先cd到你要存放项目的目录
cd ~/projects
# 然后运行下面的命令
git clone clone地址
eg:
git clone https://gitee.com/yun5704/12345wanwan.git
拉取
本地初始化一个仓库,设置远程仓库地址后再做拉取
和第一种方式的区别在于先创建仓库
git init # 新建仓库
git remote add origin https://gitee.com/yun5704/12345wanwan.git
3、推送到远程仓库push
git push origin master
4、拉取到本地仓库pull
git pull origin master
六、git在pycharm中的使用
1、环境配置
设置git的安装位置

点击test

允许版本控制器

选择git

查看版本控制器

创建 .gitignore文件

2、pycharm git使用
commit


一键还原修改

Checkout Revision

切换分支

创建分支



重置分支


撤销提交

revert

3、远程仓库
a、码云 gitee
搜索gitee

Search in repositories 下载

配置gitee



上传到gitee


push


pull


b、github
github配置

共享到github

push和pull与gitee类似