git使用指南

git软件

  • 下载安装git软件
  • 安装成功后,任意路径位置,鼠标右键出现Git-Gui和Git-Bash图标,即安装成功。
  • 在任意路径(文件夹下)进入Git-bash环境,开始git之旅吧。

git版本控制使用流程

  • 进入要管理的文件夹

  • 执行初始化命令

    git init
    
  • 管理目录下的文件状态

    git status
    # 新增的文件和修改过后的文件都是红色的
    
  • 管理制定文件(红变绿)

    git add 文件名
    git add .
    # . 表示管理所有文件
    
  • 个人信息配置:用户名和邮箱【第一次使用需要】

    # 全局配置
    git config --global user.mail "your@exmaple.com"
    git config --global user.name "yourname"
    
    # 局部配置:当前项目
    git config user.mail "your@exmaple.com"
    git config user.name "yourname"
    
  • 生成版本

    git commit -m '描述信息'
    
  • 产看版本记录

    git log
    

忽略文件

-空文件夹不被管理
-指定某些文件或者文件夹不被git管理
-在项目根路径,跟.git文件夹一个路径,新建.gitignore.,在里面配置
- 语法:
	# 号是注释,没有用
    文件夹名字,表示文件夹忽略,不被管理
    /dist 表示根路径下的dist文件夹,不被管理
    *.py   表示后缀名为py的文件,都被忽略
    *.log*

git三大区域

工作区:编写代码的地方
	- 已经管理的文件(空白)
	- 新文件/修改为文件(红色)

暂存区:暂时管理起来的将要推送到版本库		# 通过add将工作区红色的文件推送到暂存区
	
版本库:存放版本的地方		# 通过commit命令将版本推动到版本库

git回滚

# 回滚到之前的版本
git log
git reset --hard 版本号(形式1)

# 回滚到之后的版本
git reflog
git reset --hard 版本号(形式2)

三区域切换

分支和工作流

  • 查看分支
git branch
  • 创建分支
git branch 分支名称
  • 切换分支
git checkout 分支名称
  • 合并分支
git merge 要合并的分支
# 注意:切换分支再合并;站在当前分支上,把其他分支合并过来
  • 删除分支
git branch -d 分支名称
  • 工作流

实战中至少保留两个版本,一个是上线环境下的稳定版,一个是开发环境下的开发版。


托管代码Github

  • 使用github:官网注册账号

  • 新建远程仓库

  • 在家里上传代码(第一次推送时可能需要提供github账号)
1. 给远程仓库起别名 origin
	git remote add origin 远程仓库地址
2. 向远程仓库推送代码
	git push -u origin 分支
  • 到公司新电脑上第一次获取代码
1. 克隆远程仓库代码
	git clone 远程仓库地址(内部已实现git remote add origin 远程仓库地址)
2. 切换分支	(clone会拷贝所有的分支)
	git checkout 分支
  • 在公司进行开发
1. 切换到dev分支进行开发
	git checkout dev
2. 把master分支合并到dev [仅一次]
	git merge master
3. 修改代码
4. 提交代码
	git add .
    git commit -m '...'
    git push origin dev
  • 回家继续写代码
1. 切换到dev分支进行开发
	git checkout dev
2. 拉代码
	git pull origin dev
3. 继续开发
4. 提交代码
	git add .
    git commit -m ',,,'
    git push origin dev
  • 在公司继续开发
1. 切换到dev分支进行开发
	git checkout dev
2. 拉代码
	git pull origin dev
3. 修改代码
4. 提交代码
	git add .
    git commit -m '..'
    git push origin dev
  • 开发完毕,要上线
1. 将dev分支合并到master,进行上线
	git checkout master
    git merge dev
    git push origin master
2. 把dev分支也推送到远程
	git checkout dev
    git merge master
    git push origin dev

忘记推送代码到github云端

如果在A电脑上开发的新功能忘记推送到github云端,此时在B电脑上是不发pull到新功能的代码。

这种情况下不可能在B电脑上重新开写已经开发完成的那部分代码,可以接着编写一些其他的代码后推送到github

然后回到A电脑上,pull新的代码。合并时可能出现冲突,此时手动处理冲突即可。

GitHub Desktop

  • 图形界面的git命令操作软件,
  • 告别单调的git命令行界面,鼠标点点点即可完成所有的git命令。
  • 完美无缝对接Github.

