概述
*********************30min学会Git操作***********************
- Git与SVN的区别分析
- SVN的弊与利
- Git的利与弊
- Git基本流程图
- git版本控制下的三个工程区域:
- git版本控制下文件的三种状态:
- Git相关操作流程
- 1. 工程准备
- 2. 新增、删除、移动文件到暂存区
- 3. 查看差异及历史记录
- 4. 在工作区增删改查及状态查询
- 5. 提交代码
- 6. 推送本地代码到远端
- 分支管理
- 1. 查看分支
- 2. 新建分支
- 3. 删除本地分支
- 4. 切分支
- 5. 更新本地代码
- 6. 分支合并
- 7. 撤销操作
- 两种冲突处理办法
- 1. 本地分支合并过程中的冲突处理
- 2. 解决Merge Request冲突
- THE END —— 一个彩蛋
Git与SVN的区别分析
SVN的弊与利
SVN 适用于局域网内的代码托管,如果跨局域网进行协同开发,效率会很低。
SVN也不适用与对代码有高质量追求及代码门禁看护
Git的利与弊
不适合Word等二进制文档的版本管理
整体的读授权,不能将授权精细到目录级别
Git基本流程图
git版本控制下的三个工程区域:
- 版本库(repository) 在工作区中有一个隐藏目录.git,这个文件夹就是git的版本库,里面存放了git用来管理该工程的所有版本数据,也可以叫本地仓库。
- 工作区(working directory) 日常工作的代码文件或文档所在的文件夹
- 暂存区(stage) 一般存放在工程根目录.git/index文件中,暂存区亦可称为索引(index)
git版本控制下文件的三种状态:
- 已提交(committed) 该文件已被安全的保存到本地数据库中
- 已修改(modified) 修改了某个文件,但还没有提交
- 已暂存(staged) 把已修改的文件放在下次提交时要保存的清单中
Git相关操作流程
1. 工程准备
git init
用于在本地目录下新建git项目仓库git clone
用于克隆远端工程到本地磁盘
git clone [URL]
// 先判断项目git服务器是否已支持git-lfs,对二进制文件进行区别管理,否则克隆操作无法完整下载工程中的二进制文件。
git lfs clone [URL]
2. 新增、删除、移动文件到暂存区
git add
用于在提交文件之前,把文件添加到暂存区
git add 文件名1 文件名2 // 添加文件1,文件2
git add . // 添加当前目录下所有文件
git rm
将指定文件彻底从当前分支的缓存区删除,因此它从当前分支的下一个提交快照中被删除git mv
命令用于移动文件,也可以用于重命名文件
3. 查看差异及历史记录
git diff
用于比较项目中两个版本(分支)的差异,也可以用来比较当前的索引和上次提交间的差异。
git diff branch_name origin/branch_name
git diff hashvalue_1 hashvalue_2 // 比较两次上库记录之间的差异(哈希值可以只输入前7位或8位即可)
git log
查看提交历史(退出用vi模式退出方法)
git log -n // n 表示查询记录条数
git log --name-status // 查看详细信息
4. 在工作区增删改查及状态查询
touch a.txt
// 在本目录下创建空的a.txt文件echo "cccc" >> a.txt
// 在a.txt中添加内容vi a.txt
orvim a.txt
// 修改a.txt文件git status
命令用于显示工作目录和暂存区的状态
5. 提交代码
git commit
将暂存区文件改动提交到本地的版本库中
git commit file_name -m "commit message" // message(m)
git commit -am "commit message" // all message(am)
// 提交之后就可以查看历史记录
git commit --amend // 修改上一次提交信息(进入vim模式)
6. 推送本地代码到远端
git push
将本地版本库的分支推送到远程服务器上对应的分支
git push origin branch_name // 本地分支名和远端分支名相同 //origin是远端默认库名,可改
git push origin branch_name:new_branch_name // 本地分支名和远端分支名不同(windows 上对代码分支名大小写不敏感)
git push origin branch_name --force // 当远端分支较本地新时,强行推送到远端分支
分支管理
1. 查看分支
git branch
查看本地工程的所有git分支名称git branch -r
查看远端服务器上有哪些分支 //remote(r)
git branch -a
查看远端服务器和本地工程的所有分支 //all(a)
2. 新建分支
git branch new_branch_name
新建分支后并不会切换到新分支git checkout -b new_branch_name
新建分支后并切换到新分支 //branch(b)
3. 删除本地分支
git branch -d branch_name
删除本地分支(有时当事分支包含了未合并的改动,或者当事分支是当前所在分支,无法用-d
删除)git branch -D branch_name
强制删除本地分支
删除服务器上远程分支,二步:
git branch -d -r branch_name
// branch_name为本地分支名git push origin branch_name
// 将删除推送远端
4. 切分支
git checkout branch_name
常用切分支方法git checkout -f branch_name
强制切分支(有时候,当前分支工作区存在修改而未提交文件,与目的分支上的内容存在冲突,导致checkout切换失败,这时候可用)
注:git checkout对象可以时分支,也可以时某个提交节点或者节点下的某个文件。
5. 更新本地代码
更新分支代码,与本地指定分支自动合并
git pull origin remote_branch:local_branch
更新远端代码到本地git pull origin remote_branch
远程指定分支与本地指定分支相同
git fetch的作用是,从远端服务器获取某个分支的更新到本地仓库
注意:与 git pull
不同的是,git fetch
在获取到更新后,并不会进行合并操作,这样能给用户预留一个操作空间,确认git fetch
内容符合预期后,在决定是否手动合并节点
git fetch origin remote_branch:local_branch
获取远端更新(分支名不同)git fetch origin remote_branch
获取远端更新(分支名相同)
6. 分支合并
git merge branch_name
将指定分支合并到当前分支git rebase branch_name
将指定分支合并到当前分支
git merger other_branch master // 将其他分支合到主干
7. 撤销操作
说明:commit过就用reset,未commit就用checkout
git reset commit_id
用于撤销当前工作区中某些git add/commit操作,可以将工作区内容回退到历史提交节点(貌似只回退了历史节点没回退代码)git reset --hard commit_id
强制回退历史节点及工作区代码git checkout .
用于回退本地所有修改而未提交的文件内容git checkout -file_name
仅回退某个文件的未提交改动git checkout commit_id
将工作区代码回退(检出)到某个提交版本
两种冲突处理办法
1. 本地分支合并过程中的冲突处理
1. 在合并分支目录下 git status 查看冲突状况
2. vim conflict_file 解决冲突(vi下双击d可以删除当前行)
3. git add conflict_file
4. git commit -am "commit message"
5. git stauts
注: git reflog
// 查看历史操作记录
2. 解决Merge Request冲突
法一:线上按照说明直接解决
法二:本地解决
1. 下载个人fork库代码到本地
2. pull下远端fork库代码,复现线上冲突现场
3. 若是要增删文件,则增删文件
4. 如果是要改文件,可用notepad++打开或是vim解决冲突部分
5. git add conflict_file
6. git commit
7. git push
8. 刷新Merge Request页面,冲突解决
THE END —— 一个彩蛋
如果还不了解怎么安装git,请看往期文章:
如何在window下安装及配置git
如何在linux或Ubuntu下安装git
如果你想深入了解Git,请看这篇文章:
Git进阶,动图展示
【其他参考】
- git 图解
**优点:**详细而生动地讲了git在本地的各种操作和原理,从中可以理解到git与svn的一点不同:去中心化,从git的树状结构中看不出谁是“主干”谁是“分支”
**缺点:**没有讲到push, 没有涉及到git的远端库和本地库 - Use gitk to understand git
- git通关,动画+游戏模式
最后
以上就是复杂凉面为你收集整理的最通俗易懂的git使用教程的全部内容,希望文章能够帮你解决最通俗易懂的git使用教程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复