Git的使用
# Git 的使用
# 初始化
# cd 到文件夹中
git init
2
# 基本使用
Git设置
用户提交时,会被提交的信息
git config --global user.name "au":设置提交代码时的用户名git config --global user.email au@163.com:设置提交代码时的用户邮箱
分支操作
查看当前分支及分支切换
git branch:查看本地分支,分支前带有*号的时当前所在分支git branch [name]:已当前分支为基准创建名字为[name]的新分支,创建完成后,默认分支切换到[name]分支,
例如:git branch dev:创建dev分支git branch -d [name]:删除[name]分支,
例如:git branck -d dev, 删除dev分支,如果删除失败,一般是需要切换到其它分支,再删除需要删除的分支git checkout [name]:分支切换到name分支,
例如:git checkout dev,切换到dev分支
代码提交
git add .:将文件提交到暂存区,.代表全部文件(除了.gitignore忽略的文件)git commit -m 'xxxx':将暂存区的文件提交到分支,xxx是提交信息git status:查看工作区和暂存区的状态(工作区就是你屏幕上能看到的文件,暂存区就是被git暂时管理的那部分状态文件)git log: 查看提交记录,按回车加载下一条记录,输入q退出查看git push origin master:将本地master分支 推送到 远程(origin)master分支,原本写法是git push origin master:master(git push <远程主机名> <本地分支名>:<远程分支名>)
拉取代码
第一次克隆项目,以及在远程代码更新后,更新代码到本地(提交代码前如有变动执行 git pull )
git clone <repo>:克隆仓库到本地,
例如:git clone git@github.com:coderlyu/vite-frontend-template.gitgit pull:拉取代码
文件暂存
常用在当前分支开发未完成,要切换到别的分支修复 bug 时
git stash:暂存(存储在本地,并将项目本次操作还原)git stash pop:使用上一次暂存,并将这个暂存删除,使用该命令后,如果有冲突,终端会显示git stash list:查看所有的暂存git stash clear:清空所有的暂存git stash drop [<stash>]:删除某一个暂存,在中括号里面放置需要删除的暂存 ID
标签操作
常用来对某个已发布的版本进行打标签
git tag或git tag -l:查看本地分支标签git tag [标签名]:给当前分支打标签,
例如:git tag v1.0.0,给当前分支打上v1.0.0标签git tag --delete [标签名]:删除本地某个标签,
例如:git tag --delete v1.0.0, 删除v1.0.0这个标签
# 高级用法
# 关联远程库
git remote -v:查看已关联的远程库git remote show [remote]:显示某个远程仓库的信息git remote add [shortname] [url]:添加远程版本库,
例如:git remote add origin git@github.com:coderlyu/vite-frontend-template.git,添加一个名字为:origin,地址为:git@github.com:coderlyu/vite-frontend-template.git的远程库git remote rm [name]: 删除关联名字为[name]的远程库
# 强制覆盖远程库
git push origin master[:master] --force: 本地master分支强制覆盖 远程master分支,
例如:git push origin master --force
# 版本回退
# 1. git reset
作用是修改 HEAD 的位置,即将 HEAD 指向的位置改变为之前存在的某个版本,reset 之后,目标版本之后的版本不见了
例如:
git reset --hard [hash]:回退到[hash]之前的版本,hash为提交记录的哈希值(一般取前四位),
例如:git reset --hard 5d50,回退到提交记录哈希值为5d50前版本
reset 成功后一般需要将当前更改强制覆盖远程, git push -f origin master,此时因为远程分支和本地分支不在同一个版本,需要将远程的覆盖,所以加上 -f(--force的简写)
# 2. git revert
用于“反做”某一个版本,以达到撤销该版本的修改的目的,所有提交记录都可以看到,不会像 reset 一样把后面的提交信息删除
例如:如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法
git revert -n [hash]:不需要[hash]这次提交的操作
例如:git revert -n 5d50,表示不需要提交记录哈希值为5d50这次的操作,同时5d50这条记录还在,只是不需要这次提交做的更改
revert 成功后一般也需要将当前更改强制覆盖远程, git push -f origin master,此时因为远程分支和本地分支不在同一个版本,需要将远程的覆盖,所以加上 -f(--force的简写)
# merge 和 rebase
- merge
需要合并的两个分支,会形成一个新的 commit 提交(比如:Merge branch 'dev' 的提交记录)
如果在可视化界面上查看的话,可以看到合并的分支和被合并的分支有交集
从分支 dev 合并到分支 master
git checkout master,切换到master分支(该分支是你合并的分支或者说保存的分支)git merge dev,dev分支合并到master分支,一般来说合并完成后,dev分支可以被删除,同时如果有新的开发需求,继续从master分支创建新的分支开发
- rebase
需要合并的两个分支, 不会形成一个新的 commit 提交
如果在可视化界面上查看的话,合并和被合并的分支是在一条线上
从分支 dev 合并到分支 master
git checkout master,切换到master分支(该分支是你合并的分支或者说保存的分支)git rebase dev,dev分支合并到master分支
# 配置 Git ssh
使用 https 克隆每次 fetch 和 push 代码都需要输入账号和密码;ssh 默认是每次 fetch 和 push 代码都不需要输入账号和密码
设置
user.name和user.email检查是否已经存在
ssh- mac:
cd ./.shhls- 查看是否有
id_isa和id_isa.pub
- windows:
cd ./.shhdir- 查看是否有
id_isa和id_isa.pub
- mac:
生成密钥
ssh-keygen -t rsa -C "au@163.com":"au@163.com" 是你自己的邮箱- 如果不需要加密码的话,连续 3 个回车,就能得到
id_rsa和id_rsa.pub文件
添加密钥到
ssh-agent确保 ssh-agent 是可用的
ssh-add ~/.ssh/id_rsa,添加生成的 SSH key 到 ssh-agent
登陆 Github, 添加 ssh
点击右上角头像 -> Settings -> SSH and GPG Keys
将刚才生成的 id_rsa.pub 里面的内容拷贝到这里,新增一个 New SSH key

# 常见问题
# git clone xxx 项目克隆下来之后 使用 git remote -v 查看 没有远程库的地址
GitHub 未添加当前电脑的 ssh,登陆Github, 添加 ssh 即可
# git pull 出错
可能的原因有:
- 存在冲突,需要你手动去解决冲突的问题