前言
最近找工作的时候简历有写到熟练使用Git操作,其实经常使用的是小乌龟,Git命令什么样子的有点忘记了,好吧,自己写个文章记录一下,加深一些印象。
Git介绍
首先我们要知道Git是分布式版本控制系统(简单了解即可,详细可以去看未文提供的链接,liaoxuefeng大神写的是针不戳)。
分布式和集中式区别:
集中式版本库式集中存放在中央服务器上,而分布式个人电脑里有完整的版本库。
Git下载安装
https://git-scm.com/downloads
可以直接搜一下,下载好了没有特别需求一路回车安装即可。
Git配置
- 配置Git密令
- 打开GitBash命令行,输入 ssh-keygen 然后一路回车,生成的密令会保存当前系统用户的.ss目录中
- 登录GitHub,点击setting选项,然后选择 SSH Keys 菜单,将生成的ssh公钥(系统用户的.ss目录下的.pub结尾的文件)用笔记本打开,并将内容粘贴辅助到Key的输入项中,点击Add Key按钮则添加成功
- 每次本地向GitHub仓库提交代码的时候,需要输入账号和密码,确认是本人才做才能提交。每次都这么操作比较麻烦,因此我们通过ssh协议配置一个key,每次访问GitHub不需要再输入账号和密码
git config
git提供了一个叫做git config
的工具,专门用来配置或读取相应的工作环境变量。
我们可以用它来配置个人用户名和电子邮箱地址(提交代码时的用户信息)。
这里我插一嘴啊,有的人可能会发现自己提交到github上代码了却没有贡献度,那么原因很可能就是你本地配置的邮箱和github上的邮箱不一致导致的。
git config --global user.name xxx
git config --global user.email xxx@163.com
使用 --global 更改的全局配置,修改后所有的项目都会默认使用这里配置的用户信息
- 查看配置信息
git config --list
- 也可以直接查看某环境变量的设定,eg:
git config user.name
Git工作流程
Git操作流程图
先分析一下这个图哈:
-
Remote 远程仓库
-
Repository 版本库: 工作区有一个隐藏的目录.git,这个就是Git的版本库
-
Index/Stage 暂存区: 英文名字叫stage或index。一般存放在.git目录下的index文件中。所以暂存区我们有时也叫做索引(Index)
-
workspace 工作区: 就是我们工作电脑上写代码的目录
简单说明一下这个图吧,都是离不开的命令:
git fetch
从远端代码同步到暂存区
git clone [repo][directory]
从现有的Git仓库中拷贝项目
repo: Git仓库
directory:本地目录 (克隆到指定目录可以使用该参数)
git checkout
切换分支,可以使用该命令创建新分支到工作区
git pull
下拉远端代码到本地仓库
git add
添加文件到暂存区
git commit
将暂存区内容添加到版本库(当前分支)
git push
将版本库代码同步到远端
这里记录一些三个区之间的一些常用操作
git checkout -- [filename]
撤销未add的文件
git reset HEAD [filename]
(老版)将暂存区文件恢复到工作区(将add的文件恢复成未add的样子)
git restore --staged [filename]
(新版)将暂存区文件恢复到工作区(将add的文件恢复成未add的样子)
git reset --hard HEAD^
回退到上一次提交 !!!!(看一下历史记录,看一下操作后如何回退)
git reset --hard HEAD~n
回退n次操作
git reset --hard 3628164
回退到commit id为3628164的版本
git reflog
用来记录你每一次的命令(找不到commit id的时候可以使用)
Git工作必读
git 工作流
feature
特性分支,用于平时代码开发
master
主分支,开发人员无权限操作
release
发版分支,也就是上线分支了喽
hotfix
紧急bug修改,发版分支有bug,需要从hotfix分支上分化一个分支来修改bug,测试无误后再合并到hotfix分支上
先有本地库,再有远程库
git init
初始化仓库- 创建本地项目,写代码
- 创建远端仓库
git add .
添加代码到暂存区git commit -m 'first commit'
添加一条commit记录git remote add origin xxx
将本地仓库与远程仓库关联git push -u origin master
推送当前master分支,并指定origin为master的上游。你直接push的话会报错the current branch dev has no upstream branch
,意思是说你当前分支没有上游分支。你可以先通过git branch -a
查看当前本地分支信息,如果没有推送,只有一个孤独的master分支,当你通过-u
推送过后再次查看,这时分支信息就会变成remotes/origin/master
。
直接从远端拉取代码
|——1、git clone XXX // 代码克隆
|——2、查看分支
|——git branch -a // 查看所有分支
|——git branch // 查看当前使用分支(结果列表前面标*的表示当前使用分支)
|——3、切换分支
|——git checkout -b dev master // 从master分支分化一个新分支dev(以master分支为基础),并切换到dev分支上去
|——git checkout -b dev 是以当前所在分支为基础创建的新分支
|——4、代码提交
|——git status // 查看工作区的未提交代码
|——git add ./ // 将当前文件夹下的文件添加到暂存区
|——git commit -m '提交测试内容' // 给本次提交代码添加一条记录,就是将暂存区中的代码提交到本地所在分支
|——git push -u(新建分支第一次推送需要加 -u) origin dev // 将本地分支代码推送到远端的同时创建连接
|——5、合并分支
|——git merge master dev // 将dev分支合并到master分支上
|——git checkout master + git merge dev // 切换到master分支,再讲dev分支合并到master分支上
|——6、删除分支
|——git branch -d dev // 合并无误后可以删除dev分支(删除本地分支)
|——git push origin --delete dev // 删除远端dev分支
冲突处理
不知道大家什么样子,我个人平时会经常用小乌龟,确实很方便
假设现在我们写好本地代码了,这时候不要着急,首先看一下你当前操作的分支是否还有其他人改动,如果有,甚至还修改了同一个文件的代码,那么很可能会冲突。这里说一下小乌龟的使用吧,同样适用于Git命令。
- 执行
Stash Save
将本地代码修改存储到堆栈中,恢复到未开发的状态,这里需要添加一条记录。根据小乌龟版本不同,命令也可能是Stash changes
- 下拉代码,
Pull
一下 Stash Pop
取出堆栈中的代码,将pull下来的代码和之前本地开发代码进行合并,也是为了在本地处理冲突。如果有冲突,小乌龟会给你将有冲突的文件标红,打开标红文件进行冲突处理。- 冲突解决后,执行
git Commit
添加一条commit记录 Push
提交代码
Git常用命令
Git基本操作
git init
初始化仓库,将当前目录作为Git仓库。执行后会生成一个隐藏的.git目录。
git clone
克隆远程仓库
git pull
下拉远端代码到本地仓库
git fetch
从远端代码同步到暂存区,我一般直接用git pull
,出现冲突也可以手动merge git merge
合并分支
git status
查看仓库当前状态,显示有变更的文件
git add
添加文件到暂存区
git commit
将暂存区内容添加到版本库(当前分支)
git push
将版本库代码同步到远端
git checkout
切换分支
git log
查看历史提交记录
git cherry-pick <commit_id>
将指定提交commit合并到当前分支
git stash
将工作区文件修改暂存到堆栈中
git stash pop
将之前暂存到堆栈中的文件恢复到工作区
Git分支管理
git branch
查看分支
git branch [branchname]
创建分支
git checkout [branchname]
切换分支
git checkout -b [branchname1] [branchname2]
从branchname2分支分化一个新分支branchname1v,并切换到branchname1分支上去
git checkout -b [branchname]
从当前所在分支创创建并切换到该新分支
git merge [branchname]
将branchname分支合并到当前分支
git branch -d [branchname]
删除本地分支
git push origin --delete [branchname]
删除远端分支
git cherry-pick <commit>
将特定提交合并到当前分支
Git标签
git tag -a v1.0.0
给最新一次提交打上(HEAD)v1.0.0的标签,一般用来标记发布版本
git tag -a v1.0.1 1cf2de5
给发布提交的 1cf2de5 追加标签。
git tag
查看所有标签
参考
- Git教程
- 常用Git命令清单
- 三年Git使用心得
- 优雅的提交你的Git Commit Message
- 详解git pull和git fetch
- git stash命令用法
最后
- 如果遇到什么问题就留言吧,能解决大家帮忙一起解决一下
- 文章是自己手敲,是对工作日常的总结,如有错误之处,敬请指正
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!