补充

#  新建仓库的时候,不要勾选Readme初始化这个而仓库
	不勾选的表示一个初始干净的项目,里面没有任何文件,并且会有连接此仓库的链接(https\ssh)
    
    
#  git 远程操作命令
	-git remote 	# 查看远程仓库(没有就看不到)
    -git remote add origin https://gitee.com/liuqingzheng/lqz_test.git 
        # 跟远程仓库建立连接,并且起别名origin
    - git clone https://gitee.com/liuqingzheng/lqz_test.git 
        # 将远程仓库拷贝克隆到本地(所有的分支版本全部拷贝下来)
        # 需要注意拷贝下来默认只有master分支,但拷贝前仓库有的分支只有在checkout切换分支后才能看得到
    -git push origin master 
    # 补充:
    	- 把本地的master分支提交到远程的origin,如果使用的是https,需要输用户名和密码

        
# 重点:每次再提交代码之前,一定要先更新代码(拉),如果不拉提不上去

1595315082819

ssh连接和https连接

# 1 公司内部大部分用ssh连接
	-领导给你一个git地址(项目地址),你给领导一个公钥
    -你 git clone 地址  到本地
    -改代码,改完了---》提交
    
    -ssh配置,以后都不用输密码了
# 2 配置如何做
	-对称加密(加密和解密用同一套秘密)
    -非对称加密(公钥和私钥),公钥加密,私钥解密
    
    -生成一对公钥和私钥(用命令)
    	-https://gitee.com/help/articles/4181
        -ssh-keygen -t rsa -C "lqz@qq.com" 生成到用户家目录的.ssh文件夹下(一个公钥,一个私钥)  
        -把公钥复制出来,再码云上配置公钥
 
# 跟远程操作有三个主要命令
git clone【仅第一次拷贝仓库使用】
git pull
git push
git feacth(一般不用,他跟pull是一个东西,当作不知道)

pycharm操作git

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

1595314048881

1595314084159

1595314121443

1595314167062

1595314245430

协同开发出现的冲突

所有人在dev分支上开发提交代码,每次都需要先从远程拉下最新的代码,然后再修改编写代码,最后再向远程仓库提交代码;

提交代码时,由于多人可能同时操作一个位置的代码,可能出现代码的冲突;那后提交代码的同时就需要解决提交代码冲突的问题。

解决代码冲突的方式很简单,就是直接找到冲突的位置,手动选择合适的代码。删除其他冲突的代码,然后从重新提交。

#  git pull origin master  拉下远程代码,同事和你修改了同一个位置,会冲突,如下
<<<<<<< HEAD
你的代码
=======
别人代码
>>>>>>> origin/master

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

分支合并出现冲突解决

遵循git工作流(git flow),在合并不同分支的代码是就会出现冲突。解决的方式和同一分支上协同开发时出现的代码冲突是相同的。

一般要在线下完成合并时出现的冲突,合并后再提交到远程仓库。

# 补充:如何在远端仓库创建一个新分支,如dev分支
	- 直接在远端仓库通过在线的方式新建一个dec分支
    - 在本地基于master创建一个dev分支,然后通过push的方式推送到远端。
    git push origin dev	# 站点本地任何站点都可以执行次命令来推送本地dev到远端dev

解决分支合并出现的冲突也可以在线上完成,不过基本思路和线下的一致,甚至可以再转到线下完成合并出现的冲突,解决后再推送的远端。

# 线上合并时,如果看到可自动合并,表示合并后不会有冲突,正常操作即可
# 测试人员点通过,直接合并即可

线上分支合并

1595315172363

1595315293642

线上回滚

# 1 切换到master分支
# 2 回滚打某个版本  git reset --hard  版本号
# 3 强制提交代码 git push origin master -f

pycharm找回误删,修改的东西

1595314881189


rebase(变基)使git的提交记录变的简洁

rebase应用场景1

将多条提交记录整合成一条记录。合并记录时建议不要合并那些已push到远程仓库的记录。避免造成版本不一致的混乱。

rebase应用场景2

将分支上的版本插到master主线上,形成一条线的结构,而不是merge形成的分支的结构

rebase应用场景3

代码忘记推云段端时的

注意事项

git rebase 冲突

解决冲突

git rebase -- continue

posted @ 2020-05-14 22:41  the3times  阅读(127)  评论(0编辑  收藏  举报