郑统京 发表于 2023-7-8 21:55:04

随笔八 :Git保姆教学以及解决冲突

git 基本命令
   -初始化:git init 文件夹名
    -初始化:git init   #当前路径全被管理

   -git status
    -git add a.txt# 把a提交到暂存区
    -git add .# 把当前文件全部提交到暂存区
    -git commit -m'注释,我新增了a' # 把暂存区的所有的文件提交到版本库,
      - 新用户第一次配置一下,在用户目录中找到.gitconfig把email和name存放进去,就可以了提交了
      - 需要增加作者信息
            git config --global user.email "you@example.com" 如果不加--global的话代表只是项目变化了
            git config --global user.name "Your Name"如果不加--global的话代表只是项目变化了
    -git checkout. # 回到提交版本的位置状态
    -git log 查看版本管理日志
    -git reset --hard 版本号
# 红色表示未被管理
# 绿色表示提交到暂存区了
# 忽略文件
    -空文件不被管理,所以为什么要建立包,因为里面有_init_
    -指定某些文件或者文件夹不被git管理
    -在项目跟路径,跟.git文件夹创建一个路径,新建.gitignore,在里面配置
    - 语法
      # 是注释没有用
      文件夹名字,表示文件夹忽略,不被管理
      /dist 表示当前根路径下的dist文件夹,不被管理
      *.py 表示后缀名为py的文件,都被忽略
      *.log* 表示忽略上传的日志和轮值后端日志log1,log2
# 分支操作
    -查看分支 git branch 如果绿色表示在当前分支上
    -创建分支 git branch dev
    -切换分支 git checkout dev/master
    -创建并切换到分支 git checkout -b dev
    -删除分支 git branch -d 分支名
    -合并分支(把其他分支的内容合并到当前分支下面) git merge dev/master 需要将切换到master 然后把去和进来dev git 远程相关[## 1 git远程连接]
1 码云(国内,快)
2 新建仓库的时候,不要勾选Readme初始化这个而仓库
现在什么都没有,新建仓库]
    mkdir lqz_test
    cd lqz_test
    git init
    touch a.txt
    git add a.txt
    git commit -m "first commit"
    git remote add origin https://gitee.com/liuqingzheng/lqz_test.git# 连接远程
    git pushorigin master
已经有了仓库]
    cd b
    git remote add origin https://gitee.com/liuqingzheng/lqz_test.git
    git push origin master
   
远程操作命令]
   -git remote # 查看远程仓库(没有就看不到)
    -git remote add origin https://gitee.com/liuqingzheng/lqz_test.git # 跟远程仓库建立连接
    -git push origin master# 把本地的master分支提交到远程的origin,需要输入用户名和密码(之前存的需要删掉)


# 补充
git工作的指针是通过reset控制指针
git checkout . 是代表回到版本最新的位置

## 2 git项目创始者和开发者
1 项目创始者,如上
2 项目开发者,参与者(换了一台电脑),把代码拉下来继续开发
   -git clone https://gitee.com/liuqingzheng/lqz_test.git
    -能看到完整的版本和日志控制
    -可以回复到任意版本
       -git rest --hard 版本号
    -git checkout . # 表示回到指针指向的版本,因为已经用git reset --hard把指针移动了,所以checkout .就是当前再的版本上的东西
3 本地新增c.txt文件
   -提交到暂存区
    -提交到版本库(没有提交到远程,远程看不到)
    -提交到远程:git push origin master
4 让a文件夹中的代码成为最新的
   -git pull origin master
重点:每次再提交代码之前,一定要先更新代码(拉),如果不拉提不上去]
    -git pull origin master

#3 ssh连接和https连接
1、公司内部大部分用ssh连接
    -领导给你一个git地址(项目地址)
    -你 git clone 地址 到本地
    -改代码,改完了 ---》提交(禁止)
    -ssh配置,以后都不用输密码了
2、配置如何做
    -对称加密(加密和解密用同一套密码)
    -非对称加密(公钥和私钥),公钥加密,私钥解密
    -ssh生成一对公钥和私钥(用命令)
      -https://gitee.com/help/articles/4181
      -ssh-keygen -t rsa -C "lqz@qq.com" 生成到用户家目录的.ssh文件夹下(一个公钥,一个私钥)
      -把公钥复制出来,再码云上配置
3、配置完ssh替代码就不用 git remote add origin 用户名地址
# 补充MD5是属于签名,不可反解

# 4 协同开发
1 协同开发出现冲突,如何解决
2 git pull origin master拉下远程代码,同事和你修改了同一个位置,会冲突,如下
<<<<<<< HEAD
你的代码
=======
别人代码
>>>>>>> origin/master
3 处理方案
    -删除你的代码
    -删除同时代码
    -合并你们的代码

## 5 合并分支出现冲突

1 分支:本地分支,远程分支

2 创建本地分支
   -git checkout -b dev
3 把本地分支提交到远程
   -git push origin dev

# 6 线上回滚
1、切换到master分支查看git log/reflog 选择到到那个版本
2、回滚到某个版本 git reset --hard 版本号
3、强制提交代码 git push origin master -f

# 7 分支合并出现冲突解决
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 -m'1' 推远端
3、线上分支如果出现了,在本地解决了master在提交远端
页: [1]
查看完整版本: 随笔八 :Git保姆教学以及解决冲突