git使用详解
git 命令使用流程
首先,在码云或github创建一个项目仓库,本地下载好git,git下载不做具体演示,百度可以搜到很多安装教程
查看 git 配置信息
git config --list
修改用户和邮箱
这是因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
优先级: git config > git config --global > git config --system
作用域:--system 是计算机全部用户默认使用
--global 是计算机同个用户默认使用
无参数 只是当前仓库使用
git config --global user.name "onepiece"
git config --global user.email test@qq.com
-
在本地磁盘创建一个文件夹,右击 Git Bash Here 打开命令窗口,git初始化本地仓库会出现.git文件
git init
-
连接远程仓库
git remote add origin 仓库地址
-
将远程生成的文件pull到本地, git pull = git fetch + git merge
使用 git fetch 更安全 ,需要先仓库对比再进行 git merge 合并代码, git pull 更加便捷
git pull origin master
-
这时候就可以设置追踪
git branch --set-upstream-to=origin/master
-
默认分支master,可以创建分支,根据自己团队需求创建多个分支
git branch --查看本地分支 git branch -a --查看所有分支(包括远程分支) git branch 分支命名 --创建一个新分支 git push origin 上传分支名:本地分支名 --创建一个远程分支 git push origin 分支名 --上传文件到指定远程分支 git checkout 分支名 --切换分支 git branch -d 分支名 --删除一个本地分支 git push origin -delete 分支名 --删除一个远程分支 git fetch -p --清除无效分支(远程已删除本地没删除的分支)
-
git add将需要提交的代码放进缓存区,告诉git系统哪些是需要提交的文件
git add --默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区,注意不包括删除 git add 文件名 --增加指定文件进去暂存区 git add -u --将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件 git add -A --表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。 git add -h --查看帮助,使用git add --help可以查看更详细的内容
-
暂存区进行操作,
git status --查看所在分支和暂存区 git ls -files --查看暂存区中文件信息 git rm --cached 文件名 --删除暂存区文件 git checkout 文件名 --恢复指定文件 git checkout --恢复全部文件
-
提交本地仓库
git commit git commit -m '提交的备注信息'
-
git push origin
提交到远程分支git push origin --提交到追踪分支 git push origin 分支名 --没有追踪,指定具体分支名
-
合并从分支到主分支
-
假如我们在dev分支上,刚开发完项目,执行下下列代码
git add git commit -m '提交的备注信息' git push origin dev
-
将dev分支合并到master分支,首先切换到master分支
git checkout master
-
需要把远程master上的代码pull下来
git pull origin master //如果是自己一个开发就没有必要了,为了保险期间还是pull
-
然后我们把dev分支的代码合并到master上
git merge dev
-
然后查看状态及执行提交命令
git statusgit push origin master
-
合并出现问题需要手动修改
git diff branch1 branch2 --stat //显示出所有有差异的文件列表 git diff branch1 branch2 文件名(带路径) //显示指定文件的详细差异 git diff branch1 branch2 //显示出所有有差异的文件的详细差异
-
编辑有冲突的文件(只修改被合并的分支文件),删除特殊符号,决定要使用的内容
-
我们可以用
git add
要告诉 Git 文件冲突已经解决git add 文件名 //添加缓存区 git status -s //状态码解析,会显示如: M runoob.php git commit -m "修改后" //重新提交
状态码含义:
A: 你本地新增的文件(服务器上没有).
C: 文件的一个新拷贝.
D: 你本地删除的文件(服务器上还在).
M: 文件的内容或者mode被修改了.
R: 文件名被修改了。
T: 文件的类型被修改了。
U: 文件没有被合并(你需要完成合并才能进行提交)。
X: 未知状态(很可能是遇到git的bug了,你可以向git提交bug report)
?:未被git进行管理,可以使用git add file1把file1添加进git能被git所进行管理
-
错误回滚
- push前回滚
--mixed 想保留本地修改,也想撤销commit 可以使用(默认--mixed) git reset --mixed HEAD^ --soft 仅仅撤销 commit git reset --soft HEAD^ --hard 全部撤销了,包括本地修改 git reset --hard HEAD^ git reset HEAD^ //此时代码保留,回到 git add 之前(默认--mixed) git reset --hard HEAD^ //回到最新的一次提交 git reset --hard HEAD~3 //回退上上上一个版本 git reset --hard origin/master //将本地的状态回退到和远程的一样
HEAD 说明:
- HEAD 表示当前版本
- HEAD^ 上一个版本
- HEAD^^ 上上一个版本
- HEAD^^^ 上上上一个版本
- 以此类推...
可以使用 ~数字表示
- HEAD~0 表示当前版本
- HEAD~1 上一个版本
- HEAD^2 上上一个版本
- HEAD^3 上上上一个版本
- 以此类推...
-
push后回滚
方式一
git revert HEAD //撤销最近1次commit git log //得到你需要回退一次提交的commit id git revert <commit_id> //回滚到指定版本 git push origin master //提交回滚后的版本
方式二
git log // 得到你需要回退一次提交的commit id git log --oneline //查看简洁版本 git reset --hard // 回到其中你想要的某个版本 git push origin master -f //强制提交一次,之前错误的提交就从远程仓库删除
-
git reset
和git revert
区分revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在; reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
-
删除某次提交
git log --oneline //显示<commit_id>日志 git rebase -i <commit_id> //删除<commit_id>次提交
-
git标签
如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用
git tag
给它打上标签。如一个重要版本出现,如稳定版,标签可以帮你快速定位到
一. 创建一个标签
git tag -a <tagname> // 创建一个标签
git tag -a <tagname> -m "说明文字" //创建一个标签带说明
如果我们忘了给某个提交打标签,又将它发布了,我们可以给它追加标签。
git tag -a v0.9 <commit_id> //<commit_id>代表最后一次的commit id
git log --oneline --decorate --graph //查看是否追加成功
列出标签
git tag //查看所有标签
git tag -n //列出标签和说明
二. 删除标签
- 删除标签:
git tag -d 标签名
git tag -d v1.0.1
- 删除远程标签(Git1.7版本以后):
git push origin --delete tag
三. 推送标签
- 推送指定标签:
git push origin v1.0.0
- 一次性推送全部尚未推送到远程的本地标签:
git push origin --tags
四. 获取指定tag代码
第一步:切换到指定标签,提示你当前处于一个“detached HEAD" 状态,因为 tag 相当于是一个快照,是不能更改它的代码的
git checkout v1.0.0
第二步:如果要在 tag 代码的基础上做修改,你需要一个分支
git checkout -b branch_name tag_name
第三步:切回到之前的HEAD指向(以master为例)
git checkout master
Git工作流图
工作区:在 git add 之前,在自己当前分支所修改的代码内容。
暂存区:已经 git add 进去,且没有执行 git commit 的。
本地分支:已经 git commit -m xxx 提交到本地分支的。
远程分支:git push origin master 是远程分支。
TortoriseGit (别名:小乌龟)
-
克隆
-
提交推送
-
创建本地/远程分支
-
合并
-
回滚
演示实例
以 gitee(码云)为例
- 创建码云账号
- 创建组织
- 添加队员
- 创建一个仓库
- 克隆仓库
- 提交并推送
- ssh登录(rsa密钥)
创建密钥步骤
- 打开 Git Bash Here 窗口,输入
使用ssh-keygen命令生成公钥和私钥,其中-t表示类型是rsa类型(非对称加密)。-C就是邮箱地址
ssh-keygen -t rsa -C "xxx@qq.com"
-
从打印的命令行可以看到输出公钥和私钥的文件位置
-
打开id_rsa.pub文件,复制里面的文本,保存到码云指定ssh配置中
小乌龟需要 PuTTYgen 这个工具生成,搜索工具就能搜索到
保存好公钥私钥,其他操作同上。