First Project:)being confused and embrassed… luckily no one is staring at you but willing to help,as long as you try to find and explain a bug,try debugging、、
Git Bash
- 分布式版本控制工具 git:没有“中央服务器”,每个人的电脑上都是一个完整的版本库(区别于集中式版本库管理系统如 svn)。
- Git Bash:Git提供的命令行工具,可运行linux命令 cd、ls、touch…
1
git config --list # 查看配置
- 配置 Git 的全局用户信息,这些信息在你提交代码到 Git 仓库时会被记录下来,用于标识提交代码的作者信息。
1
2git config --global user.name "xx" # 配置 user.name caifeng
git config --global user.email "xx" # 配置 user.email 1908454905@qq.com
Github
- leo710aka @qq.com xxxxxxx
- 使用 SSH 密钥连接 GitHub:如果没有的话,使用???以下命令在本地生成 SSH 密钥生成 SSH 密钥后,将
1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
~/.ssh/id_rsa.pub
(公钥)的内容添加到 GitHub 账号的 SSH 密钥设置中。 - 使用 HTTPS 认证连接 GitHub:在 GitHub 上克隆仓库时,使用 HTTPS 链接,然后在推送更改时,会提示输入 GitHub 账号的用户名和密码,或者使用个人访问令牌(Personal Access Token)代替账号密码。
- 访问令牌(Access Token)是一种用于通过API进行身份验证的方式。
- 创建访问令牌:1. 登录到你的GitHub帐户。 2. 点击右上角的头像,选择 “Settings”。 3. 在左侧导航栏中选择 “Developer settings”。 4. 点击 “Personal access tokens”。 5. 点击 “Generate token”。 6. 提供一个描述,选择需要的权限(scope),然后点击 “Generate token”。 7. 复制生成的访问令牌。请注意,生成后会显示一次,如果忘记了,需要重新生成。
- 使用访问令牌:可以通过多种方式使用,例如在命令行中、在脚本中或者在应用程序中。
- Token和SSH密钥是两种不同的身份验证机制,用于在GitHub或其他版本控制系统中进行身份验证。存在一些区别。
用途不同: 访问令牌用于API身份验证,而SSH密钥用于远程仓库的SSH访问。
获取方式不同: 访问令牌通过GitHub设置生成,而SSH密钥需要用户生成并添加到GitHub帐户。
身份验证方式不同: 访问令牌通过HTTP标头进行身份验证,而SSH密钥使用SSH协议进行本地身份验证。
适用场景不同: 访问令牌适用于与GitHub API进行交互,而SSH密钥适用于直接使用Git与远程仓库进行交互。
Git 指令

