在ubuntu系统下部署并使用git教程
1.下载并安装
bash
sudo apt update
sudo apt install git
2.检验安装是否成功
bash
git --version
若输出git版本号即为成功。
3.配置参数
bash
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global credential.helper store #保存
git config --global --list #查看刚才保存内容

4.新建仓库
bash
mkdir learn-git
cd learn-git
git init

若想在当前文件夹下的新文件夹创建git仓库
bash
git init [想要创建的文件夹名字]
5.克隆项目
bash
git clone [github项目地址]
6.工作区和文件状态
6.1 Git 的工作区
Git 的工作区(Working Directory)是你在本地计算机上实际的操作文件目录。它是你进行开发、修改代码的地方。工作区中的文件可以分为以下几种状态:
- 未跟踪(Untracked):文件刚创建,Git 还没有记录它的历史。
- 已修改(Modified):文件已经被修改,但还没有被暂存。
- 已暂存(Staged):文件已经被添加到暂存区,准备提交到仓库。
- 已提交(Committed):文件已经被提交到 Git 仓库,成为历史记录的一部分。
6.2 Git 的暂存区
暂存区(Staging Area,也称为索引区 Index)是 Git 的一个中间区域,用于暂存即将提交的文件。暂存区的作用是让你可以灵活选择哪些修改需要提交,哪些不需要。
- 暂存文件 :使用
git add
命令将修改的文件添加到暂存区。 - 取消暂存 :使用
git restore --staged <file>
命令将文件从暂存区移出。
6.3 Git 的仓库
仓库(Repository)是 Git 用来存储项目历史记录的地方。它包含了所有的提交记录、分支、标签等信息。仓库中的文件状态是"已提交"的。
6.4 文件状态的转换
文件在工作区、暂存区和仓库之间会经历以下状态转换:
- 未跟踪(Untracked) :
- 文件刚创建,Git 不知道它的存在。
- 使用
git add <file>
将文件添加到暂存区,状态变为"已暂存"。
- 已修改(Modified) :
- 文件已经被修改,但还没有被暂存。
- 使用
git add <file>
将文件添加到暂存区,状态变为"已暂存"。
- 已暂存(Staged) :
- 文件已经被添加到暂存区,准备提交。
- 使用
git commit
将文件提交到仓库,状态变为"已提交"。
- 已提交(Committed) :
- 文件已经被提交到仓库,成为历史记录的一部分。
- 如果文件在工作区中被修改,状态会回到"已修改"。
6.5 文件状态的命令
Git 提供了一些命令来查看和管理文件状态:
-
查看文件状态 :
bashgit status
这个命令会显示当前工作区和暂存区的文件状态,包括哪些文件是"已修改"或"已暂存"。
-
暂存文件 :
bashgit add <file>
将文件从"未跟踪"或"已修改"状态添加到暂存区。
-
取消暂存 :
bashgit restore --staged <file>
将文件从暂存区移出,状态回到"已修改"。
-
提交文件 :
bashgit commit -m "提交信息"
将暂存区的文件提交到仓库,状态变为"已提交"。
-
查看提交历史 :
bashgit log
6.6 示例:文件状态的转换
假设你正在开发一个项目,以下是一个文件状态的转换过程:
-
创建一个新文件 :
bashtouch new-file.txt
- 文件状态:未跟踪(Untracked)。
-
查看文件状态 :
bashgit status
- 输出:
Untracked files: new-file.txt
。
- 输出:
-
暂存文件 :
bashgit add new-file.txt
- 文件状态:已暂存(Staged)。
-
查看文件状态 :
bashgit status
- 输出:
Changes to be committed: new-file.txt
。
- 输出:
-
提交文件 :
bashgit commit -m "Add new-file.txt"
- 文件状态:已提交(Committed)。
-
修改文件 :
bashecho "Hello, Git!" >> new-file.txt
- 文件状态:已修改(Modified)。
-
查看文件状态 :
bashgit status
- 输出:
Changes not staged for commit: new-file.txt
。
- 输出:
-
暂存修改 :
bashgit add new-file.txt
- 文件状态:已暂存(Staged)。
-
提交修改 :
bashgit commit -m "Update new-file.txt"
- 文件状态:已提交(Committed)。
7.git reset 回退版本
bash
git reset --soft #保存工作区和暂存区内容
git reset --hard #都不保存
git reset --mixed #工作区内容保存,暂存区不保存
8.git diff 查看差异
git diff
不加参数默认比较工作区和暂存区文件差别
当你工作区的文件已提交到暂存区再修改工作区内的文件时:
git diff HEAD
比较工作区与版本库的差异
git diff --cached
比较暂存区和版本库之间的差异
git diff 两个提交版本ID
比较两次提交之间差异
git diff HEAD~ HEAD
HEAD表示最新版本 HEAD~表示最新版本的上一个版本
9.如何在版本库中删除文件
1.直接用rm进行本地删除

