分布式版本控制系统Git的使用最全最细;

1.什么是Git

Git是一个分布式的版本控制软件,Git在每个用户都有一个完整的服务器,然后有一个中央服务器,用户可以将代码提交到本地,没有网络也可以提交到本地,然后在有网络的时候提交到中央服务器,这样就方便了开发者,而相比SVS和SVN都是集中式的版本控制系统,工作的时候需要先从中央服务器获取作新的代码,改完后需要提交,如果是一个很大的文件则需要足够快的网络才能完成提交。而使用分布式的版本控制系统,每个用户都是一个完整的版本库,即使没有中央服务器也可以提交代码或者回滚,最终再把改好的代码提交至中央服务器进行合并即可。

  • 软件,类似于qq、office等安装到电脑才能使用的工具。
  • 版本控制,类似于毕业论文,视频剪辑等需要反复修改和保留原历史数据;
  • 分布式
  1. 文件夹拷贝
  2. 本地版本控制
  3. 集中式版本控制
  4. 分布式版本控制

2.为什么要做版本控制

要保留之前所有的版本,以便回滚和修改。

3.安装Git

安装Git软件有很多方式:

3.1Windows系统

https://git-scm.com/download/win 

3.2Linux系统

https://git-scm.com/download/linux 

3.3MacOS系统

https://git-scm.com/download/mac 

4.Git的使用

4.1初始化目录

想让git对一个目录进行版本控制需要对目录初始化;
1.进入要管理的文件夹
2.执行初始化命令

sh-3.2# mkdir apps sh-3.2# cd apps/ # 这个时候这个目录初始化完成,可以进行工作; sh-3.2# git init Initialized empty Git repository in /private/etc/apps/.git/ #会发现多了一个目录.git sh-3.2# ls -l total 0 drwxr-xr-x  9 root  wheel  288  8 26 17:48 .git 

4.2新建文件提交

sh-3.2# cat haitang.txt  haitang  # 新增的文件和修改过的人间都是红色的,这里显示新增了一个文件的状态是未追踪状态,使用git add来对其进行管理 sh-3.2# git status On branch master  No commits yet  Untracked files:   (use "git add <file>..." to include in what will be committed) 	haitang.txt  nothing added to commit but untracked files present (use "git add" to track) 

4.3管理文件

sh-3.2# git add haitang.txt  # 这个时候这个文件由红色变成了绿色。 sh-3.2# git status On branch master  No commits yet  Changes to be committed:   (use "git rm --cached <file>..." to unstage) 	new file:   haitang.txt 

4.4配置个人信息

说明是谁在使用;

sh-3.2# git config --global user.email "haitang@qq.com" sh-3.2# git config --global user.name "haitang" 

4.5提交至本地版本库;

使用commit提交。"里面为描述信息" sh-3.2# git commit -m "海棠one" [master (root-commit) 61dbe71] 海棠one  1 file changed, 1 insertion(+)  create mode 100644 haitang.txt 

4.6查看log日志

这里可以看到提交的历史记录 sh-3.2# git log commit 61dbe71f56fc1176d6f158fef61572b3515db841 (HEAD -> master) Author: haitang <haitang@qq.com> Date:   Fri Aug 26 17:58:50 2022 +0800      海棠one 

4.7回滚

添加一行执行add执行回滚操作。

sh-3.2# echo "海棠two" >> haitang.txt  对这个文件进行追踪 sh-3.2# git add .  再次提交至本地版本库 sh-3.2# git commit -m  "haitang two" [master 65a1399] haitang two  1 file changed, 1 insertion(+)  查看日志 sh-3.2# git log commit 65a13999930ce95cd59fc09e1423ab20dcc402c6 (HEAD -> master) Author: haitang <haitang@qq.com> Date:   Fri Aug 26 18:03:28 2022 +0800      haitang two  commit 61dbe71f56fc1176d6f158fef61572b3515db841 Author: haitang <haitang@qq.com> Date:   Fri Aug 26 17:58:50 2022 +0800      海棠one  进行回滚, 回滚方式为 git reset --hard 版本号 这个版本号不用全部写完,7位即可 sh-3.2# git reset --hard 61dbe71 HEAD is now at 61dbe71 海棠one  验证是回滚完成 sh-3.2# cat haitang.txt  haitang 

4.8升级

可以通过reglog查看历史全部的记录

sh-3.2# git reflog 61dbe71 (HEAD -> master) HEAD@{0}: reset: moving to 61dbe71 65a1399 HEAD@{1}: commit: haitang two 61dbe71 (HEAD -> master) HEAD@{2}: commit (initial): 海棠one  要想回到haitangtwo执行git rest --hard 版本号即可; sh-3.2# git reset --hard 65a1399 HEAD is now at 65a1399 haitang two  sh-3.2# cat haitang.txt  haitang 海棠two 

