公众号:uncle39py

V1

2022/05/30阅读:28主题:默认主题

一文搞懂git

一 . 使用git的场景

git的本质就是本地仓库与远端仓库分别存储着一个个历史版本的文件;狡兔三窟,历史留存翻旧账

1.防止硬盘坏了

2.代码在摸索阶段会被改的面目全非,有头绪之后希望找回最初的代码从头来

3.协同开发时,各自开发各自的模块互不影响,不至于被后上传的人覆盖掉

4.追溯代码编写人和时间

二 . git简介

git是分布式的,虽有个中心服务器,但其作用是方便交换大家的修改而已,称其为远程仓库;

每个人的电脑,都有一个本地仓库;

三 . 安装&配置

下载地址:https://git-scm.com/download

安装时全部选默认配置即可

Git Bash:是git提供的命令行工具

基本配置

1.打开Git Bash设置用户信息

git config --global user.name "egg"

git config --global user.email "123@qq.com"使用虚拟邮箱即可

git config --global user.name 查看配置

git config --global user.email 查看配置

2.为常用命令设置别名(常用命令参数很多,设置别名方便使用)

2.1 打开一个Git Bash执行touch ~/.bashrc(~代表用户家目录,创建一个.bashrc的文件)

2.2.bashrc文件里面输入如下内容

#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'

2.3打开Git Bash执行source ~/.bashrc

3.解决Git Bash乱码问题

3.1Git Bash执行git config --global core.quotepath false

3.2 (git的安装目录)/etc/bash.bashrc 文件最后加入下面两行

export LANG="zh_CN.UTF-8" 
export LC_ALL="zh_CN.UTF-8"

四 . 本地仓库

1.获取本地仓库

1.1 初始化

将任意空目录(例如test)作为本地仓库,目录内右键打开GitBash窗口,执行git init命令,如果创建成功后可在文件夹下看到隐藏的.git目录.

1.2

git add .目录下所有文件都纳入暂存区(也可单个文件)

git commit -m '提交,记录到日志信息(改了什么)' 暂存区提交到本地仓库的当前分支; (重要,提交一次就有了一个版本,一个对应的ID,一个白纸黑字的画押,一个卖身契)

git status 查看工作区 暂存区的状态

git log查看提交日志(经过前面的别名配置后,我们使用git-log)

git reset --hard commitID版本切换,commitID 可以使用 git-log 或 git log 指令查看

git reflog这个指令可以看到已经删除的提交记录

1.3添加文件到忽略列表

有些文件比如日志文件等无需纳入git管理,可以在工作目录 中创建一个名为 .gitignore 的文件(文件名称固定),在里面填写忽略的文件名

2.分支

分支就是仓库,一个分支就代表一个仓库,比如要修改bug都会复制一份出来修改,修改好后在替换回去,这个备份就是一个分支,修改的过程中不影响主分支;最后无论有多少个分支,最终只存在一个正统分支:master

就像一个皇帝有好几个儿子,他们都有可能继承大统,但是最终只有一个,他的名字叫太子(master分支),其他儿子都是给太子做磨刀石.

git branch查看本地分支

git branch 分支名创建本地分支

git checkout 分支名切换到其他分支上

git checkout -b 分支名创建并切换分支(b:build)

git merge dev01将dev01分支合并到当前分支上来

git branch -d dev 删除分支时,需要做各种检查

git branch -D dev 不做任何检查,强制删除

2.1解决冲突

如果两个分支对同一文件的同一行做了修改,在合并分支时,就会产生冲突.

解决冲突的步骤如下:

  • 手动处理文件中冲突的地方
  • 将解决完冲突的文件加入暂存区(git add .)
  • 提交到仓库(git commit -m '...')

总结:改成自己想要的样子,然后add,commit一下

2.2分支使用的原则与流程
  • master 生产分支
  • dev 开发分支,从master来,最终合并到master

五 . 远程仓库

互联网上提供的一些代码托管服务:

  • gitHub( 地址:https://github.com/ )
  • 码云(地址: https://gitee.com/ )
  • GitLab (地址: https://about.gitlab.com/ )

1.以码云为例,注册登陆后,创建远程仓库 2.创建后可以看到仓库地址

3.配置SSH公钥(作用:证明身份合法性)

3.1 生成SSH公钥

ssh-keygen -t rsa(如果公钥已存在,选择自动覆盖,其他情况不断回车)

3.2 获取公钥

cat ~/.ssh/id_rsa.pub生成的公钥放在用户目录下的id_rsa.pub文件里面了

ssh -T git@gitee.com验证配置是否成功

4.操作远程仓库

4.1 添加远程仓库(add):在本地告诉git你的远程仓库叫什么,是哪个地址

git remote add <远端名称> <仓库路径>

git remote add origin git@gitee.com:liuqing/git_test.git

origin 是默认的远程仓库名,仓库路径直接黏贴SSH路径

4.2查看远程仓库 git remote

4.3推送到远程仓库

  • 推送到远端仓库origin,内容是当前分支master: git push origin master:master

  • 写法:git push 远端名称 本地分支名:远端分支名

  • 如果分支名字一致则名字可以省略:git push origin master

  • git push --set-upstream origin master:master,参数--set-upstream表示将内容推送到远端的同时,建立起和远端分支的关联关系,此后推送的时候只需写git push即可;

4.4 将已有的远端仓库内容克隆到本地

git clone 仓库路径SSH 本地目录

第一次克隆到本地,后续操作只针对新增或修改的内容来操作

4.5 把远端仓库里的更新都抓取到本地

  • git fetch只抓取不合并,需要手动使用 git merge origin/master来合并(将远端仓库的master分支合并到本地当前分支)

  • git pull抓取并合并,相当于fetch+merge

  • git push --set-upstream origin master:master将关联关系创建好后,git fetch git pull直接使用即可

4.6 解决合并冲突

A、B两人修改了同一个文件同一行位置的代码,此时会发生合并冲突。A用户在本地修改代码后先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库;此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支;在B用户拉取代码时,因为A、B修改了同一个文件的相同位置代码,故会发生合并冲突,解决方式:

第一步:拉取数据:git pull

第二步:手动处理文件中冲突的地方

第三步:将解决完冲突的文件加入暂存区(git add .)

第四步:提交到本地仓库(git commit -m '...')

第五步:提交到远程仓库 git push

(下一篇:如何在pycharm和idea上使用git)

分类:

后端

标签:

Git

作者介绍

公众号:uncle39py
V1