GIT 企业开发

最近找实习,在完善简历,遂发一发存货,有待持续完善,我认为这部分非常的有意义

1. 基本操作

1.1 创建,配置本地仓库

创建

mkdir gitcode
cd gitcode
git init

配置

git config user.name "bts"
git config user.email "xxx"
git config -l

将配置生效于当前机器的所有仓库

git config --global user.name "xxx"

删除配置/删除全局配置

git config --unset user.name
git config --global --unset user.name

1.2 认识工作区,暂存区,版本库

  • .git:版本库,不允许手欠做任何修改!
  • stage/index/:暂存区,索引
  • gitcode/: 工作区

GIT —— 基本操作,分支管理,远程操作_github

  • 修改的工作区内容会写入**对象库objects**的一个新的git对象

1.3 添加文件

可查看提交记录

git log

提交全部文件/指定的一些

git add .
git add [file]

将暂存区内容提交,请不要瞎写

git commit -m "你憋瞎写"

1.4 关于文件的修改

**git追踪管理的是修改!!**而不是文件

查看对于文件状态

git status

查看暂存区和工作区的差异

git diff [file]

查看版本库和工作区的差异

git diff HEAD --[file]

1.5 版本回退

前提!!commit后还没有push!!这也是我们回退的目的,不玷污远程仓库的代码

本质回退版本库中的内容,git log可查看commit id

git reset [--soft | --mixed | --hard][HEAD]
  • --soft:只回退版本库中内容
  • --mixed:只回退版本库和暂存区中内容(默认项)
  • --hard:全部回退(慎用!!)

撤销回退,那就拿着你想退到那儿的commit id,如果你已经清过屏了,但它被冲掉了也没后悔药了

git reflog

根据提交状态,可分为如下三种情况:

  1. 撤销工作区

你当然手动改咯,但是!太容易改出bug了,你写了一段时间你都不记得你干了啥了

回到最近一次add/commit状态

git checkout -- [FILE]

所以学会版本控制真的很重要,哎想当年我手动回滚相当痛苦了

  1. 撤销工作区和暂存区

reset还可以回退到版本区的当前版本,回退暂存区

git reset HEAD [file]

HEAD 当前版本,HEAD^上一版本,HEAD^^

这样就回到了场景1

git checkout -- [FILE]
  1. 撤销工作区,暂存区和版本库
git reset --hard HEAD^

1.6 删除文件

删除版本库中的文件

删除工作区中内容 - 将变动提交到暂存区 - 提交至版本库

rm [file] 
git add [file]
git commit -m "delete file"

我们可以将前两条简化为一条命令

git rm [file]
git commit -m "delete file"

2. 分支管理

  • 日常开发的代码并未经过测试验证
  • 多人协作开发

2.1 分支的创建,删除,切换,合并

查看当前仓库有几个本地分支

git branch


GIT —— 基本操作,分支管理,远程操作_版本库_02

HEAD可以指向其他任何分支(不止master),指向的就是工作分支(前面有*)

分支的创建

站在当前最新版本上创建分支

git branch [dev]


GIT —— 基本操作,分支管理,远程操作_github_03

分支的切换

git checkout [dev]


GIT —— 基本操作,分支管理,远程操作_暂存区_04

也可以用一条命令来解决

git checkout -b dev

分支的合并

git checkout master
git merge dev


GIT —— 基本操作,分支管理,远程操作_暂存区_05

分支的删除

必须在其它分支上删除dev分支,我们鼓励删除无用的(已完成任务)的分支

git branch -d dev

2.2 合并冲突

我们最有可能在merge过程中产生冲突


GIT —— 基本操作,分支管理,远程操作_git_06

无法确定保留那个,打开[file],需要手工解决

可以清晰看到记录 ——

git log --graph --abbrev-commit

3. 远程操作

如上所有内容都是在本地完成的!那么Git是分布式版本控制系统

“中央服务器”仓库(远程仓库) —— 用来交换修改,推送-拉取


GIT —— 基本操作,分支管理,远程操作_版本库_07

  • issue:用来和仓库的管理者沟通issue的,那么我科研也对github issue数量进行了调研
  • pull request:实际上我们不允许直接merge的,那我们先要提交“合并申请单”

3.1 克隆仓库