4.9克隆项目到本地

sh-3.2# git clone git@gitee.com:good-news/apps.git Cloning into 'apps'... remote: Enumerating objects: 12, done. remote: Counting objects: 100% (12/12), done. remote: Compressing objects: 100% (6/6), done. remote: Total 12 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (12/12), done. sh-3.2#   

5.Git分支命令

5.1查看分支

master前面有个*表示是在master分支

sh-3.2# git branch  * master 

5.2创建分支

git branch xx分支名

sh-3.2# git branch dev 可以看到创建的dev分支 sh-3.2# git branch    dev * master 

5.3切换分支

显示已经切换为dev分支

sh-3.2# git checkout dev Switched to branch 'dev'  可通过branch来查看在哪个分支,可以看见dev分支前面有一个* sh-3.2# git branch  * dev   master 

5.4代码合并

在dev分支上创建文件并提交 sh-3.2# touch dev.txt && echo "hello git" > dev.txt sh-3.2# git add . sh-3.2# git commit -m "dev 第一次提交" [dev ea353ff] dev 第一次提交  1 file changed, 1 insertion(+)  create mode 100644 dev.txt   切换分支 sh-3.2# git checkout master Switched to branch 'master'  在master分支上合并dev分支上的代码; sh-3.2# git merge dev Updating 65a1399..ea353ff Fast-forward  dev.txt | 1 +  1 file changed, 1 insertion(+)  create mode 100644 dev.txt   没有合并之前,在master分支上是看不见dev分支上的代码;  sh-3.2# cat dev.txt  hello git 

5.5删除分支

git branch -d 分支名

sh-3.2# git branch -d dev Deleted branch dev (was ea353ff).  删除了可以看见就剩下一个分支 sh-3.2# git branch * master 

6.将代码托管至远程服务器

github: https://github.com/
gitlab: 需在服务器上部署;
gitee:https://gitee.com/
选择gitee来测试

6.1创建一个仓库

分布式版本控制系统Git的使用最全最细;

6.2会生成一个仓库信息

分布式版本控制系统Git的使用最全最细;

添加仓库,注意我们配置的是SSH类型 sh-3.2# git remote add origin git@gitee.com:good-news/apps.git 

6.3本地push代码至远程仓库

我们为什么能上传代码到远程仓库呢?因为我们把公钥放在了gitee,我现在把公钥拿掉,验证是否能push

sh-3.2# git push origin master Enumerating objects: 9, done. Counting objects: 100% (9/9), done. Delta compression using up to 16 threads Compressing objects: 100% (4/4), done. Writing objects: 100% (9/9), 699 bytes | 699.00 KiB/s, done. Total 9 (delta 0), reused 0 (delta 0) remote: Powered by GITEE.COM [GNK-6.4] To gitee.com:good-news/apps.git  * [new branch]      master -> master 

6.4无密钥验证是否能push代码

6.4.1 编辑第三次提交 sh-3.2# echo "haitang three"  >>haitang.txt 6.4.2 追踪文件 sh-3.2# git add . 上传至本地版本库 sh-3.2# git commit -m "haitang three" [master 9c303e7] haitang three  1 file changed, 1 insertion(+)   6.4.3 这里看到是不能上传的,因为把公钥拿掉了。 sh-3.2# git push origin master git@gitee.com: Permission denied (publickey). fatal: Could not read from remote repository. 

6.5配置SSH上下传代码;

拿到本地的公钥上传至gitee个人账户下 sh-3.2# cat /var/root/.ssh/id_rsa.pub  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZRnFbJGoALs8wMC+EJS7Yewdre8XDaheQNW6U0gmf30mZvzIspqbr5uIVnIwQaT5usYgy2EGjJ2xLRrxfwE2I8UKDyeothIM6zeQxW9Ah+tXeIgWSbX83esMRx/PxysGp4IIykW8+C5Lt3/aUWD7ABHYU2Di4aSj/71+76z877/wrgPYaWvAarU+ZRBzV7oYyXeLLy7lLuxZkFyfyArjzL7pDslOTj+fGcfAUyeOdUjyWhL+7CtvaY/fyXU/hkw9k770XNKQh4QYjZztS/FhJnwOi8OcS2j7kLJDAiaJYKKpCamAec7/f2e16f+HWCz41Wc4DFfJvlyo1/x6ADLnMmPoFoZrKLYOOxlKlCu9/SAomMOCf0qxyl 

分布式版本控制系统Git的使用最全最细;

6.6测试再次上传代码

这次上传是没有问题的

sh-3.2# git push origin master Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 16 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 292 bytes | 292.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: Powered by GITEE.COM [GNK-6.4] To gitee.com:good-news/apps.git    ea353ff..9c303e7  master -> master 

发表评论

评论已关闭。

相关文章