此时只删除了本地工作区的文件,暂存区的文件还没有删除。可以使用命令进行查看:
bash
git ls-files

此时能看到file1文件还在暂存区中,可以使用以下两条命令均可删除。
bash
git add .
git add file1.txt

2.直接使用git rm进行删除
git rm <文件名>
无论哪种删除,删除完后记得提交
10. gitignore
.gitignore
文件的主要作用是告诉 Git 哪些文件或者文件夹是不需要被纳入版本控制的。也就是说,当 Git 在对文件进行追踪和管理时,会忽略掉 .gitignore
文件中列出的那些文件。它通常位于版本仓库的根目录下。例如,如果你有一个名为 "my - project" 的 Git 仓库,那么 .gitignore
文件一般放在 "my - project/.gitignore"。
常见的忽略内容示例
- 编译产物:在软件开发中,如 C++ 的
.o
文件、Java 的.class
文件等。这些文件是通过编译源代码生成的,在版本控制中不需要关注它们,因为它们可以通过源代码重新生成。*.o
*.class
- 临时文件:像文本编辑器产生的临时备份文件(如 Emacs 的
*~
文件),或者 IDE(集成开发环境)产生的临时文件(如 IntelliJ IDEA 的.idea/workspace.xml
)。*~
.idea/workspace.xml
- 环境配置文件:例如,包含数据库连接信息、API 密钥等敏感数据的配置文件。这些信息通常因开发环境不同而有所差异,并且不应该被公开在版本库中。
config/database.yml
- 操作系统相关的文件:不同操作系统的系统文件,如 Windows 的
Thumbs.db
文件(用于存储文件夹缩略图信息)。Thumbs.db
本次演示编辑.gitignore
忽略log日志文件。
bash
vim .gitignore

11. SSH配置和克隆仓库
现在注册github账号并创建新的仓库用于远程连接
- 使用
https
方式将代码push到远程仓库时会验证账户和密码。 - 使用
ssh
不需要验证用户名和密码,但需要在git仓库里添加SSH公钥。
配置公钥
bash
cd .ssh
ssh-keygen -t rsa -b 4096
#回车然后输入密码
ls -ltr #生成了一个id_rsa.pub的公钥
vim id_rsa.pub#将里面内容全部复制

回到github网站点击个人头像setting,找到SSH and GPG keys 创建新SSH keys ,把内容复制进去,随便取名。
返回新建远程仓库,点击url旁边复制按钮,本地克隆。
本地文件上传
bash
cd remote-repo/
echo hello>hello.txt
git add .
git commit -m "first commit"
git push

如果想把远程仓库内的内容更新到本地仓库,则需要使用
bash
git pull
12.关联本地仓库和远程仓库
-
添加远程仓库:
使用
git remote add
命令将远程仓库关联到本地仓库。例如,假设远程仓库 URL 是https://github.com/username/repository.git
,你可以这样做:bashgit remote add origin https://github.com/username/repository.git
其中,
origin
是远程仓库的默认名称,通常你可以保持这个名称,但也可以自定义为其他名字。 -
查看远程仓库是否添加成功:
使用以下命令查看远程仓库信息:
bashgit remote -v
你应该能看到类似这样的输出:
bashorigin https://github.com/username/repository.git (fetch) origin https://github.com/username/repository.git (push)
-
推送到远程仓库:
如果你已经在本地做了提交,并且想要将它们推送到远程仓库,可以使用:
bashgit push -u origin master
这里,
master
是你要推送的分支。如果你使用的是main
分支,命令应该是:bashgit push -u origin main
-
获取远程仓库更新:
如果远程仓库有更新,你可以使用以下命令从远程仓库拉取(fetch)或合并(pull)更新:
bashgit pull origin main
这样,本地仓库就和远程仓库关联并同步了。如果遇到合并冲突,你可以手动解决冲突后提交。
未完待续