Git工具的简单使用
写在最前
Git命令参考:Git命令大全
1. 为什么使用Git工具
- 对代码版本迭代进行管理,具体请自行百度
- Git和SVN的区别?具体百度
参考资料
【狂神说Java】Git最新教程通俗易懂
2. Git的安装和卸载
2.1 Git的安装
参考资料
Git 详细安装教程(详解 Git 安装过程的每一个步骤)
其实选对路径勾选好环境,直接都是下一步即可。
-
- 安装完成出现三个图标,Git bash、Git cmd和Git gui
-
- Git Bash:unix与linux风格的命令行,使用最多,推荐最多
-
- Git CMD:windows风格的命令行
-
- Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
2.2 Git的卸载
-
- 在控制面板uninstall git
-
- 清理环境变量
- 清理环境变量
3. Git配置
Git的配置全部以文件形式保存在本机上
环境变量主要是为了全局使用Git
-
- 查看Git的配置:
git config -l
- 查看Git的配置:
R7000@DESKTOP-12SFREG MINGW64 ~/Desktop
$ git config -l
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=D:/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
-
- 查看Git的系统配置:
git config --system --list
- 查看Git的系统配置:
R7000@DESKTOP-12SFREG MINGW64 ~/Desktop
$ git config --system --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=D:/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
-
- 查看Git的用户信息:
git config --global --list
主要显示用户的邮箱和用户名
如果出现fatal: unable to read config file 'C:/Users/R7000/.gitconfig': No such file or directory
原因是没有配置用户名和邮箱。
- 查看Git的用户信息:
配置用户名:
git config --global user.name <用户名>
配置邮箱信息:git config --global user.email <邮箱信息>
4. Git的核心工作原理
参考资料
Git:工作原理(核心)
git的工作原理
4.1 关键点-四个工作区
-
- Workspace:工作区,也就是我们写代码的文件夹,平时存放代码的地方。
-
- Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即提交到文件列表信息
-
- Repository:仓库区(或**本地仓库,本地仓库的作用就是追踪你代码文件的改动**),是安全存放数据的位置,这里有你提交到所有版本的数据,实际本身还是本地的文件,其中HEAD指向最新放入仓库的版本。
-
- Remote:远程仓库,托管代码的服务器,也就是Git联网的远端仓库。
4.2 Git工作流程和基本命令
-
- 拉取或者初始化Git项目;拉取Git项目:
git clone ......git
;将某个工作区初始化为Git项目git init
- 拉取或者初始化Git项目;拉取Git项目:
-
- 在工作目录中添加、修改文件;对应状态为已修改(modified)
-
- 将需要进行版本管理的文件放入暂存区域;
git add <文件名>
或者git add .
,对应状态为已暂存(staged)
- 将需要进行版本管理的文件放入暂存区域;
-
- 将暂存区域的文件提交到git仓库;
git commit
,和git commit -m "文件名"
对应状态为已提交(committed)
- 将暂存区域的文件提交到git仓库;
-
- 因此,
Git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
- 因此,
-
- 查看Git文件状态:
git status
或者单个文件状态git status <文件名>
- 查看Git文件状态:
tips:由于直接Git拉取下来的项目在master分支/main分支,而开发过程中可能用的不是这个分支,需要采用Git克隆某个分支:
git clone -b 分支名 ....git
tips:如果存在不想进行git操作的文件和文件夹,则在工作区中新建文件
.gitgnore
,参考内容Git 开发必备 .gitignore 详解!【建议收藏】
5. Git项目上载仓库的基本操作
5.1 Git仓库创建
-
- 使用码云Gitee:参考码云注册和使用
-
- 使用Github:参考百度
-
- 使用Gitlab:参考百度
-
- 使用Azure DevOps:见下
-
4.1 注册Azure DevOps:
-
4.2 新建项目
-
4.3 新建Repo创建Git代码仓库
![在这里插入图片描述](https://img-blog.csdnimg.cn/41ce4868137b4d20a85d4641b5bbc8b6.png -
4.4 申请访问的token,这一步对应生成SSH公钥的意思
- 4.5 在repo中对项目进行操作:包括创建分支,上传文件等,最后项目有main、develop(基于main)、userA(基于develop)和userB(基于develop)四个分支,以及数个文件(在userA分支上)
- 4.6 点击clone复制项目的git连接
5.1 拉取Git项目
-
- 在本地磁盘新建文件夹gittest,右键打开git bash
- 在本地磁盘新建文件夹gittest,右键打开git bash
-
- 克隆userA的分支,由于azure develop的原因可能需要输入token的密码:
git clone -b userA ... git
- 克隆userA的分支,由于azure develop的原因可能需要输入token的密码:
5.3 本地新建文件上传到Git项目仓库
- 新建文件采用linux命令:
touch test_a.txt
- 添加到缓存区:
git add test_a.txt
- 添加到本地仓库:
git commit -m test_a.txt
- 上传到Git代码仓库:
git push
R7000@DESKTOP-30AFPHP MINGW64 /d/Workspace/Py/gitest/GitTestProject (userA)
$ touch test_a.txt
R7000@DESKTOP-30AFPHP MINGW64 /d/Workspace/Py/gitest/GitTestProject (userA)
$ ls
README.md dictionary.py list.py test_a.txt
csv_test.py if_elif_else.py matplotlib_test.py
R7000@DESKTOP-30AFPHP MINGW64 /d/Workspace/Py/gitest/GitTestProject (userA)
$ git status
On branch userA
Your branch is up to date with 'origin/userA'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
test_a.txt
nothing added to commit but untracked files present (use "git add" to track)
R7000@DESKTOP-30AFPHP MINGW64 /d/Workspace/Py/gitest/GitTestProject (userA)
$ git add test_a.txt
R7000@DESKTOP-30AFPHP MINGW64 /d/Workspace/Py/gitest/GitTestProject (userA)
$ git commit -m test_a.txt
[userA 90a2d9c] test_a.txt
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test_a.txt
R7000@DESKTOP-30AFPHP MINGW64 /d/Workspace/Py/gitest/GitTestProject (userA)
$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 266 bytes | 266.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Analyzing objects... (3/3) (34 ms)
remote: Storing packfile... done (109 ms)
remote: Storing index... done (53 ms)
To https://dev.azure.com/601098009/GitTestProject/_git/GitTestProject
eea77e1..90a2d9c userA -> userA
6. Git分支和远程操作
6.1 基本命令
- 列出所有本地分支:
git branch
- 列出所有远程分支:
git branch -r
- 列出所有本地分支和远程分支:
git branch -a
- 新建一个分支,但依然停留在当前分支:
git branch [branch-name]
- 新建一个分支,并切换到该分支:
git checkout -b [branch]
- 新建一个分支,指向指定commit:
git branch [branch] [commit]
- 新建一个分支,与指定的远程分支建立追踪关系:
git branch --track [branch] [remote-branch]
- 切换到指定分支,并更新工作区:
git checkout [branch-name]
- 切换到上一个分支:
git checkout -
- 建立追踪关系,在现有分支与指定的远程分支之间:
git branch --set-upstream [branch] [remote-branch]
- 合并指定分支到当前分支:
git merge [branch]
- 选择一个commit,合并进当前分支:
git cherry-pick [commit]
- 删除分支:
git branch -d [branch-name]
- 删除远程分支:
git push origin --delete [branch-name]
和git branch -dr [remote/branch]
- 下载远程仓库的所有变动:
git fetch [remote]
- 显示所有远程仓库:
git remote -v
- 显示某个远程仓库的信息:
git remote show [remote]
- 增加一个新的远程仓库,并命名:
git remote add [shortname] [url]
- 取回远程仓库的变化,并与本地分支合并:
git pull [remote] [branch]
- 上传本地指定分支到远程仓库:
git push [remote] [branch]
- 强行推送当前分支到远程仓库,即使有冲突:
git push [remote] --force
- 推送所有分支到远程仓库:
git push [remote] --all