Git基础
安装
官网下载地址
https://git-scm.com/downloads
安装步骤
图形化安装
配置全局用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
配置SSH
# 生成
sshkey ssh-keygen -t rsa -C "your_email@youremail.com"
#执行完毕上面命令之后,按几次回车
#查看公钥的内容,复制到git的sshkey位置 c
at ~/.ssh/id_rsa.pub
#测试
ssh -T git@gitee.com
创建git仓库
git init
状态模型
- 工作区(workplace)
- 暂存区(index)
- 本地仓库(local repository)
- 远程仓库(remote repository)
仓库管理
工作区(workpace->暂存区(index)
git add . #当前文件夹以及子文件夹 git add fileName #某个文件
暂存区(index)->本地仓库(local repository)
git commit -m '备注提交内容'
克隆远程仓库
git clone -b xxxxx分支 xxxx地址 (不加分支默认master)
#默认拉取master分支代码 git clone
git@gitee.com:liuzhenyu666/test0130.git
#拉取dev分支代码
git clone -b dev git@gitee.com:liuzhenyu666/test0130.git
查看远程仓库
git remote -v
同步远程仓库
#未关联远程仓库时
git pull origin xxxxx git push origin xxxxx
#关联之后,不需要加分支名字
git pull git push
设置本地仓库和远程仓库关联
git push --set-upstream origin xxx
工作常用步骤
git status #查看当前仓库状态
git add . #添加到暂存区
git commit -m 'xxxx' #添加到本地仓库
git pull # 同步远程仓库到本地,检查远程仓库是否比本地版本更高一些
git push #推送到远程仓库
注:千万记住不要使用 -f参数,会强制用本地仓库覆盖远程仓库例如:git push -f 或 git push orign
日志查看
提交日志
git log #日志 git log --pretty=oneline #美化输出,行格式显示
git log --pretty=oneline --abbrev-commit #简化版本号 行格式显示
历史命令日志
#版本相关,如果再版本回滚时误操作了,可以通过这
#个地方来找历史的版本号和命令进行恢复
git reflog
撤销和回退
撤销修改
git checkout xxx #撤销某个文件修改
git checkout . #撤销当前文件夹内所有修改
git reset --hard HEAD #放弃暂存区中所有的修改和新增
版本回退,慎用
git reset --hard xxxcommit版本号 #回退到某个版本
git reset --hard HEAD #放弃当前所有修改,回退到当前版本
git reset --hard HEAD^ #回退到上一个版本
分支管理
查看分支
git brancn #查看本地分支
git brancn -a #查看所有分支
创建分支
git checkout -b xxx分支名字 #创建并切分支
git branch xxx分支 #创建
git checkout xxx分支 #切分支
合并分支到当前分支
git merge xxx分支名字
删除分支
git branch -d # 删除已合并的分支,有未合并代码不允许删除
git branch -D # 强制删除有未合并代码的分支
git push origin --delete dev_new #删除远程分支
本地分支和远程分支第一次关联
git push --set-upstream origin master0513
标签管理
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。
Git有commit,为什么还要引入tag?
“请把上周一的那个版本打包发布,commit号是6a5819e…”
“一串乱七八糟的数字不好找!”
如果换一个办法:
“请把上周一的那个版本打包发布,版本号是v1.2”
“好的,按照tag v1.2查找commit就行!”
所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
创建和查看
git tag v1.0 #创建一个v1.0的标签
git tag v0.9 f52c633 #基于某一个版本,创建一个v0.9的标签 #基于某一个版本,添加备注,创建一个v0.1的标签
git tag -a v0.1 -m "version 0.1 released" 1094adb
git tag #查看标签列表
git show <tagname> #查看某个标签详情
git checkout tagname #切标签
同步和删除
git tag -d v0.1 #删除本地分支
git push origin v1.0 #推送某个分支到远程
git push origin --tags #推送所有分支到远程
删除远程标签
#先删除本地标签
git tag -d v0.9
#后删除远程标签
git push origin :refs/tags/v0.9
删除
从暂存区和工作区删除
git rm <file> git rm test.txt #删掉文件
#如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
git rm -f test.txt
从跟踪清单中删除
#如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可:
git rm --cached <file>
git rm --cached test.txt
git rm --cached -r .
忽略文件.gitignore
- 内容示例,忽略.idea、target文件夹和所有以iml为后缀的文件
/.idea/ /target/ *.iml
- 已提交的文件如何恢复忽略
- git rm --cached 文件
- git rm --cached -r 文件夹
- git rm --cached -r .
参考:https://www.liaoxuefeng.com/wiki/896043488029600/902335212905824