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/
: 工作区
- 修改的工作区内容会写入**对象库
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
根据提交状态,可分为如下三种情况:
- 撤销工作区
你当然手动改咯,但是!太容易改出bug了,你写了一段时间你都不记得你干了啥了
回到最近一次add/commit状态
git checkout -- [FILE]
所以学会版本控制真的很重要,哎想当年我手动回滚相当痛苦了
- 撤销工作区和暂存区
reset还可以回退到版本区的当前版本,回退暂存区
git reset HEAD [file]
HEAD
当前版本,HEAD^
上一版本,HEAD^^
…
这样就回到了场景1
git checkout -- [FILE]
- 撤销工作区,暂存区和版本库
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
HEAD可以指向其他任何分支(不止master),指向的就是工作分支(前面有*
)
分支的创建
站在当前最新版本上创建分支
git branch [dev]
分支的切换
git checkout [dev]
也可以用一条命令来解决
git checkout -b dev
分支的合并
git checkout master
git merge dev
分支的删除
必须在其它分支上删除dev
分支,我们鼓励删除无用的(已完成任务)的分支
git branch -d dev
2.2 合并冲突
我们最有可能在merge过程中产生冲突
无法确定保留那个,打开[file],需要手工解决
可以清晰看到记录 ——
git log --graph --abbrev-commit
3. 远程操作
如上所有内容都是在本地完成的!那么Git是分布式版本控制系统
“中央服务器”仓库(远程仓库) —— 用来交换修改,推送-拉取
issue
:用来和仓库的管理者沟通issue的,那么我科研也对github issue数量进行了调研pull request
:实际上我们不允许直接merge的,那我们先要提交“合并申请单”