- Git介绍
- 下载原装
- git命令学习小游戏
- Git的作用
- git与svn比较
- Git衍生三种工具
- Git工作流程
- Git常用命令
- 在仓库目录终端下 - 设置用户
- 初始化仓库
- 查看状态
- 工作区变化提交到暂存区
- 暂存区提交到版本库
- 查看版本库的版本信息
- 回退到工作区的某个版本
- 把工作区变化撤销
- Git过滤文件
- 分支操作
- 远程仓库-gitee
- 创建仓库
- remote源操作
- SSH 连接远程仓库
- 协同开发
- 解决冲突
- 变基
- 搭建gitlab
Git介绍
Git是分布式版本控制系统,控制的对象是开发的项目代码
Git衍生三种工具
Git:是一种版本控制系统,是一个命令,是一种工具。空文件夹不会被版本管理
- GitHub:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放,公有仓库免费,部分私有仓库收费,全球最大的开源代码托管平台
- GitLab:是一个基于Git实现的在线代码仓库托管软件,可以通过GitLab自己搭建一个类似于GitHub一样的系统,用在企业内部网络搭建Git私服,用于企业团队内部协作开发
- Gitee:(码云) 是 OSCHINA 推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管,面向互联网开发,分收费和付费,中国最大的开源代码托管平台
Git工作流程
Git的工作流程就是三个区的来回切换:
Git常用命令
使用的时候切到该文件夹的路径下
-
在仓库目录终端下 - 设置用户
# 查看当前git下用户名
git config --global --list
# 全局用户
>: git config --global user.name '用户名'
>: git config --global user.email '用户邮箱'
注:在全局文件 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用
# 局部用户
>: git config user.name '用户名'
-- 用户名
>: git config user.email '用户邮箱'
-- 用户邮箱
注:在当前仓库下的config新建用户信息,只能在当前仓库下使用
注:一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户
-
初始化仓库
初始化会在当前文件夹下创建出一个.git的隐藏文件夹,git配置,版本信息在里面。比如使用我们创建的gittest文件夹来初始化。
>: cd 目标目录
>: git init 文件/文件夹
初始化仓库,会在当前文件夹下创建出一个.git的隐藏文件夹,git配置,版本信息在里面
-
查看状态
查看文件是处于工作区还是暂存区还是版本库
-
工作区变化提交到暂存区
-
暂存区提交到版本库
-
查看版本库的版本信息
git log : 查看版本信息,显示详细信息,变化记录的少
git reflog :查看版本信息,显示简略信息,变化都会记录
-
回退到工作区的某个版本
- 命令:
git reset --hard 版本
- 把暂存区拉回到工作区(绿变红)
-
把工作区变化撤销
Git过滤文件
在仓库路径下(被git管理的文件夹),创建一个 .gitignore 的文件,在文件中写入忽略,文件与文件夹均可以被过滤
分支操作
分支操作就是git 可以创建多条分支,创建完以后,在不通分支上提交版本,不同分支的版本相互不影响
远程仓库-gitee
"""
1)你作为项目仓库初始化人员:
线上要创建空仓库 => 本地初始化好仓库 => 建立remote链接(remote add) => 提交本地仓库到远程(push)
2)你作为项目后期开发人员:(大部分都是公司已经有项目了,你基于这个项目继续开发)
远程项目仓库已经创建成功 => 复制远程仓库到本地(clone) => 进入仓库就可以进行接下来的开发
"""
-
创建仓库
- 把本地代码提交到远程仓库
创建空仓库,如上图
- Git 全局设置
git config --global user.name "用户名"
git config --global user.email "邮箱"
- 如果没有仓库,创建 git 仓库
mkdir luffy_api
cd luffy_api
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/li-gitte/luffy_api.git
git push -u origin "master"
- 如果有仓库了
cd existing_git_repo
git remote add origin https://gitee.com/li-gitte/luffy_api.git
git push -u origin "master"
# git push -u origin master 中-u的意思是,只要执行一遍这个命令,以后执行git push 就等同于git push origin maste,所有-u表示设置一个默认
-
remote源操作
# 1 查看远程仓库
git remote
# 2 添加远程仓库
git remote add 起一个名字 远程仓库地址
git remote add origin https://gitee.com/li-gitte/luffy_api.git
# 3 删除远程仓库
git remote remove origin
# 4 把本地仓库提交到远程仓库
git push 远程仓库名字 分支名
# 第一次:要输入用户名密码,只要输入一次,以后就记录到操作系统上了
# windows:凭证管理,删除
git push origin master
# 5 从远端仓库更新(拉取)代码
git pull 远程仓库名字 分支名
git pull origin master
# 常用的命令
git add .
git status
git commit -m '注释'
git pull origin master
git push origin master
-
SSH 连接远程仓库
https://gitee.com/help/articles/4181
- 注意,如果连接方式改变,需要删除原理的远程仓库,再次添加换成新的连接方式
git remote remove origin # 删除
git remote add origin git@gitee.com:li-gitte/luffy_api.git # 添加
git push oringin master # 提交
ssh-keygen -t rsa -C "xxx@outlook.com"
-t:指定生成密钥的类型,默认使用SSH2d的rsa
-f:指定生成密钥的文件名,默认id_rsa(私钥id_rsa,公钥id_rsa.pub)
-P:提供旧密码,空表示不需要密码(-P ‘’)
-N:提供新密码,空表示不需要密码(-N ‘’)
-b:指定密钥长度(bits),RSA最小要求768位,默认是2048位;DSA密钥必须是1024位(FIPS 1862标准规定)
-C:提供一个新注释
-R hostname:从known_hosta(第一次连接时就会在家目录.ssh目录下生产该密钥文件)文件中删除所有属于hostname的密钥
-
协同开发
一般都是项目的管理员邀请你称为开发者或者观察者···
"""
1)作为开发者,第一次同步项目>: git clone 项目地址
2)保证自己本地有dev分支,且与远程仓库版本同步(没有就自己新建)
3)本地开发的代码,必须add、commit到本地版本库后,才和远程仓库进行交互
4)交互顺序:必须 先拉(pull)后提(push)
5)必须切换到要交互的分支,在与远程同名的分支进行交互,如本地dev与远程dev交互
>: git checkout dev>: git add .
>: git commit -m '本次提交的信息提示'
>: git pull origin dev
>: git push origin dev
"""
解决冲突
-
代码冲突
我们本地提交代码的时候需要将本地的代码更新到最新,所以需要先git pull ···,然后再git push···
- 出现冲突
- 只要我们pull下来就会发现冲突,哪个文件冲突了文件名就会变红
会把远端冲突的代码合并进来
<<<<<<< HEAD # 冲突开始
ALAN is big # 这里是我的代码
=======
ALAN is tobig # 这里是远端代码
>>>>>>> e2d67d7517d66d244f824a32e20d4dd43f4ffc4d # 冲突结束
- 解决冲突
# 查看代码,如果是同样的功能,选择保留同事的或自己的,如果是不同功能,两个代码都保留,如果真的要删同事的代码,交流抉择删除冲突代码,最终解决冲突
git add .
git commit -m '解决冲突'
git pull origin master
git push origin master
-
合并分支冲突
- 比如如果我们在主干master和开发分支dev增加或修改了相同的代码,这样再合并就会冲突
git branch dev
# 加入会冲突的代码
git add .
git commit -m '主分支加入了一行'
git checkout dev
git status
# 加入会冲突的代码
git add .
git commit -m 'dev分支加入了一行'
git checkout master
git merge dev
# 出现下面冲突
<<<<<<< HEAD
HammerZe is big
=======
HammerZe is very big
>>>>>>> dev
- 解决办法和上面的一样,如果代码功能相同选择性删除另外分支的代码,如果代码功能不相同都保留或优化
# 手动解决冲突,再提交
git add .
git commit -m '分支合并冲突解决'
- 线上分支合并
变基
https://www.cnblogs.com/liuqingzheng/p/15328319.html
搭建gitlab
https://zhuanlan.zhihu.com/p/413217715
来源:https://www.cnblogs.com/joyjoyly/p/16794193.html |