目录
一、工具
二、概念
三、常用linux命令
四、git子命令
一、工具
1、git bash
https://git-scm.com/downloads(网页自动检测PC系统版本,直接下载即可)
2、编辑器(如vi、sublime)
在系统变量中,添加.exe文件绝对路径,即可在CLI中,使用subl命令,打开指定文件。
二、概念
1、版本控制仓库——分布式 vs 集中式
(1)分布式(git)
概念:每个主机都独立的仓库(本地库),也有网络仓库(远程库)。联网情况下,远程库可以同步本地库;无网络情况下,只用本地库进行版本控制,也是可以的,但是会不利于团队协作开发。
例:网游中的仓库概念(公会仓库、个人仓库)。
(2)集中式(svn)
概念:只存在远程库,无网络情况下,毫无作用。
PS:建议使用分布式。
2、版本控制
(1)概念
开发项目期间,对不同阶段的项目,进行备份管理,以便版本回退。
(2)例:系统备份、吃后悔药
3、配置全局用户信息
(1)概念
分布式类似去中心化(抖音、头条等),每人都要有相应的注册信息,标识身份。
(2)实现
使用如下命令,在home目录(windows系统即是C:\Users\Administrator)下的.gitconfig文件中,保存全局信息,相当于为所有仓库打上标识:
git config --global user.email "123456789@xxx.com"
git config --global user.name "xxxx"
4、本地仓库基本操作
5、过滤提交文件
在项目文件夹中,创建.gitignore文件,内部填写,不需要提交到仓库的文件名,如:
.txt
!a.js
/test//.js
意味着git add .时,不会添加.txt、a.js、test子目录下的.js。
6、分支管理
(1)概念
主分支(master)——项目总进度,产品经理控制;侧分支——功能进度,组长控制。
(2)好处
所有人并行开发,缩短项目周期。
(3)不要在主分支上,进行开发
某个功能由特定程序员小组完成,那么小组对应的侧分支,就相当于小组的主分支(dev)。因此,开发时,应该新建另一条分支,完成后合并到dev,再合并到master。(可以按需细分更多小分支)
(4)例:厨房的洗碗工、打荷工、主厨,同时工作,最后交给服务员上菜。
7、分支冲突
(1)冲突因果
两条侧分支都修改了同一文件,分支A先合并到主分支,分支B后合并到主分支,此时产生冲突。
(2)解决方法
在编辑器中,手动编辑。
8、临时储存分支工作进度
正在某分支上开发,并且进行了add / commit操作。此时,需要切换到其他分支,进行开发。由于分支进度没有合并到分支,不能随意切换,应该先将当前分支进度,保存到临时储存区中,才能切换分支。
9、分支标签
分支功能经过测试,证实稳定性后,才应该打标签。
10、侧分支合并前,确保侧分支的commit点,位于主分支的最新commit点,以便主分支管理者,合并侧分支的流畅性。
三、常用linux命令
命令 | 作用 |
---|---|
ls | 列出当前目录下,所有文件 |
ls -a | 列出当前目录下,所有文件(包含隐藏文件) |
ll | 列出当前目录下,所有文件(以列表形式) |
pwd | 显示当前绝对路径 |
mkdir xxx | 新建文件夹 |
touch xxx | 新建文件 |
cd | 定位到home目录(windows即是C:/user/Administrator) |
cd .. | 定位到上级目录 |
cd xxx | 定位到下级目录 |
rm -rf xxx | 删除文件(慎用) |
cat xxx | 打印文件内容 |
vi xxx | 使用vi,编辑文件 |
vim xxx | 使用vim,编辑文件 |
四、常用git子命令
命令 | 作用 |
---|---|
git init | 创建本地仓库 |
git clone | 复制远程仓库(应用于无本地仓库的目录) |
git add | 添加文件,到待提交区 |
git mv xxx | 重命名待提交区的文件 |
git status | 查看项目add情况 |
git commit -m "xxx" | 提交已add的文件,到本地仓库 |
git commit --amend | 修改最近一次commit描述 |
git rm xxx | 删除仓库文件(同时删除项目文件) |
git rm --cached xxx | 撤回仓库、待提交区的文件(首次commit后) |
git reset xxx | 撤回仓库、待提交区的文件(二次commit后) |
git log | 打印commit日志 |
git log -p | 打印commit日志(详细) |
git checkout -- xxx | 回退项目文件版本(仓库当前版本) |
git config --global alias.x xxx | 子命令别名(如:git a代替git add) |
git branch | 查看所有本地分支(*代表当前分支) |
git branch -a | 查看所有分支,包含远程分支 |
git branch xxx | 新建分支 |
git checkout xxx | 切换分支 |
git checkout -b xxx | 新建且切换分支 |
git merge xxx | 合并分支,到当前分支 |
git branch -d xxx | 删除分支(未合并的分支,无删除权限) |
git branch -D xxx | 强行删除分支 |
git branch --merged | 查看已合并的分支 |
git branch --no-merged | 查看未合并的分支 |
git stash | 将当前分支进度,放到临时储存区 |
git stash list | 查看所有临时储存(带标识) |
git stash apply | 将临时储存,恢复到当前分支(不清除临时储存) |
git stash pop | 将临时储存,恢复到当前分支(清除临时储存) |
git stash drop xxx | 删除指定标识的临时储存 |
git tag | 查看当前分支所有版本标签 |
git tag xxx | 设置分支当前版本标签 |
git archive master --prefix='xxx' --forma=zip > xxx.zip | 将master分支的commit内容,压缩成zip格式 |
git rebase master | 将侧分支的commit点,移动到主分支最新的commit点 |
git remote add origin xxx | 关联远程仓库 |
git remote -v | 打印已关联的远程仓库 |
git pull | 拉取远程master的最新内容 |
git push -u origin master | 推送本地master到远程master,且记录,下次推送可以直接git push |
git push --set-upstream origin xxx | 推送本地侧分支,到远程相对应的侧分支 |
git push origin --delete xxx | 删除远程分支 |
git pull | 拉取远程master的最新版本 |