git的使用

git的使用

1 git简介

git是版本控制系统 - 它控制的对象是开发的项目代码

代码开发时间轴:需求1 => 版本库1 ==> 需求2 => 版本库2 => 版本库3(版本库1) => 版本库4(版本库2)


它的作用是完成 协同开发 项目,帮助程序员整合代码
1)帮助开发者合并开发的代码
2)如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突



SVN 、 GIT都是同一个人的个人项目
svn(集中式管理),git(分布式管理)
github、gitee(两个都是采用git版本控制器管理代码的公共平台)
gitlab(公司内部的代码仓库)


git的特点:集群化、多分支
git的三个区域:工作区,暂存区,版本库

2 git安装

1.下载对应版本:https://git-scm.com/download
2.安装git:在选取安装路径的下一步选取 Use a TrueType font in all console windows 选项


安装完成后右键就出现了	git bash here	选项

3 git的工作流程

git示意图

4 git基本命令

-git init 文件夹名	# 初始化
-git init 		# 管理当前路径

-git status		# 查看当前文件夹的状态(红色为修改,未进入暂存区,绿色为在暂存区)


-git log   	# 查看版本管理日志
-git reflog # 查看版本管理日志(两种方法的信息不相同)


-git add a.txt  # 把a.txt提交到暂存区
-git add .		# 把当前路径内所有文件提交到暂存区


git config --global user.email "lqz@qq.com"		# 配置作者信息(全局C:Userswwh.gitconfig)
git config --global user.name "lqz"		# 配置作者信息(全局)

git config  user.email "egon@qq.com"		# 配置作者信息(局部:当前项目)
git config  user.name "egon"		# 配置作者信息(局部:当前项目)



-git commit -m '注释,我新增了a'      # 把暂存区的所有文件提交到版本库


-git checkout .   # 回滚到最后一次提交版本库的状态


-git reset --hard 版本号	
# 版本号可以从git log查看:	commit 408c30e612f5f77bdfcccf70e3426faf6c01ec98
# 或git reflog查看:	408c30e HEAD@{11}: commit: 增加了登录,注册
# 408c30e612f5f77bdfcccf70e3426faf6c01ec98即为版本号,可以只输入部分




# 忽略文件
# 用于指定某些文件或者文件夹不被git管理
# 用法:
# 1.在项目根路径,跟.git文件夹一个路径,新建	.gitignore.	文件
# 2.在文件中写要忽略的文件/文件夹名字
    /dist 表示根路径下的dist文件夹,不被管理
    *.py   表示后缀名为py的文件,都被忽略(*表示任意)
    *.log*
    
    
    
# 分支操作
# 查看分支 git branch   查看所有分支,分支显示为绿色就表示:当前在该分支上
# 创建分支 git branch 分支名
# 创建并切换到 git checkout -b 分支名
# 删除分支 git branch -d 分支名
# 切换分支 git checkout 分支名
# 合并分支 git merge 分支名  

# 把dev分支合并到master分支:
	1.切换到master分支
    2.执行合并dev分支的命令 git merge dev  
    
    
    
注意点:
空文件夹不会被管理

5 git远程连接

git可以进行远程连接,将代码上传到远程服务器,进行协同开发

5.1 git项目创始者和开发者

git项目的创始者和开发者的操作不同

5.1.1 项目创始者操作

# 1 推荐使用码云(国内网站,网速快)


# 2 新建项目的码云仓库时,不要勾选Readme初始化这个仓库(会导致一些问题)


# 3 如果本地没仓库:在本地创建仓库
    mkdir 文件夹名
    cd 文件夹名
    git init	# 管理该文件夹
    touch a.txt		# 创建a.txt
    git add a.txt	# 提交到暂存区
    git commit -m "first commit"	# 提交到本地版本库
    git remote add origin https://gitee.com/liuqingzheng/lqz_test.git  
    # 连接远程(可以使用https或ssh)
    git push  origin master		# 将本地版本库的master分支上传到远程master分支
    
    
# 4 如果本地有仓库:使用该仓库
    cd b	# 进入该仓库
    git remote add origin https://gitee.com/liuqingzheng/lqz_test.git	# 连接远程
    git push origin master	# 将本地版本库的master分支上传到远程master分支
    

