Git指南

89 阅读5分钟

一. 简介

  • Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

  • Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

通过Git可以完成:

  • 代码管理
  • 版本控制
  • 团队协作

二. Git 常用命令

退出

  • Esc键,shift+":",wq
  • q

1. 设置用户签名

签名的作用就是用来标识用户,以区分不同的开发人员

image.png

  1. C盘下——>用户——>裴——> .gitconfig(记事本打开)

可以看到:

image.png

2. 初始化本地库

  • 我们希望一个文件夹被 git 管理的话,那么就要在一个文件夹下进行 git 初始化

  • 找到一个希望被 git 管理的文件夹

  • 在文件夹内单击鼠标右键,点开 Git Bash Here

  • 输入指令

# git 初始化的指令
$ git init
  • 然后文件夹内会多一个 .git 的文件夹(这个文件夹是一个隐藏文件夹)

  • 这个时候,我的这个 git_demo 文件夹就被 git 管理了

    • git 不光管理这一个文件夹,包括所有的子文件夹和子文件都会被管理
  • 注意: 只有当一个文件夹被 git 管理以后,我们才可以使用 git 的功能去做版本管理

    • 也就是说,我们必须要把我们电脑中的某一个文件夹授权给 git
    • git 才能对这个文件夹里面的内容进行各种操作
    • git init 就是在进行这个授权的操作

3. Git的工作区,暂存区,版本库,托管平台

image.png

不用联网(本地电脑)

  • 工作区
  • 版本库 .git
    • 暂存区
    • master

联网

  • 托管平台
    • 局域网(内网,公司内部使用)
      • gitlab
    • 公网(外网)
      • gitlab
      • github
      • gitee 码云

4. Git 提交命令

git add (提交到暂存库)

把工作区的文件往暂存区拷贝了一下

  • 我们要放入暂存区,要使用 git add 指令

  • 把单独一个 文件 放在暂存区

    # 把文件夹下的 index.txt 文本放在暂存区
    $ git add index.txt
    
  • 把单独一个 文件夹 放在暂存区(暂存区不能存放空文件夹)

    # 把文件夹下的 ceshi文件夹 放在暂存区
    $ git add ceshi/
    
  • 所有文件 都放在暂存区

    # 把文件夹下所有的内容都放在暂存区
    $ git add --all
    ​
    # git add --all 有一个简单的写法
    $ git add .
    (自动区分哪个文件修改了,会把修改的文件添加到暂存区)
    
    • 全部存放的时候使用上面两个指令哪个都行

git status查看此时目录下的状态

image.png

git rm --cached 1.txt 把文件从暂存区删除

  • 然后可以再git status查看是否删除成功(红色)

image.png

git commit (暂存区提交到历史区master)

# 把暂存区的内容放到历史区
$ git commit -m "我是第一个版本"

我们使用 git log 这个指令查看版本信息(指针往下,也就是现存的记录)

# 查看当前历史区版本信息
$ git log

我们使用 git reflog 这个指令查看所有的操作记录

# 查看当前历史区版本信息
$ git reflog

git reset --hard (硬回退)

  • 我们使用 git reset --hard 版本编号 进行历史回退

    # 回退到上一次提交的版本
    # 就是把hard HEAD这个指针指到你回退的版本
    
    $ git reset --hard HEAD^
    ​
    # 回退到上上次提交的版本
    $ git reset --hard HEAD^^
    $ git reset --hard HEAD~2
    
    # 如果后悔回退了,那就
    $ git reset --hard 504b513(操作码前六位)
    

> image.png

git reset --soft (软回退,推荐)

可用于“注释修改”,“bug修复”...

image.png

git revert HEAD "注释" (推荐)

image.png

  • git reset 是回滚到对应的commit-id,相当于是删除了commit-id以后的所有的提交,并且不会产生新的commit-id记录,如果要推送到远程服务器的话,需要强制推送-f
  • git revert 是反做撤销其中的commit-id,然后重新生成一个commit-id。本身不会对其他的提交commit-id产生影响,如果要推送到远程服务器的话,就是普通的操作git push就好了

三. 使用 Git 做分支管理(离线状态下)

1. 初识分支

  • git 分支,就是我们自己把我们的整个文件夹分成一个一个独立的区域

  • 比如我在开发 登录 功能的时候,可以放在 login 分支下进行开发

    • 开发 列表 功能的时候,可以放在 list 分支下进行开发
    • 大家互不干扰,每一个功能都是一个独立的功能分支
  • 这样开发就会好很多

  • git 在初始化的时候,会自动生成一个分支,叫做 master

  • 是表示主要分支的意思

  • 我们就可以自己开辟出很多独立分支

2. 分支操作总结

  • git branch name 创建分支
  • git branch 可以查看当前处于哪个分支中,以及所有分支列表
    • 前面有个 * 号,并且有高亮显示的,表示你当前所处的分支
  • git checkout login 切换到login分支
  • 然后我们在整个分支上进行 登录 功能的开发

  • 开发完毕以后,我们就在当前分支上进行提交

  • 提交以后我们进行分支切换

    • 发现 master 上面还是最初始的状态
    • login 分支上有我们新写的 登录 功能的代码
  • 我们按照分支把所有功能都开发完毕了以后

    • 只要把所有代码都合并到 master 主分支上就行了
  • git merge login 合并分支(与切换搭配使用)
# 切换到 master 分支
$ git checkout master

# 把 login 的内容合并到自己的分支
$ git merge login
  • 这个时候,我们刚才在 login 上开发的东西就都来到了 master 主分支上

  • 如果是有多个分支的话,那么所有的最后都合并到 master 分支上的时候

  • 我们的主分支上就有完整网站的所有页面

    • 各个分支上都是单独的页面和功能
  • git branch -d name 删除分支

这个时候我们合并了之后,开辟的分支就没有什么用了,就可以删除分支了

# 先切换到别的分支
$ git checkout master

# 删除 login 分支
$ git branch -d login

四. Git 团队协作

1. 新建仓库

image.png

2. 操作命令

仓库

  • git remote add origin 仓库地址添加仓库地址
  • git remote -v查看仓库变量和地址
  • git remote remove origin 删除仓库地址

上传

  • 我们使用 git push 指令来上传
# 上传内容
$ git push -u origin master
# 表示把内容上传到 origin 这个地址
# master 是上传到远程的 master 分支
  • 如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。

拉取(用于更新)

  • 如果在远程库修改了,想同步给本地,就使用这个来拉取到本地
  • git pull
# 拉取远程最新代码
$ git pull
# 写过-u的话,这里就可以简写了

克隆

  • 给一个仓库地址,可以把所有文件克隆一遍
  • git clone 仓库地址
  • image.png

删除远程分支

  • git push origin :分支名
  • 让空去覆盖,也就是删除

跨团队协作

image.png

.gitignore

  • 如果有的文件(比如nodemoudle,或者一些测试文件等等),你修改了但是并不想上传到远程库提交,那就新增一个.gitignore文件,把你不需要上传的文件或文件夹名放上去
  • 最后你这个文件里写的文件不会被上传,.gitignore会被上传
  • 但是如果这个文件已经被你存到暂存区,你再往.gitignore里写是没有用的

image.png