1

Git复习

 2 years ago
source link: https://wendaoit.github.io/2021/10/27/20211027-Git%E5%A4%8D%E4%B9%A0/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Git复习

发表于

2021-10-27 更新于 2021-10-29 分类于 -Git -面试 -JAVA基础

本文字数: 2.4k

系统的整理一下Git

git的诞生

  • Linux之父linus 想开源使用代码仓库,又觉得当时的其他的不好用,种种原因下 自己花费15天 用C语言写了Git
  • 推荐读书《just for fun》linus的自传 ,很有意思

GIT诞生之前有个SVN

  • SVN 是一种集中式的版本控制工具。
  • 所有的客户端将自己的代码上传到中央服务器,中央服务器的版本数据库会保存上传的各个版本的代码,并进行统一管理。
  • 这里注意,客户端本身是不存在版本数据库的,所以,如果中央服务器离线或宕机,则集中式版本控制则无法使用。SVN 是一个增量式的版本控制,它不会将整的保存下来,而只会记录下版本之间的差异,然后按照顺序更新或者恢复特定版本的数据。. 这使得服务端的存储量会非常低。
  • GIT是一个分布式的版本控制工具
  • 每个人的PC都可以有一个版本库;有很好的容灾性;

先安装一个Windows版

按照官网安装即可

用户名+邮箱(最好跟gitee上一样)

git config –global user.name “自己的用户名”

git config –global user.email “自己的邮箱”

最终在C:\Users\ZXH082600\.gitconfig生成一个配置文件

初始化(创建版本库)

git init

在当前文件夹下创建一个git仓库

image-20211027202830969

image-20211027202830969

在创建一个文件 a.txt

ls -l 显示total 0 此时只是新建了一个文件,和git并没有关系

image-20211027204330960

image-20211027204330960

  1. git status 查看文件状态

  2. git add 将文件添加到 暂存区(生成index索引文件)

    • 解决办法git config –global core.autocrlf false
  3. git commit -m “注释” a.txt (每次commit都必须写清楚注释)image-20211027205215099

    image-20211027205215099

查看文件提交记录

git log a.txt

git log –pretty=oneline a.txt

image-20211027211605054

git reset –hard HEAD^

git reset –hard HEAD^ ^^^ (^代表退几步)

git reflog a.txt 查看历史记录的版本号(很详细)

image-20211028100945522

image-20211028100945522

git reset –hard ee58290 (指针指向版本号)

git reset –hard HEAD~4(回退四步)

撤销修改内容(已修改未add的)

git checkout – a.txt

删除某个git文件

  1. git rm c.txt
  2. git commit -m “del c.txt”

谈谈git的三个库(工 暂 本)

image-20211028104132867

image-20211028104132867

Gits实操之分支

  • 创建分支
    • git branch查看分支
    • git branch 分支名
  • 切换分支
    • git checkout 分支名
    • git checkout -b 分支名(创建并切换,如果已存在会报错)
  • 合并分支
    • 先切换到主分支 git checkout master
    • git merge 目标分支名
  • 删除分支
    • 先切换到主分支 git checkout master
    • git branch -d 分支名
  • 冲突一般是指同一个文件同一位置的代码,在两个版本合并时版本管理软件无法判断该保留哪一个版本,因此会提示该文件发生冲突;

分支覆盖冲突

  • 合并时冲突

  • ​ 不可以将其他开发人员的代码 覆盖或者删除;(同步,全部保留;)

    • git diff //可以找到发生冲突的文件和内容
    • 然后修改冲突文件的内容,再次git add 文件 和git commit (无文件名)提交后,后缀merging消失,说明冲突解决

远程服务器冲突

  • 版本不一致 先pull一个最新版本的,diff 冲突文件中的冲突需要手动处理,再重新add/commit/push

idea拉取提交冲突

Gitee云上实操

  • 创建ssh key
    • ssh-keygen -t rsa -C 你自己用户邮箱
    • 成功的话会生成.ssh文件夹
  • 打开pub文件。复制全部,复制到gitee公钥
  • 连通性测试
  1. 先在本地初始化创建一个git库 git init
  2. 在gitee中创建一个同名空仓库
  3. 本地操作提示,git remote与远程建立连接image-20211028153432245

    image-20211028153432245

  4. 从服务器拉最新的
    • git pull origin master
  5. 新员工入职从远程拉项目
    • git clone origin https:xxxxxx.git
    • 然后切换到工作目录,开始操作

新员工入职,如何配合工作+取得代码

git一般工作流程

image-20211028161839922

image-20211028161839922

重点:git fetch origin master查看是否版本冲突
  1. up to date 版本一致,证明没人改过
  2. ahead of 你的比服务端新,可以提交
  3. behind 服务器有更改,不能直接push 必须先pull 最新的,然后把自己的代码加上再重新fetch
  4. pull之后自己手动处理冲突然后再提交

邀请成员协同开发(被动等待邀请)

要点击确认

跨团队协作fork(主动fork)

请求外部专家帮助解决bug

  1. 找到那个项目,点fork
  2. git clone /add/push等
  3. 新建pull requests
  4. 主项目端会收到审查和测试
  5. 点文件查看diff

点击管理–>删除项目—>验证信息

IDEA整合

Git配置忽略文件

Others:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK