git
git
工作流
首先我们看一下git版本控制的基本流程:
一般我们会把项目放到远程仓库(github,gitee等)里,所有人都以这个远程仓库的文件作为最新版本(正本),。个人都有自己的工作区,这个工作区也就是自己本地电脑里的一个文件夹,每个人都可以用 clone
把最新版本的文件复制到本地,在自己电脑里操作文件就不会影响远程仓库,而且每个人都可以负责不同的板块。假设现在我们更新了一些文件想要提交到远程仓库,比如新增的4个文件里,我们只有2个文件需要添加到远程仓库,这个时候就可以把这2个文件添加到暂存区,也就是 add
。如果暂存区我们也觉得没有问题了,可以提交到本地仓库,也就是 commit
,本地仓库其实也就是本地版本区。如果本地仓库可以去更新远程仓库了,我们就可以用 push
把内容推过去。这里有几个状态要特别注意,如果文件还在工作区里,那文件就是 Untracked -未追踪状态,也可以用Unstage表示,已追踪状态用stage表示。如果远程仓库有更新内容,我们可以使用 pull
来进行更新,pull会直接更新到工作区,把你工作区的内容更新掉。所以,我们可以用 fetch
先更新到本地版本库,接着用 diff
对比区别,没问题再合并过来。
常用命令
- git config 配置基本信息
- git config --global user.name 用户名
- git config --global user.email 邮箱
- git config --global init.defaultBranch main
- 将初始化分支改为main
新建并进入一个空白文件夹作为工作区
git init 初始化
输入后会发现多了一个
.git
隐藏文件夹git所有记录都会在这个文件夹里
一般来说我们不需要去研究里面文件的具体作用
初始化后会处于
master/main
主分支
现在我们随便新建一个文件,随便写点内容
git status 查看文件状态
git add 添加文件到缓存区
- git add 文件名
- 添加指定文件
- git add .
- 添加所有未追踪文件
- git add 文件名
git commit 提交
- git commit
- 进入vim编辑器,输入提交信息
- git commit -m “信息”
- 可以在信息中加入 #数字 用来指定解决的issue
- git commit
git log 查看版本(按q退出)
我们可以使用 .gitingore
文件忽略我们不想上传的文件,详情参考我的另一篇博客。
git branch 创建分支
- git branch 分支名
- 创建分支
- git branch -d 分支名
- 删除分支(会提示需要合并)
- git branch -D 分支名
- 强制删除
- git branch
- 查看所有分支
- git branch 分支名
git checkout 切换分支
- git checkout 分支名/commit的id
- git checkout -b 分支名
- 创建并切换分支
git merge 合并分支
- git merge 分支名
- 把分支名合并到当前分支
- git merge 分支名
如果我们2个分支都修改了内容,合并时就会发生冲突
我们可以进入文件进行修改,手动合并就行了。
记得修改完后提交 git commit -am "deal confict"
接下来去github创建一个项目
这里的 git branch -M master
是把分支强制改为master,-m没有强制执行
git remote 远程仓库连接
- git remote add origin 远程仓库地址
- origin:远程仓库别名,可以自己随便起
- 添加远程仓库地址
- git remote set-url origin 新远程仓库地址
- 修改远程仓库地址
- git remote -v
- 可以不加-v,-v可以看到远程仓库地址
- 查看远程仓库地址
- git remote add origin 远程仓库地址
git push 上传到远程仓库
- git push -u origin master
- -u:指定默认同步远程仓库地址和分支名,以后可以直接使用git push
- 会提示我们要输入用户名密码,如果我们直接输入密码,会出现下面的错误,这是因为github在2021年已经不支持直接通过账号密码的形式进行push代码了,需要我们生成个人访问token
- git push -u origin master
找到Developer Settings
输入一个名字,把所有权限勾选上点击创建。
生成的token只会出现一次,记得复制妥善保存
此时再次尝试push,密码使用刚才生成的token。
我们尝试在github对文件进行更新:
- git fetch 拉到本地版本库
- git diff 比较远程和本地版本库
- git diff 远程仓库名(eg:origin/master)
git pull 把远程仓库内容放工作区
git pull 远程仓库别名 本地分支
git pull --rebase 远程仓库别名 本地分支
- 它会把本地commit变成最新的,远程的变成老的那条
当你再次push代码时,你仍然需要输入用户名和密码,我们需要修改远程仓库地址为ssh地址
这样就不需要输入密码了。
- git switch -c 分支名
- 创建并切换到该分支
- git tag 标签
- git tag
- 查看标签
- git tag -a 版本号 -m “信息”
- -a:annotation,注解
- eg:git tag -a v1.0.0 -m “v1.0.0”
- 可以使用git push origin v1.0.0 把标签推送到远程仓库
- git tag