- clone (克隆):从远程仓库中克隆代码到本地仓库。会下载远程仓库的所有分支的引用,但只会检出[chekout]默认分支到本地。
- checkout (检出) :从本地仓库中检出一个仓库分支然后进行修订
- add (添加):在提交前先将代码提交到暂存区
- commit (提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
- fetch (抓取): 从远程库抓取到本地仓库。这会更新所有远程分支的引用信息,但不会自动合并这些更新到本地分支。
- merge(合并): 将指定的分支合并到当前分支。
- pull(拉取) : 相当于fetch+merge,获取最新的远程提交,但只合并当前检出的本地分支与其对应的远程分支,然后放到到工作区。
- push (推送) :修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
本地仓库
- 要使用Git对我们的代码进行版本控制,首先需要创建本地仓库
(1) 在电脑的任意位置创建一个空目录(文件夹) 作为我们的本地Git仓库
(2) 进入这个目录中,右键打开Git bash
(3) 执行命令git init
(4) 如果创建成功后可在文件夹下看到隐藏的.git目录。 - 新建仓库中的文件,其状态都是未被跟踪的(未纳入版本管理)
git add <name> / git add .
:跟踪一个/所有文件或目录的状态,将其纳入版本管理(即暂存?),记录其状态或内容变化git rm <name>
:删除文件git rm --cache <name>
:保留文件但不再跟踪 - 添加,提交,推送:在IDEA中,点击Git提交并推送,选择提交、添加信息、修改远程仓库的分支(默认
origin:main
),推送。1
2
3
4
5
6$ git status # 查看当前状态(红色的字体显示的是修改的文件
$ git add 单个文件名|通配符(. 添加所有修改) # 添加工作区代码到本地git暂存区
$ git commit -m "提交的信息" # 提交暂存区代码到本地git仓库(生成一个版本)
$ git log # 查看提交日志信息(head指向当前操作的分支)
$ git push <远程仓库名> <本地分支名> # 推送本地代码到远程仓库
$ git push <远程仓库名> <本地分支名>:<远程分支名> # 将指定的本地分支推送到远程仓库的指定分支
远程仓库
- 上传本地仓库项目到远程
本地git bash生成ssh公钥,添加到gitee中,本地验证,添加远程仓库或者直接在idea中,对一个项目文件添加、提交后,直接在idea中1
2
3
4
5
6$ ssh-keygen -t rsa # 生成ssh密钥
$ cat ~/.ssh/id_rsa.pub # 查看密钥
$ ssh -T git@gitee.com # 验证
$ git remote add origin git@gitee.com:leo710aka/test.git # 添加远程仓库名为origin(别名),加ssh地址
$ git remote -v # 检查远程仓库配置是否正确
$ git push origin master # 完成添加、提交后,将本地master分支推送至远程origin仓库git remote
,使用github账号密码进行远程仓库的连接,然后推送。(连接远程仓库,要么使用ssh密钥,要么用github账号密码。) - 添加远程仓库项目到本地也可以先从远程仓库
1
2$ git clone <远程仓库地址> # 克隆远程仓库到本地(默认分支master)
$ git clone -b <分支名> <远程仓库地址> # 克隆指定分支(如develop)git clone
下来一个项目,完成修改后对项目文件添加、提交,在推送到远程仓库时,再进行ssh密钥/github账号密码
的验证。
分支
- 实际开发新功能,是在develop分支上创建feature分支,完成后合并到
develop分支
(部门开发分支)上,经测试,最后合并到master分支
(线上分支,主分支,项目正在上线的分支)1
2
3
4
5
6
7
8$ git branch # 查看本地所有的分支,当前激活的分支会在列表中以星号(*)标识。
$ git branch -r # 查看远程仓库的分支
$ git branch -a # 查看所有分支,包括本地分支和远程分支。
$ git branch caifeng # 从当前分支上新建分支
$ git checkout caifeng # 切换分支
$ git checkout -b caifeng # 创建(若不存在)并切换分支
$ git checkout -d caifeng # 删除分支(-D 强制删除)
$ git merge <分支名> # 先切换回如master分支上,将其他分支上的提交合并到master上 - 分支合并
1
2
3$ git merge [remote name] [branch name]
$ git log --merge # 显示合并冲突的提交日志
$ git log --graph --oneline --all # 可视化分支和合并历史,以简化理解合并的情况 - 更新项目在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到玩程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支。
1
2$ git fetch [remote name] [branch name] # 抓取仓库里的更新到本地,不会进行合并
$ git pull [remote name] [branch name] # 拉取远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
或直接在IDEA里面选择分支pull(Git拉取),克隆/更新后记得修改配置文件为测试/本地(如果有)。 - 冲突:当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决步骤、、
1.处理文件中冲突的地方
2.将解决完冲突的文件加入暂存区(add)
3,提交到仓库(commit)
经典Git流模型

其他操作
- 贮藏代码:当前代码没写完,要切换分支时,必须先提交当前代码或贮藏
1
$ git stash
- 版本回退
1
2$ git reset --hard <提交id> # 通过提交id切换版本
$ git reflog # 查看历史操作(已清除提交日志、版本切换日志。。。 - 分支变基:将一系列的提交从一个分支上 “移动” 到另一个分支的起点,并将它们重新应用(或重新播放)到目标分支上。
1
$ git rebase # 可以让提交历史更线性、更简洁