为什么要使用git
- 版本太多,哪个才是最终的版本
- 临时修改版本,需要重新拷贝一个新的版本修改
- 需要使用历史版本,但是没有版本备份
- 新增了代码,不知道是谁修改的
安装下载
windows用户git安装链接:Git (git-scm.com)
下载安装完成后点击鼠标右键会出现git的功能
点击open git bash here,出现git命令行
查看git配置
git config --list
配置用户名和邮箱
git config --global user.name "your name"
git config --global user.email "your email"
配置完成后再查看配置git config --list 看是否配置成功
辅助的GUI工具
source tree下载地址:Sourcetree | Free Git GUI for Mac and Windows
小乌龟:Download – TortoiseGit – Windows Shell Interface to Git
vs code Visual Studio Code - Code Editing. Redefined,下载插件就可以
还有其它的GUI工具可自己去搜索
git 的管理结构
工作区:工作区就是电脑能看到的目录。
暂存区:英文名叫index或stage,一般放在.git文件下的index文件中,所以暂存区也叫索引。
版本库:工作区有个隐藏的.git文件叫版本库,
初始化空的版本库
git init
新建文件查看工作区状态
在工作区新增一个git_test.txt文件。
git status 查看工作区的状态
工作区文件的状态
- 已修改(modified)但未添加至暂存区
- 未追踪(untracked)
- 已修改(modified),已添加至暂存区
-
将文件添加到版本库监测对象中
git add
git add <file>:将<file>添加到监测对象中
查看文件状态
git add .或者git add ./<文件夹>:将多个文件添加到跟踪目录中
.gitignore 文件
出现在.gitignore 中的文件将不会被git add . 命令添加进版本库,但你仍然可以使用git add <file>将文件进行添加
.gitignore文件不生效
如果开始建立git仓库的时候没有添加.gitignore文件,后续新增了.gitignore文件,则需要将当前仓库的文件设置为未跟踪的状态。
.gitignore文件只会以当前未跟踪的状态进行忽略
将仓库文件设置为未跟踪的状态:git rm -r --cached
将文件提交到仓库中
git commit -m "提交信息"
-m 后面跟上本次提交的说明
提交后,工作空间就干净了
查看提交日志
git log
提交包含的信息:
commit d7b15644ee38136038a373d61e13c3fec2b9d2cc
Author: 作者和邮箱
Date: Mon Nov 27 13:53:23 2023 +0800提交时间
first commit 提交信息
查看修改
使用git diff命令可以查看修改。
git diff <commit id1> <commit id2> 查看两次提交间的差异
git diff 查看工作区与暂存区的差异
git diff HEAD 查看工作区与上次提交的差异
git diff --cached 查看暂存区与上次提交的差异
版本回述
方法一
git checkout <commit id>:回退到某次提交
git checkout master :切回master分支
方法二
git reset --hard <commit id>
完事之后,使用git reflog查看提交的历史,然后再使用一次
git reset --hard <新版本的commit id>
即可回到原来的状态(这里工作区/暂存区的修改会被丢弃)。
临时存储工作区-stash
需要解决bug,但是现在空间的代码不能通过编译
使用 git stash push 将工作区/暂存区的修改临时添加到缓存区(不包括untracked file,若有需求需要先使用git add),此时所有的修改将会进入stash,使用git status会提示worktree clean。
在解决完BUG并完成相应提交后,使用git stash pop回到之前的工作状态。
多人合作开发
远程仓库
在git服务器上创建远程仓库
选择创建空白工程
新建一个测试仓库
本地和远程建立链接
git remote add <remote repo name> <URL>
克隆远程仓库
git clone <URL>
拉取所有远程分支
git branch -a 查看所有分支
git checkout -b dev origin/dev 作用是切换到远程dev分支,在本地起名为dev分支,并切换到dev分支。
删除远程的分支
将本地仓库推送到git服务器
git push -u test_project
推送成功
git服务器查看推送状态
生成SSH密钥
SSH密钥是什么
本地Git仓库和git服务器的仓库之间的传输是通过SSH加密的,所以需要生成SSH密钥,将公钥放入服务器中,这样git服务器就可以确认推送确实是你推送的。
之前可以发现,如果使用HTTP链接访问,每次推送拉取需要登录账号和密码比较麻烦。
密钥生成
ssh-keygen -t rsa -C "自己的邮箱"
连续点击三次enter可已生成密钥
生成后公钥和私钥存在的位置是本地用户个人的文件夹中会生成.ssh目录
id_rsa:私钥
id_rsa.pub:公钥
将本地公钥的内容全选粘贴到服务器中
添加好公钥以后就可以使用SSH拉取推送了
分支管理命令
列出所有分支
git branch -a
新建分支
git branch <分支名>
新建并切换到新建分支
git checkout -b <分支名>
切换到分支
git checkout <分支名>
删除分支
git branch -d <分支名>
强制删除分支
git branch -D <分支名>
分支重命名
git branch -m <old name> <new name>
分支合并-将分支2合并到分支1
1. 将分支切换到分支1上;
2. git merge 分支2。