1. cmd面板的常用命令
- clear:清屏
- cd 文件夹名称----进入文件夹
- cd ... 进入上一级目录(两个点)
- dir 查看当前目录下的文件和文件夹(全拼:directory)
- Is 查看当前目录下的文件和文件夹
- touch 文件名----创建文件
- echo 内容 > 创建文件名----创建文件并写入内容
- rm 文件名----删除文件
- mkdir 文件夹名称----创建文件夹 mk:make
- rmdir 文件夹名称----删除文件夹 rm:remove
- cat 文件名----查看文件内容 :cat .git/HEAD
- cat 1.txt >> 2.txt 将文件1.txt内容写入到2.txt
2. VIM常用命令
- i 表示编辑模式
- esc键 表示退出编辑模式
- :wq! 表示保存文件并关闭文件
- vim 文件名 打开文件
git的流程图
3. Git和GitHub基础操作(参考资料)
git入门
git常用命令大全
git原理及使用
git工作开发流程
Git Code Review设置与使用
腾讯工工蜂使用文档
4. git安装
1.在终端,检查git是否安装
git --version
2.没有安装的话去,官网,下载git
3.一直点下一步即可
4.安装后在终端检查git是否安装好
5.设置用户名和邮件地址(最好和GitHub的用户名/邮箱保持一致)
git config --global user.name "自己的用户名"
git config --global user.email "自己的邮箱"
#检查是否配置成功
git config --global --list
5. git工作流程图
6. 仓库的概念以及如何创建
概念:仓库是源代码的管理中心,每一个项目都会存入对应的仓库,该仓库会对源代码进行管理以及对项目进度进行管理
创建仓库:
1.登录GitHub
2.登录后,页面右上角点击头像
3.进入仓库首页,在右上角点击new按钮
4.进入新仓库创建页面(仓库命名要求:不能使用中文 ,不能使用大写字母 ,复杂名称使用中横线连接)
7. 如何上传代码到GitHub
1.在本地创建项目文件夹test-demo
2.在test-demo文件夹下,创建demo.html/demo.css/demo.js
3.在根目录下,创建.gitignore文件,用于设置忽略文件,不需要git管理的文件
#直接书写需要被忽略的文件名或者文件夹名称
1.txt
4.打开终端,进行git仓库初始化
git init
5.在终端,添加git仓库追踪文件
git add .
6.在终端,提交本地源代码到本地仓库
git commit -m "第一次提交git测试代码"
7.查看本地仓库状态
git status
8.通过https协议,将 本地仓库(在自己电脑上) 和 远程仓库(在github网站上) 进行连接
git remote add origin https://github.com/Ocean490724726/test-demo.git
#查看远程分支
git remote -v
#删除远程分支
git remote rm origin
9.将本地仓库代码 push到 远程仓库(此时可能提示输入用户名和密码:指的是github上的)
git push -u origin master
#以上完整写法:git push --set-upstream origin master:master
#表示1.将代码从本地下流master分支 推送到 远程上流分支master
#表示2:下流master和上流master建立连接,以后直接使用git push即可,默认推送到上流master分支
第一次push之后,输入远程仓库的用户名和密码提示(之后就不会提醒了)
代码push远程仓库成功提示
8. 如何将远程仓库代码拉到本地
1.克隆
git clone 远程仓库地址 【本地仓库名称】
git clone https://git.code.tencent.com/git-class-001/git-test.git
9.独自使用git的基本操作
查看提交记录
- git status 查看当前分支状态
- git log 查看当前提交记录
- 结束git log命令:英文状态下按Q就可以了
10.想要修改项目中的文件时,如何进行操作?
1.查看当前分支状态
2.根据两种情况:
如果都在工作区,未被追踪,
或者有些在工作区,有些在暂存区(add了)
git add .
3.此时都在暂存区
git commit -m ""
4.如果都在本地仓库
git push -u origin master
11.删除不需要的文件时,如何操作
1.查看当前分支状态
git status
2.手动删除或者命令行删除文件
#手动删除:
命名行删除文件,可以直接进入git commit -m ""
git rm 文件名
3.查看当前分支状态
git status
4.追踪修改(命令行删除文件可以跳过该步骤)
git add .
5.查看当前分支状态
git status
6.提交修改
git commit -m ""
7.查看当前分支状态
git status
12.想要给文件重命名时,如何操作?
手动重命名
1.查看分支状态
git status
2.删除重命名前的文件名
git rm test1.html
3.追踪重命名后的文件名
git add demo.html
4.查看状态
git status
5.提交
git commit -m "手动重命名"
6.查看提交记录
git log
命令行重命名(推荐)
1.重命名
git mv 原文件名 新文件名
git mv demo.html test1.html
2.查看状态
git status
3.提交
git commit -m "命令行重命名"
4.查看提交记录
git log
13.想要移动文件到其他位置时候,如何操作
移动文件,并重命名
1.查看状态
git status
2.移动文件,并重命名
git mv 原文件名称 文件夹名/新文件名
git mv ./test2.html ./home/home2.html
3.查看状态
git status
4.提交
git commit -m "移动文件,并重命名"
5.查看状态和提交记录
git status
git log
//结束查看log
q
14. 独自使用git的常见问题及解决方法
文件有变化时,如何查看文件前后变化
方式一:
1.查看指定文件的所有被修改记录
git log --pretty=oneline home/home2.html
2.根据上面返回的commitId,查看某一次修改详情
#git show 上面获取的commitid
git show c1b64f1eb07c3a024957156fc7590fda7676996d
方式二:直接查看
git log -p home/home2.html
q
15.操作失误的情况下,如何实现一键还原到上一次提交状态
所有修改文件都是工作区状态下,撤销修改操作,一键还原
1.查看当前文件状态
git status
2.一键还原操作失误文件
git checkout -- 文件名
git checkout -- * 一键还原所有文件的操作
git checkout -- test.html test3.html home/test1.html
16. 不再追踪时如何实现撤销追踪操作
当文件已经被add了,处于暂存区,撤销追踪操作
1.查看当前文件状态
git status
2.撤销追踪操作
git reset HEAD 文件名
git reset HEAD test3.html
本次add的文件撤销到工作区
git reset HEAD *
3.一键还原到上次提交状态
git checkout -- test3.html
17. 想要回到上一版本或者指定版本时如何进行操作
1.在根目录下,创建version.html 和 v.html两个文件,添加内容(h1 版本1 /h1)视为"版本1",并提交
git add .
git commit -m "版本1"
git status
git log --pretty=oneline
2.将内容改为"版本2",追踪并提交
git commit -am "版本2"
git status
git log --pretty=oneline
执行git commit -am "提交描述"即可将add和commit操作合并, 不需要先git add file 再 git commit -m "提交描述" 了
3.按照第二步骤,继续提交版本3,版本4,版本5
不要忘记修改h1标签里的内容
4.查看所有历史记录
git log --pretty=oneline
5.回到上一版本,已经提交,没有push
#git reset --soft 上一个commitID 撤销commit
git reset --soft 版本4的commitID # 撤销版本5的commit
#git reset --mixed 上一个commitID 两个动作
git reset --mixed 版本4的commitID 撤销版本5的commit和add两个动作
#撤销并舍弃版本号之后的所有提交记录,使用需要谨慎!!!
#撤销后,工作区是版本4的代码,版本5丢失了,谨慎使用!!!
git reset --hard HEAD^
#回到上两个版本
git reset --hard HEAD^^
#回到上三个版本
git reset --hard HEAD~3
#方式二:通过commit id的前7位,回到指定版本(往前/往后都可以)
git reset --hard 473233
6.已经提交,且push
#由于远程仓库版本号为版本5 低于 本地仓库版本4 ,不需要push,拒绝push
git reset --hard 版本4的commitID
#撤销,但是保存了提交记录
git revert 当前的版本5的commitID # commitID是最新提交的commitID,
#再进行push到远程仓库
git push
7.查看当前状态
git status
18. 想要将某一文件回到指定版本时如何进行操作
1.当前所有文件都处理版本5
#确认状态是否为干净的
git status
git log --pretty=oneline
2.为了验证其他文件还在版本5,只有指定文件回到指定版本,标记一下其他文件
3.根据commit id,回退指定文件到指定版本
git log --oneline 查看所有提交过的版本
git checkout commitID -- 指定回退文件
git checkout 62cad8 -- version.html
4.回退后截图
5.查看当前状态
git status
6.追踪并提交
git commit -m "将指定文件回退到指定版本"
7.查看状态
git status
git log --pretty-oneline
19.想要修改内容之后推送至远程仓库时如何进行操作
1.本地创建项目,初始化,并提交到本地仓库
2.在github创建远程仓库
3.提交到远程仓库
4.新增css/js文件,并提交到本地仓库
git status
git add .
git commit -m ""
5.push到远程仓库
git push -u origin master
20.想要给每个版本创建一个独特标签,做所有版本标签管理时如何操作
1.创建标签(默认给最近的一次commit)
#git tag v版本号
git tag v1.0
2.查看标签
git tag
3.查看标签添加位置
git log
4.给指定commit,添加标签
git tab v版本号 commitID
git tag v0.5 69d113
5.查看是否添加标签
git tag
git log --pretty=oneline
6.删除指定标签
git tag -d v0.5
7.将添加标签v1.0,push到远程仓库
git push origin v1.0
8.在github上查看tag
21.想要创建、切换、删除分支时如何及逆行操作
1.创建分支
git branch 分支名
git branch dev
2.查看所有分支
#当前活动分支 带* 并且高亮
git branch
3.创建test分支
git branch test
git branch
4.切换分支
#git checkout 分支名 注意:切换前提:保证当前分支工作区clean状态
git checkout dev
查看当前分支
git branch
5.删除分支
#查看当前所有分支
git branch
#git branch -d 分支名
#不能删除当前活动分支 也不能删除 commit之后 但 没有merged的分支(即> 处于本地仓库的分支)
git branch -d test
6. 创建并切换到新创分支
git checkout -b test
7.测试处于本地仓库的分支,能否被删除
7.1在test分支,commit一段代码
git add .
git commit -m ""
7.2切换到dev分支
git checkout dev
#删除test分支,是否报错,如果需要强制删除,git branch -D test
git branch -d test
7.3如果需要强制删除
git branch -D test
22.想要合并分支时如何进行操作
1.在dev分支,开发会员系统,并提交到本地仓库
2.切换到master分支
git checkout master
git branch --查看分支状态
3.将dev分支的代码合并到master分支,dev分支不变,master分支代码会被覆盖,结果使用dev分支的代码
git merge dev
23.当合并分支有冲突时如何正确的合并分支
如果分工明确,细致,可以避免冲突,但是一旦发生冲突?
1.在master分支,修改test.html中h1标题的内容为"master分支",并提交
2.切换到dev分支,修改同一个文件的相同位置的内容"dev分支",并提交
3.切换到master分支,将dev分支合并到master
git merge dev
解决方式一:撤销合并:直接使用master分支代码,舍弃忽略其他分支代码
#放弃忽略合并
git merge --abort
#重新合并,复现冲突,为演示解决方式二准备
git merge dev
解决方式二:和冲突分支的开发人员协商,确定最终保留代码,手动删除冲突
和冲突分支的开发人员协商,确定最终保留代码,手动删除冲突
查看当前分支状态,并提交
git status
git add .
//这里不需要描述 -m,接下来会进入一个可编辑的页面:这里输入描述
git commit
此时在英文模式下,按i,进入可编辑状态
先按 按键esc 退出编辑状态,在英文状态下,再按 :wq ,退出该页面
查看状态
git status --用这一个也可以
git log --pretty=oneline
git push -u origin master
24.git分支管理
基础分支
1.master
2.develop
一个项目的代码库至少要有master和develop这两个分支。团队成员从主分支(master)获得的都是处于可发布状态的代码,而从开发分支(develop)应该总能够获得最新开发进展的代码。
- 从master上获得的代码一定要保证是和线上运行的程序是一致的。
- 从develop上获得的应该是最新的稳定版本的代码。
除了基础分支外,我们还需要辅助分支。辅助分支大体包括如下几类:"管理功能开发"的分支、"帮助构建可发布代码"的分支、"可以便捷的修复发布版本关键BUG"的分支。
辅助分支的最大特点就是"生命周期十分有限",完成使命后即可被删除。
辅助分支
- Feature branch
- Release branch
- Hotfix branch
Feature branch
从develop分支检出,最终也会合并于develop分支。常用于开发一个独立的>新功能,且其最终的结局必然只有两个,其一是合并入"develop"分支,其二>是被抛弃。最典型的"Fearture branches"一定是存在于团队开发者那里,而>不应该是"中心版本库"中。
通过下面的命令来解释这个流程
git checkout -b myfeature develop
#在myfeature上开发完代码之后,需要合并到develop分支上
git checkout develop
git merge myfeature
git branch -d myfeature
git push origin develop
Release branch
从develop分支检出,最终合并于"develop"或"master"分支。这类分支建议命名为"release-*"。通常负责"短期的发布前准备工>作"、"小bug的修复工作"、"版本号等元信息的准备工作"。与此同时,"develop"分支又可以承接下一个新功能的开发工作了。在一>段短时间内,在"Release branch"上,我们可以继续修复bug。在此阶段,严禁新功能的并入,新功能应该是被合并到"develop">分支的。"Release branch"产生新提交的最好时机是"develop"分支已经基本到达预期的状态,至少希望新功能已经完全从"Feature >branches"合并到"develop"分支了。
经过若干bug修复后,"Release branches"上的代码已经达到可发布状态,此时,需要完成三个动作:第一是将"Release >branches"合并到"master"分支,第二是一定要为master上的这个新提交打Tag(记录里程碑),第三是要将"Release branches">合并回"develop"分支。
通过下面的命令来解释这个流程
git checkout -b release-1.2 develop
#修改版本号等元信息的准备工作或者小bug的修复工作后 要合并到master
git checkout master
git merge release-1.2
git tag -a 1.2 #发布前要建立里程碑
#如果有bug的修改,还需要合并到develop
git checkout develop
git merge release-1.2
git branch -d release-1.2 #最后删除这个发布分支,它已经完成使命
Hotfix branch
从"master"检出,合并于"develop"和"master",通常命名为"hotfix-*"
建议设立"Hotfix branches"的原因是:线上总是可能产生非预期的关键BUG,希望避免"develop分支"新功能的开发必须为BUG修复让路的情况。
BUG修复后,需要将"Hotfix branches"合并回"master"分支,同时也需要合并回"develop"分支
通过下面的命令来解释这个流程
git checkout -b hotfix-1.2.1 master
#修复完BUG之后,要合并到master
git checkout master
git merge hotfix-1.2.1
git tag -a 1.2.1 #修改线上BUG需要打标签
#修复完BUG之后,也要合并到develop
git checkout develop
git merge hotfix-1.2.1
git branch -d hotfix-1.2.1 #最后hotfix的分支使命完成,删除之
这就是一个非常好的分支管理模型。
所以,在我们的gitlab上面我们一定至少要有2个分支
master 永远保持和线上代码同步,在上线部署时从这个分支拉去代码打包。如果我们的DI工具到时的功能完善,则DI工具直接从这个分支去代码打包发布
develop 我们的持续集成工具从每天从这个分支上取代码编译大包部署到测试环境(KVM,Docker)。
每次上线前都要建立里程碑Tag
25.git多人分支集成协作时的常见场景
不同人想要查看版本路线如何进行操作
git log --oneline 查看简化的提交记录
git log --oneline --graph 查看当前分支提交版本路线
git log --oneline --graph --all 查看所有分支的版本路线图
git log --oneline --graph 【-number】 查看当前分支提交版本路线图
不同人想要删除不想要的分支如何操作
1.在github上dev分支下,创建两个xiaoli分支和xiaohuang分支 2.在本地复制一份代码:命名为xiaoli 和xiaohuang
3.分别在以上两个项目下,进行如下操作:
在终端fetch远程仓库代码
git fetch
查看所有的分支
git branch -av
删除远程分支 #删除远程分支之前,确保该分支不用了 以及 确保该分支代码都merge到主分支上
git push origin --delete xiaoli
在github上,查看是否被删除