overview
Git是—款免费、开源的分布式版本控制系统,主要用于敏捷高效地处理任何或小或大的项目。Git起源于Linus Torvalds为了帮助管理Linux内核开发而开发的开放源码的版本控制软件。
本文档主要学习代码的托管。
git的下载
git的工作原理
4个专用名词:
workspace: 工作区
staging area: 暂存区/缓冲区
local repository: 本地仓库
remote repository: 远端仓库
常用命令:
add: 把当前文件放入暂存区域。
commit: 给暂存区域生成快照并提交。
push: 从本地仓库推送到远端仓库
fetch/clone: 从远端仓库提取/克隆到本地仓库
checkout: Checkout命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支。
pull: 从远端仓库拉取到工作区
一.创建仓库
- 在桌面创建一个test_repostiory文件夹
- 登录码云https://gitee.com/
- 在码云里面创建仓库,步骤如下:
1)点击右上角加号
2)填写新建仓库信息
3)选项介绍:
4)创建成功示例:
文件介绍:
其他文件可以百度一下,这里就不讲了。
下面的内容是命令操作:
二.初始化git:
在新建的test_repository文件夹下右键打开"Open Git Batch ere
",输入:git init,初始化git。会在该目录下生成.git的隐藏目录。
PS C:\myrepository> git init
Initialized empty Git repository in D:/test_repostory/.git/
初始化后,在test_repositroy文件夹会生成一个隐藏的.git文件,如下图:
三.在git中配置仓库的用户名&邮箱。
gitee如何查看用户名和邮箱?
答:点击个人主页,如下图红框中就是用户名:
配置用户名和邮箱:
l@XiaoXinPro-16-ARP8 MINGW64 /d/test_repostory (master)
$ git config --global user.name "xxxxxng123"
$ git config --global user.email "xxxxx@qq.com"
git config --global命令:表示git的全局配置。
验证用户名和邮箱:
l@XiaoXinPro-16-ARP8 MINGW64 /d/test_repostory (master)
$ git config user.name
xxxxxng123
$ git config user.mail
xxxxx@qq.com
查看所有配置信息:
l@XiaoXinPro-16-ARP8 MINGW64 /d/test_repostory (master)
$ git config --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=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
credential.helper=manager-core
credential.helper=store --file C:/Users/lvshi/.my-credentials
gui.recentrepo=C:/myrepository
credential.https://gitee.com.provider=generic
safe.directory=C:/myrepository/pythonProject
user.name=lvshiliang123
user.mail=498865371@qq.com
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
(END)
输入q退出。
四.关联远程仓库。
获取仓库地址:
配置Git关联仓库
$ git remote add origin https://gitee.com/xxxxxng123/test-repositroy.git
$ git remote
origin
git remote add origin:表示添加一个远程的仓库到本地。
git remote:表示查看当前关联的库。
五.按照工作原理图命令操作文件。
1.首先,从远端仓库拉取目录,防止本地文件覆盖远端仓库。会弹出登录授权对话框
提交前先对比本地仓库和远端仓库的目录结构保持一致。如果不一样,则先进行拉取,操作如下:
$ git pull --rebase origin master
示例:
$ git pull --rebase origin master
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), 7.76 KiB | 264.00 KiB/s, done.
From https://gitee.com/xxxxxxng123/test-repositroy
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
Successfully rebased and updated refs/heads/master.
查看拉取结果:
$ dir #查看目录
PS C:\myrepository> dir
Directory: C:\myrepository
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 30/08/2024 23:29 .conda
d----- 27/09/2024 21:45 .idea
d----- 08/06/2024 10:58 .vscode
d----- 21/08/2024 23:44 1.Python课程笔记
d----- 27/09/2024 21:45 2.Common tools
d----- 20/12/2023 23:43 3.网络可编程和自动化
d----- 16/06/2024 11:08 4.datacom备考
d----- 21/07/2024 22:12 Crash Course 3rd Edition
d----- 26/08/2024 00:28 HCIA实验
d----- 20/07/2024 22:58 MyGame
d----- 15/06/2024 18:06 Third-partyPrograms
d----- 30/08/2024 23:25 venv
d----- 30/08/2024 23:26 venv1
-a---- 20/12/2023 23:43 858 README.en.md
-a---- 20/12/2023 23:43 948 README.md
PS C:\myrepository>
2.workspace—ADD–>staging area
$ git add .
git add .:表示添加全部,还可以用(git add -A)
git add *.c: 表示添加后缀为.c的全部。使用通配符※。
3. staging area --COMMIT–> locrepositoryory
$ git commit -m '第一次提交'
示例:
$ git commit -m '第一次提交'
[master (root-commit) 3c07d49] 第一次提交
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test.txt
如果提示以下信息:
git commit -m '第一次提交'
On branch master
nothing to commit, working tree clean
表示文件没有发送变化。可以不用执行commit。或者修改以下重新commit。
4.push 注意:不要强制提交,会覆盖远程仓库。local repository to remote repostory
$ git push --set-upstream origin master
示例:
$ git push --set-upstream origin master
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), 295 bytes | 295.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/xxxxxxng123/test-repositroy.git
dc6aea5..b721e74 master -> master
branch 'master' set up to track 'origin/master'.
5.clone remote repository to local repostory
复制一个其它库的https地址,如我的另一个库的地址:https://gitee.com/xxxxxxng123/myrepository.git
$ git clone https://gitee.com/xxxxxxng123/myrepository.git
示例:
$ git clone https://gitee.com/xxxxxxng123/myrepository.git
Cloning into 'myrepository'...
remote: Enumerating objects: 641, done.
remote: Counting objects: 100% (68/68), done.
remote: Compressing objects: 100% (65/65), done.
remote: Total 641 (delta 24), reused 0 (delta 0), pack-reused 573
Receiving objects: 100% (641/641), 928.38 KiB | 475.00 KiB/s, done.
Resolving deltas: 100% (281/281), done.
检查克隆结果:
六.其他命令
1.查看上传版本
$ git log
commit b721e742fdc31250b9614a9c7f0f27d695ef8fe1 (HEAD -> master, origin/master)
Author: xxxxxng123 <xxxxxxx@qq.com>
Date: Tue Dec 26 21:39:28 2023 +0800
第一次提交
commit dc6aea545c8b8d0c00e8693eff25ed79beb6fac3
Author: 阿白 <xxxxxxx@qq.com>
Date: Tue Dec 26 12:32:15 2023 +0000
Initial commit
commit dc6aea545c8b8d0c00e8693eff25ed79beb6fac3:表示每次上传的版本唯一编号。
2.删除所有文件
$ git rm *.*
rm 'README.en.md'
rm 'README.md'
rm 'test.txt'
验证删除结果:
$ dir
3.回到某一次提交点
根据唯一版本编号,回到前面某一次提交状态。只回退本地操作,不影响远端。
- git reset --hard b721e742fdc31250b9614a9c7f0f27d695ef8fe1
检查结果:
$ dir