Git仓库介绍
由Git管理的项目, 分为本地仓库和远程仓库, 二者本质上类似, 都可以有多个分支.
仓库的URL为: https://github.com/<owner>/<repositoryName>

Git操作流程
使用
git init初始化本地项目此时会生成
.git文件夹, 用来管理当前目录默认分支名为
master, 但此时使用git branch无法显示, 通过git log的输出信息可以大致猜测fatal: your current branch 'master' does not have any commits yet使用
git add *将当前工作区(当前目录)中的内容全部添加到暂存区中使用
git commit -m "提示信息"将暂存区的内容保存到本地仓库中, 此时再次输入git branch即可查看到分支名C:\Users\24563\Downloads\Documents\book>git branch * master创建远程仓库
可以登录到GitHub上手动创建远程仓库, 保持本地项目名和远程仓库名一致
通过命令行创建一个远程仓库
echo "# book" >> README.md # 创建README.md文件 git init # 初始化项目 git add README.md # 添加README.md文件到暂存区 git commit -m "first commit" # 提交到本地仓库 git branch -M main # 分支为main git remote add book https://github.com/yimeisuren/book.git # 为远程仓库URL命名为book git push -u book main # 将本地仓库推送到book
Git设置
设置姓名和邮箱地址
$ git config --global user.name "yimeisuren" $ git config --global user.email "2456387473@qq.com"

这条命令会在C:\Users\Administrator\.gitconfig中以如下形式输出设置文件
[user]
name = yimeisuren
email = 2456387473@qq.com
提高命令输出的可读性
$ git config --global color.ui auto这条命令也会对配置文件进行如下修改
[color] ui = auto
GitHub设置
设置 SSH Key (连接仓库需要)
$ ssh-keygen -t rsa -C "2456387473@qq.com" #设置ssh key命令 Generating public/private rsa key pair. Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa): #按回车键 Enter passphrase (empty for no passphrase): #输入密码 Enter same passphrase again: #再次输入密码输入密码之后出现
Your identification has been saved in C:\Users\Administrator\.ssh\id_rsa. Your public key has been saved in C:\Users\Administrator\.ssh\id_rsa.pub. The key fingerprint is: <fingerprint值 2456387473@qq.com The key's randomart image is:其中
id_rsa是私钥,id_rsa.pub是公钥在GitHub中添加公钥
`id_rsa`和`id_rsa.pub`都可以使用记事本直接打开查看
使用私钥和GitHub进行认证和通信
$ ssh -T git@github.com The authenticity of host 'github.com (207.97.227.239)' can't be established. RSA key fingerprint is fingerprint值 . Are you sure you want to continue connecting (yes/no)? #输入yes Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':#输入github账户密码出现如下语句代表操作成功
$ Hi yimeisuren! You've successfully authenticated, but GitHub does not provide shell access.
Git基本操作
git init—初始化仓库
要使用 Git 进行版本管理, 必须先初始化仓库
$ mkdir git-tutorial #创建git-tutorial文件夹
$ cd git-tutorial #进入文件夹
$ git init #初始化仓库
生成的.git目录称为附属于该仓库的工作树
git status—查看仓库的状态
使用
touch命令创建文件touch README.md touch sometest.txt查看仓库状态
git status
- on branch master: 处于master分支
- commits: 待提交的文件
- untracked files: git-tutorial目录下存在但是没有被git仓库管理的对象
git add—向缓冲区中添加
git add * #表示添加所有文件
git commit—保存仓库历史记录
git commit -m "任意一条描述信息"
将当前暂存区中的文件实际保存到仓库的历史记录中。通过这些记录, 我们就可以在工作树中复原文件
git log—查看提交日志
git log
git remote add—关联远程仓库
git remote add <name> <project_url>
在GitHub上建立与本地仓库名相同的远程仓库(注意不要勾选自动生成README.md文件)
将本地仓库和远程仓库关联起来
git remote add origin https://github.com/yimeisuren/origin #origin为远程仓库名
git push—推送至远程仓库
git push -u origin master #将本地仓库中的当前分支推送到orgin中的master分支中
git push操作只允许操作最新版本的远程库, 否则会push失败.
以一个实际场景为例进行说明
- 在配置好本地仓库和远程仓库之后, 将本地文件push到远程仓库中
- 发现不小心将一些隐私文件进行了上传, 登录到github上进行手动删除
- 在之后某天, 对本地仓库的一些文件进行增删改之后, 重新push, 此时发现push失败
上面失败的原因在于, 当在github上手动删除文件时, 此时本地仓库的版本和远程仓库中的版本不一致, 因此无法直接push, 需要先pull, 然后再进行push操作.
版本回退
- 使用
git log或者git reflog命令查看commitID属性 - 使用
git reset --hard <commitID>来进行版本回退
文件忽略
在当前git目录下创建.gitignore文件, 在其中配置想要忽略的文件
分支
创建分支
语法: git branch <branchName>
查看分支
语法: git branch
从下面的示例可以看出, 创建了一个名为X的分支, 并显示了出来
C:\Users\24563\Downloads\Documents\XNote>git branch X
C:\Users\24563\Downloads\Documents\XNote>git branch
X
* master
切换分支和当前分支Head
当前分支是指在本地工作区中操作的那个分支. Head指向哪个分支, 则那个分支即为当前分支. 可以使用git log查看当前分支, 如下所示当前分支为master分支.
C:\Users\24563\Downloads\Documents\XNote>git log
commit 93a491c96359852a42ffff8c7300ac3640416cd7 (HEAD -> master, XNote/master, X)
Author: yimeisuren <2456387473@qq.com>
Date: Fri Jun 10 10:16:07 2022 +0800
重新提交
使用git checkout -b <branchName>进行切换分支, 添加-b选项表示如果分支不存在, 则先进行创建分支, 再进行切换, 如下所示
C:\Users\24563\Downloads\Documents\XNote>git checkout X
Switched to branch 'X'
M vue-admin-template
M "\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206/Git\345\222\214GitHub.md"
C:\Users\24563\Downloads\Documents\XNote>git log
commit 93a491c96359852a42ffff8c7300ac3640416cd7 (HEAD -> X, XNote/master, master)
Author: yimeisuren <2456387473@qq.com>
Date: Fri Jun 10 10:16:07 2022 +0800
重新提交
合并分支
语法: git merge <branchName>
将<branchName>分支中的提交内容合并到当前分支中
面试题
Git 代码冲突怎么处理
代码冲突的原因:出现冲突的原因是本地文件的版本和目标分支中文件的版本不一致。当出现同一行的内容不同时,在进行合并的时候就会产生冲突。
代码冲突发生情况:
- 多个分支向主分支合并时
- 同一个分支下 push 或 pull 操作时
处理办法:发生代码冲突需要手动合并代码,选择最终的版本。可以通过图形界面,例如
在哪个分支进行项目开发
不直接在主分支进行开发,而是有技术经理创建独立的开发分支,在独立的开发分支进行开发,最后由技术经理将开发分支合并到主分支。