还没实习之前自己学习过git相关内容,但也是仅仅限制在自己创建自己玩一玩罢了, 直到前段时间实习,才真正的使用git的相关内容。 git 的安装和历史等等就不说了, 记录下自己常用的指令和相关知识。
git 是用 C语言编写的
一、 Git 的常用命令:
git init 命令把当前目录变成Git可以管理的仓库
git add 添加文件(到暂存区)
git add -A 添加修改过的文件
git commit -m "说明" 告诉Git,把文件提交到仓库, -m "文字说明";
对新的GitHub项目处理添加更新内容等: git remote add origin https://自己的仓库url地址
git remote -v 查看远程库的信息
git pull 拉取远程分支内容
git push -u origin master 推送内容到远程库上
git branch <name> 创建分支
git checkout <name> 切换分支
git branch 查看分支
git checkout -b test 创建test分支,并切换
git merge 合并分支
git branch -d <name> 删除分支
git log 查看历史记录
git reset 回退到上一个版本
git status 查看状态
git rm 删除文件
所删除的文件一般是不能恢复的,
rm -f, f 参数(f---force)忽略不存在的文件,不显示任何信息; 不会提示确认信息
rm 删除文件、文件夹
-r Recurve的首字母,递归的意思,删除此文件夹下所有文件
-f不提醒,直接删除
-i交互删除,会提醒
rm 命令删除一个目录中的一个或者多个文件或者目录,只用rm命令不会
删除目录,通常文件通常可以恢复。
友情提示:一般的删除操作用rm 即可 。
另一些我暂时用的比较少的命令:
git diff 查看文件具体修改了啥
要随时掌握工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
git log 命令显示从最近到最远的提交日志
git log --pretty=oneline 特定显示提交的说明
git reset --hard HEAD^ 回退到上一个版本,
git reset --hard cmmit_id 回到未来的某个个版本
git log 可以查看提交历史,以便确定要回退到哪个版本;
git reflog 查看命令历史 ,以便确定要回到未来的哪一个版本
git stash list 查看工作现场存储地方
二、 多人开发合作
一般一个主分支master受保护的, 开发一般在develop分支上面开发, 在根据不同的功能延伸出不同的功能分支,就是feature分支, 在feature分支开发完后于develop分支合并, 还有bug分支, 版本上线后的处理分支等,具体介绍在git glow。
在同个feature分支上, 多人协作的工作模式: 1、 先试用git push origin <branc-name> 推送自己的修改代码, 如果推送失败,则是远程分支比你的本地分支在前头,需要先git pull合并一下先;
2、 如果合并失败,则有冲突。先解决冲突,并在本地提交然后再进行git push 操作
3、 如果git pull 拉取的时候发现出现 no tracking information 则说明本地分支和远程分支的链接关系没有创建。用命令
git branch --set-upstream-to <branch-name> origin/<branch-name>。
在实习的时候,学习到的git flow 知识,然后记录一下~
三、 git flow
git flow 的常用分支:
1. master 主分支... 2. develop 主开发分支...
3. feature 功能分支... 4. release 测试分支....
5. hotfix 补丁分支....
网上的一张图:
特点: 1.两个长期分支 master 和 develop
2.三个短期分支: feature、release、hotfix
优点: 各个功能分支(feature)之间代码相隔离,可以进行独立的开发、测试等;
缺点: 分支开发时间较长的时候, 开发成本较高, 分支较多的时候,合并代码容易产生冲突
应用场景: 1. 需要支持多个版本的软件并且相互独立; 2. 多版本独立, 同时后续各版本开发
github 工作流 :
特点: 1. 只有一个master分支作为长期分支
2. 新建的分支名称需要体现此分支的作用
优点是: 规则简单; 缺点是: master合并后如果不发布, 会造成线上和master不一致
应用的场景: 1. 需要立即部署的项目; 2. 适合小型项目, 开发人员少的项目。
gitlab flow
特点: master 作为主分支, 有pre-production 预生产分支和production 生成分支、
缺点: 1. 相对于GitHub flow来说, gitlab flow更复杂; 2.当要维护较多的版本的时候,会变得想git flow比较复杂
应用场景: 需要进行预发布的项目
推荐一个学习git 的网址: https://www.liaoxuefeng.com/wiki/896043488029600