Git 基础使用
Git 用户信息配置(使用频率低)
配置用户名
git config --global user.name "用户名"
配置邮箱
git config --global user.email "邮箱"
查看全局配置
git config --global -l
Git 的三个区域
- 工作区
- 暂存区
- 仓库
Git 文件的四种状态
- Untracked 未跟踪
- Unmodified 未修改
- Modified 已修改
- Staged 已暂存
初始化 Git 仓库
git init
查看当前仓库文件状态
git status
git status -s
将文件提交到 Git 仓库
- 添加到暂存区
- 未跟踪的文件添加到暂存区
- 已修改的文件添加到暂存区
git add 文件名
git add .
-
Tips: 「.」 表示当前目录,所以
git add .
的意思是将当前目录下所有需要添加到暂存区的文件,加入暂存区
- 提交到 git 仓库
- 必须要写提交信息
git commit -m "提交信息"
- 注意事项: 如果
git commit
时,忘了-m
- 英文输入法,输入
:q!
按「回车」 - 重新执行
git commit -m "提交信息"
- 英文输入法,输入
跳过暂存区,直接提交到 Git 仓库
git commit -am "提交信息"
注意:**git commit -am**
只能提交已跟踪的文件,未跟踪的文件,必须先**git add .**
查看提交日志
查看所有日志信息详情
git log
查看最近 5 条提交日志
git log -5
单行显示日志信息
git log --oneline
版本回退
- 找到要回退的目标版本
git log
- 使用
git reset --hard ID
退回目标版本
git reset --hard a956f2ae5
重新退回最新版本
- 使用
git reflog
找到最新版本的id
git reflog
- 使用
git reset --hard ID
退回目标版本
git reset --hard 6f535f0
开源协议
- GPL 具有传染性的开源协议,只要用了GPL协议的项目,在此基础上进行修改的衍生项目,都必须开源且不可商用。
- MIT 对商业项目极其友好的协议,几乎没有任何限制,只需要在使用项目时,标注作者出处即可。
本地仓库推送至 GitHub
- 初始化本地仓库
git init
- 将本地所有文件,提交至仓库
- 注意:
**git commit -am**
只能提交已跟踪的文件,未跟踪的文件,必须先**git add .**
git add .
git commit -m "提交信息"
-
在 GitHub 中创建一个空仓库
-
将本地仓库和远程仓库进行关联
-
推送代码至远程仓库
git push -u origin master
Git 加强
- 提交上传的时候总会出现一点bug
-
上传代码时未初始化仓库
-
初始化了仓库,但是没有提交代码
-
用户名密码错误
-
username for gitee.com : 输入用户名
-
password for gitee.com : 输入密码
-
-
如果第一次输入错误了账号密码,自动记录,如何清除记录的账号密码?
git config --system --unset credential.helper
git push 命令
作用:将本地仓库推送至远程(不会推送未提交到仓库的代码)
新写了代码不要直接git push
应该先提交至本地仓库后再推送至远程
特点:
只有第一次推送至远程仓库需要使用git push -u origin master
以后每次使用,直接 git push
即可
使用 SSH 提交代码
生成 SSH 秘钥
ssh-keygen -t rsa -b 4096 -C "GitHub 或码云注册的邮箱地址"
在 GitHub 或码云配置 SSH 秘钥
- 找到 SSH 公钥文件
C:\用户目录\.ssh\id_rsa.pub
git clone 命令
将远程仓库下载到本地,克隆了整个仓库
git clone 仓库的地址(可以是 https 也可以是 ssh)
Tips:使用**git clone**
命令下载代码时,选择的协议,决定了将来提交代码时的协议。所以建议使用 SSH 协议进行克隆。
分支
原则:不要在 master 分支直接提交代码,需要新建分支后,完成功能再合并到 master 分支。
分支的基本操作
查看所有分支
git branch
创建分支
Tips:一定要基于 master 分支去创建分支
git branch 分支名(使用英文)
切换分支
git checkout 分支名
创建并切换分支
git checkout -b 分支名
合并分支
git checkout master
git merge 功能分支
删除分支
git branch -d 分支名
**Tips:强制删除分支(谨慎使用) ****git branch -D 分支名**
冲突的解决
冲突:当两个分支同时修改相同的文件,合并时就会发生冲突,都是后者解决冲突,所以大家记得及时提交并合并代码。
当发生冲突时,解决过程如下:
- 修改冲突的文件,确定修复后的代码
- 执行
git add .
将冲突修复好的文件提交到暂存区 - 执行
git commit -m "提交信息"
将冲突修复后的内容提交至仓库
关键字:conflict
冲突
将本地分支推送至远程
只需要在功能分支执行 git push
命令即可,终端会给出对应的提示,复制粘贴运行就可以推送至远程
$ git push
fatal: The current branch pay has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin pay
git pull 命令
作用:将远程仓库的代码拉取到本地,从服务器获取最新的代码
开发时,每天早上第一件事就是执行 git pull
课外扩展
- 将仓库提交方式从 HTTPS 改为 SSH
git remote
是查看并配置 git 远程仓库的指令 查看当前仓库关联的远程仓库地址 删除已关联的远程仓库地址 添加关联的远程仓库地址
git remote -v
git remote remove 仓库名
git remote add 仓库名 仓库地址
- 真实 Git 开发流程
原则:master 分支不能直接提交代码
那
git merge
命令将没有任何意义
- 创建功能分支,进行代码的编写,提交至功能分支
- 将功能分支推送至远程仓库
- 新建
Pull Request
- 将功能分支的代码请求合并至
master
分支 - 艾特老大来做Code Review(代码审查)
- 由审查者测试代码通过后,合并至
master
分支