# 5 git 远程操作命令
	-git remote 	# 查看远程仓库(没有就看不到)
    -git remote add origin https://gitee.com/liuqingzheng/lqz_test.git # 跟远程仓库建立连接
    -git push origin master  # 把本地的master分支提交到远程的origin,需要输入用户名和密码

5.1.2 项目开发者操作

# 1 项目开发者,需要把代码拉下来继续开发
	-git clone https://gitee.com/liuqingzheng/lqz_test.git	# 连接远程仓库并将代码克隆到本地
    	-能看到完整的版本和日志控制
    	-可以回复到任意版本git rest --hard 版本号
    	-git checkout . # 表示回到指针指向的版本,而执行git rest --hard后指针移动到了该版本,所以这时执行checkout .不会改变
        
        
# 2 本地新增c.txt文件
	-提交到暂存区	git add .
    -提交到版本库(该版本库是本地,不是远程)
    -提交到远程:git push origin master
    
    
# 3 将本地代码更新到远程版本库的版本
	-git pull origin master
    
    
# 4 重点:每次再提交代码之前,一定要先更新代码(拉),如果不拉,无法上传代码

5.2 ssh连接和https连接

远程仓库可以使用https连接,也可以使用ssh连接

https需要用户名密码登录,并配置

ssh需要配置公钥

# 1 公司内部大部分用ssh连接
	-领导发一个git地址(项目地址)
    -通过执行git clone 地址,将代码下载到本地
    -改代码,改完后直接提交会被禁止:因为无权限提交
    -需要管理员进行ssh配置,在代码仓库内加入你的公钥
    
    
# 2 配置如何做
生成一对公钥和私钥(用命令)
    -https://gitee.com/help/articles/4181(生成公钥攻略)
    -ssh-keygen -t rsa -C "lqz@qq.com" 会将公钥私钥生成到 用户 家目录 的.ssh文件夹下
    -复制公钥,在码云上配置
 

# 远程操作有三个命令
git pull
git push
git feacth(一般不用,与pull类似)

5.3 通过pycharm操作git

# 1 安装git
# 2 在pycharm中配置,setting--->git--->git.exe的地址
# 3 git clone --->等同于下图
# 4 使用pycharm创建本地分支(见下图)
# 5 拉取代码,如下图
# 6 push代码,如下图

1595301976791

1595314048881

1595314084159

1595314121443

1595314167062

1595314245430

5.4 协同开发

5.4.1 代码下拉出现冲突

# 1 协同开发可能出现冲突,例如执行git pull origin master,拉下远程代码,同事和你修改了同一个位置,就会产生冲突

# 2 冲突的提示效果,如下,这时就需要进行协商,进行处理

<<<<<<< HEAD
你的代码
=======
同事的代码
>>>>>>> origin/master


# 3 处理方案
   -删除你的代码
   -删除他的代码
   -合并你们的代码

5.4.2 合并分支出现冲突

# 分支可以分为本地分支和远程分支,把本地分支提交到远程时就可能产生冲突
# 这时的处理方式与上面一样,进行协商处理
# 1 远端创建一个dev分支
	-在远端直接创建
    -本地创建,提交到远端
    git checkout -b dev
    git push origin dev
# 2 本地新建一个dev_bug分支
	-dev_bug分支改了文件
    -dev分支改了同样的文件
    -合并就出冲突
    -git merge dev_bug (在dev分支上操作)
    -解决冲突(删你的,同事的,合并起来)
    -git add .  git commit 
    -正常了,冲突解决
 # 3 手动线下合并代码并提交到远程
	-git checkout master
    -git merge dev 
    -如果出冲突,解决
    -git add .
    -git commit 
    -git push..

5.4.3 线上分支合并

1595315172363

1595315293642

# 如果提示可自动合并,表示合并后不会有冲突,正常操作即可

5.5 线上回滚

出现意外状况时,可以进行线上回滚

1 切换到master分支

2 回滚到某个版本  git reset --hard  版本号

3 强制提交代码 git push origin master -f		# 强制提交

5.6 git的变基

git rebase
变基可以让合并后的版本的节点变得整洁,清晰

如果不变基,所有dev的节点都会合并到master中,导致master分支不清晰
原文地址:https://www.cnblogs.com/achai222/p/13348016.html