Git
基本概念
-
工作区:代码开发区,新建文件,不会自动纳入git管理
-
暂存区:通过git add 文件路径 将文件添加至暂存区
-
本地仓库:通过git commit-m ‘历史记录说明’ 提交 至本地仓储
-
文件的四个状态: 红色—未跟踪(没有添加至暂存区的新文件) 绿色—新添加至暂存区的文件 无色—刚刚添加到本地仓储,工作区、暂存区、本地仓储都是最新的文件 红色 modified—已修改,修改后的文件尚未添加至暂存区
-
回滚:
-
远程仓储
- 配置SSH(每台电脑在某个远程只需要配置一次)
- 在申请账号下,可以创建很多远程仓储(空仓储)需要把本地某一个仓储和远程仓储关联起来
语法
将文件添加至本地仓储
- git init 初始化—得到一个本地仓储
- git add 文件路径列表 将文件添加至暂存区
- git commit-m ‘历史记录说明’ 将文件添加至本地仓储
- git log 查看提交的历史版本
- git status 查看文件的状态
小技巧
- 清除屏幕: clear
- 历史记录太多了,窗口展示不全,上下箭头去查看. 退出查看模式 q
- 按上箭头,展示曾经用过的命令
- git add * 添加所有文件到暂存区(但是排除以.开始的文件)
- git add *.js 将所有的js文件添加到暂存区
- git commit -a -m ‘备注’ 如果当前文件列表不包含新建的文件,可以直接添加到暂存区和本地仓储
回撤
-
git log --oneline 查看历史版本的极简方式,前面的信息就是每次版本的ID
-
git reset --hard 版本ID 回滚到历史版本
-
git rm --cached 文件路径 把某文件移出暂存区
-
git checkout 文件路径 撤销(不可逆,不建议这样做; 建议:把觉得有问题的代码先存一个历史记录)
远程仓储
-
新建远程仓储,填入基本信息
-
关联远程仓储 — 复制SSH地址, 然后 git remote add origin SSH地址 (origin可以起别的名,但推荐使用origin,它是SSH地址的别名)(如果把地址复制错: git remote remove origin 再重新关联)
-
将代码从本地仓储推送到远程仓储
-
第一次上推时 git push -u origin master
2. 后续上推 git push -u origin master/git push -
常见问题见Git 3月24号文档
-
克隆下拉别人 (不能上推至别人的远程仓储,因为没有权限)
- git clone SSH地址
- git pull origin master 简写git pull
-
克隆下拉自己(可以上推至自己的远程仓储,因为自己的远程仓储中有配对公钥才可以推送)
-
远程仓储添加开发人员
- 把电脑内SSH公钥配置到平台(此电脑对所有远程仓都有推送权限)
- 在某个远程仓储中,点击管理,点击仓库成员管理,添加开发者
分支
- git branch — 查看所有分支
- git branch cc — 创建一个名为cc的分支
- 组内约定某个分支为项目业务分支(例如master),谁也不能直接在上面修改代码,提交记录
- 大家:组长和组员下拉代码,各自起分支名称(例如git branch cc),然后git checkckout cc切换到cc分支在cc分支上继续开发
- 开发完成后git checkout master切换到master分支上, git merge cc 把cc分支上记录合并到 master分支上
- git pull先下拉!!!远程可能有人提交记录,出现矛盾点,通过商量解决矛盾,需要在本地记录一下(git add . git commit -m ‘备注’) 来解决冲突
- 将代码推送到远程(常见问题见大事件项目git补充文档)
[注] 3、4步可以使用 git checkout -b cc合并为一步
如何使用: (本地仓库) - (远程仓库) 总结
目标1: 为什么要托管代码?
原因1: 多人协同开发, "合并"代码
原因2: git(版本管理系统) - 自己保存代码(防止本地丢失)
情况1: 新项目(无远程仓库)
(1): 本地新建项目 - 并初始化本地仓库 - (git init命令) - 结果: .git文件夹(保存当前本地所有git版本状态)
(2): 编码, 完成一个模块就暂存提交一次
暂存: git add . (本地所有变换都暂存)
提交: git commit -m ‘本次提交备注’ (必须好好写-方便以后回滚) - (变更保存到了本地仓库 - 产生一次提交的快照)
继续编码 - 继续本地提交保存
(3): 新建远程仓库(gitee.com), ssh的git地址
拉取的时候, 必须有这个网站的账号密码(非仓库管理员)
推送的时候, 必须让管理员把你的账号密码加到这个仓库里
(4): (只有第一次), 建立本地仓库和远程仓库的链接 (一个本地只能对应一个远程)
git remote add origin git地址
(5): (只有第一次), 推送代码并建立读写通道(以后可以简化写法) git push -u origin master (把本地的master分支和远程origin上的master建立通道)
额外讲解: 如果把本地的子分支推上去 git push -u origin 子分支名 (本地必须有这个子分支)
以后 git push 直接 (看当前在哪个分支上)
情况2: 有项目(有远程仓库)
(1): (只有第一次) 克隆下来(本地必须是一个空白的文件夹), git clone 远程git仓库地址
克隆某个分支 git clone -b 分支名 git地址
(2): 编码. 写业务, 本地的代码, 手动复制进去…
(3): git add . git commit -m ‘注释’
(4): git pull / git push
(重要): .git 并列的地方, 有一个 .gitignore文件
固定名, git忽略配置文件
git会监测你所有的代码和文件夹的变更
但是有的东西, 我不想让git监测 (例如: dist文件夹, node_modules文件夹)
一般合并的是代码