文章目录
前言
开发是一个团队的工作,大部分软件都是多个开发者共同编写的,在编写的时候会遇到代码开发过程中需要控制代码版本,以及远程协同开发代码的需求。这个时候就可以使用git来完成集群化、多分支的开发。
一、git的安装
点击进入下载:git官方地址
git 的安装十分简单,只需要选择安装目录,其余选项默认即可。
二、git的运作原理
三、初始化git仓库
当你需要制作一个项目仓库时,创建对应文件夹,然后cd到该文件夹下
git init # 输入该指令是以当前目录为仓库
git init 仓库名 # 会新建一个文件夹作为仓库
创建完仓库后会出现一个.git的隐藏文件夹
.git文件夹下有git的版本控制对应的代码等,所以仓库再不断迭代代码后该文件夹会越来越大。
四、设置全局/局部用户
git config --global user.name '用户名' 全局设置,输入后会在
git config --global user.email '用户邮箱'
git config user.name '用户名' 局部设置,只针输入指令的对该仓库
git config user.email '用户邮箱'
一个仓库如果有局部用户则上传和拉取都会优先使用局部用户
设置完后在C:\Users\用户名下会生成一个.gitconfig的文件,配置的用户名和邮箱会存放在该文件夹中,后续配置的仓库连接也会在其中
五、git常用指令
指令 | 作用 |
---|---|
git status | 查看仓库状态 |
git add ‘需要提交的单个或者多个文件’ | 将工作区添加到暂存区 |
git commit -m ‘注释内容’ | 将暂存区内容提交到版本库 |
git log | 查看版本管理信息:如谁什么时候提交了代码 |
git reflog | 查看简略版的版本管理信息 |
git reset --hard | 将工作区回退到某个版本 |
git reset HEAD | 将暂存区内容拉回工作区 |
git checkout | 将当前工作区的修改和删除回退到之前未修改和删除的状态,对新增无效 |
1.git status
git status 查看仓库状态
红色文件表示在工作区
绿色文件表示在暂存区
绿色变回白色的文件表示在版本库
2.git add
git add ‘需要提交的单个或者多个文件’ 将工作区添加到暂存区
git add 暂存区文件.txt # 将一个文件添加到暂存区
git add 暂存区文件.txt 版本仓库文件.txt # 将多个文件添加到暂存区,多个文件之间使用空格隔开
git add . # 将该目录下的全部文件添加到暂存区
3.git commit
git commit -m ‘注释内容’ 将暂存区内容提交到版本库
注释内容必须填写
git commit -m '提交了一个文件' # 将暂存区文件全部提交到版本库中
4.git log
git log 查看版本管理信息:如谁什么时候提交了代码
5.git reflog
git reflog 查看简略版的版本管理信息
6.git reset --hard
git reset --hard 将工作区回退到某个版本
版本号可以在git log或者git reflog中查看,版本号只要能取别出来就行,例如只输入版本号前几个只要能识别到唯一一个就可以使用
回滚到指定版本:
回滚到上一个版本:
git reset --hard HEAD^
git reset --hard HEAD~
回滚到上三个版本:
git reset --hard HEAD^^^
git reset --hard HEAD~3
回滚到指定版本号的版本:
git reset --hard 版本号 (重点)
eg: git reset --hard 35cb292
7.git reset HEAD
git reset HEAD 将暂存区内容拉回工作区,使用该指令可以把HEAD去掉使用
git add a.txt
git status
git reset HEAD # 退回全部暂存区内容到工作区
git status
git reset HEAD a.txt #退回暂存区中的某个文件到工作区,退回多个时用空格隔开
8.git checkout
git checkout 将当前工作区的修改和删除回退到之前未修改和删除的状态,对新增无效
ls
git status
rm -rf a.txt
ls
git checkout a.txt #恢复某个文件的删除和修改使用空格隔开可以对多个,末尾用.可以指定所有
六、过滤文件
在仓库目录下新建一个.gitignore文件在其中写目录或者文件或者模糊匹配,匹配到的不会被提交到远端仓库。
过滤文件内容:
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤
git 不管理空文件夹,文件夹下有文件,才会被管理
七、多分支开发
1.创建分支
git branch 分支名
2.查看分支
git branch
3.切换分支
git checkout 分支名
4.创建并切换到分支
git checkout -b 分支名
5.删除分支
git branch -d 分支名
6.查看远程分支
git branch -a
7.合并分支
git merge 分支名
将分支名所对应的的分支合并到目前访问的分支上
8.删除远程分支
git push origin :dev 或 git push origin --delete dev
9.推送本地分支到远程分支(远程分支与本地分支同名)
git push origin dev:dev 左边为远程分支名:右为本地分支名
八、https链接远程仓库
git init 初始化仓库
git add . 工作区加入暂存区
git commit -m 'sss' 暂存区加入版本仓库
git remote add origin 仓库https链接 连接远程仓库
git push origin master 提交版本仓库到远程仓库
git remote #查看有哪些远程仓库
git remote add 源仓库名 仓库https链接 #连接远程仓库
git remote remove 名字 # 删除远程仓库的关联
九、ssh链接远程仓库
第一步生成ssh密钥:
gitee官方参考地址
第二步链接远程仓库
git remote add origin ssh链接
git add . 工作区加入暂存区
git commit -m 'sss' 暂存区加入版本仓库
git push origin master 其中origin是自己设置的源名、master是分支名
上传过程会询问
Are you sure you want to continue connecting (yes/no/[fingerprint])?
此时输入yes即可
十、协同开发
协同开发很容易出现冲突,出现时需要手动解决
第一步:你到公司(gitee,gitlab),注册账号
第二步:把你的公钥配置在你的gitee,gitlab账号上
第三步:把你的邮箱发给项目的管理者(你老大)
第四步:他把你账号添加为开发者---》你就可以读写项目了
第五步:你要把公司项目拉到本地
方式一:直接下载zip
方式二:在命令行中执行
git clone 源仓库地址
第六步:改代码,提交 (ssh,https提交)
git add .
git commit -m '注释'
#在提交之前一定要拉一下代码
git pull origin master # 可能会有冲突
git push origin master
十一、冲突解决
冲突出现的原因:
1.分支合并
2.多人在同一分支开发
冲突出现的样子
print('lqz')
<<<<<<< HEAD
=======
print('sss')
>>>>>>> 732f1921741fa4d6153d1c4b7eb0302a509838d9
先把冲突的地方删除,剩下的代码分析,需要留哪些,到底是留我的代码,还是留其他开发者的代码(删其他开发者的,跟其他开发者说一声),如果删自己的,不用告知别的开发者
十二、分支合并冲突
操作流程
git branch dev
git checkout dev
在代码中增加一行
git add .
git commit -m '提交了'
git checkout master #加的一行看不到
在代码中增加同一行
git add .
git commit -m '提交了'
# 把dev合并到master中
git merge dev #冲突了
#解决冲突
git add .
git commit -m '提交了'
十三、线上分支合并
操作步骤
- 在远端新建dev分支
- 在本地新建dev分支,切换到dev分支
- 执行git pull origin dev #把远端的dev拉倒本地的dev
- 修改代码
- git add .
- git commit -m ‘注释’
- git pull origin dev # 先拉
- git push origin dev # 把本地当前在分支(dev)推到远端dev
- 远端的master和dev代码就不一样了
- 远端合并代码
- 提交pr
- 远端仓库拥有者通过就合并了