版本控制
2025-03-26 21:51:41 0 举报
AI智能生成
版本控制
作者其他创作
大纲/内容
Git介绍
总体介绍
概念
Git 是目前世界上最先进的分布式版本控制系统 (没有之一)
作用
用于团队开发的代码管理
安装校验
安装
Git下载地址
https://git-scm.com/downloads
Git安装(Window/Mac)
选择不同系统安装包安装
检验是否安装成功
出现Git Bash命令行工具或Git GUI工具
git --version 查看git安装版本
校验
通过命令行 git, 没有提示不是内部或外部命令即可
Git 结构
工作区(Working Directory)
版本库(repository)
暂存区(stage/index)
master
head唯一指向
Git 文件的4种状态
Untracked(未被跟踪的)
此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify(文件已经入库)
文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
Modified(文件已修改)
文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
Staged(暂存状态)
执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
基础命令
Git基本命令
git init
初始化git仓库
出现.git文件夹
git add
git add
将文件添加到暂存区
git add .
将工作空间下所有文件添加到暂存区(new,modifyed)
git add -A
将工作空间下所有文件添加到暂存区(new,modifyed,delete)
git add -u
将工作空间下所有文件添加到暂存区(modifyed,delete)
git commit
git commit -m
将暂存区的文件提交到版本库
git commit -am
跳过git add 命令,直接将工作区所有已跟踪的文件提交到版本库,未跟踪的(untracked)文件不能使用该命令
git status
git status -s
git log
git log --graph --oneline
git log --oneline
git config
git全局配置命令
git config --global user.name zivszheng
git config --global user.email zivs.zheng@gmail.com
查看配置
git config --list
单个项目配置
项目父路径/.git/config文件
git stash
git stash
暂存本地修改内容(不想提交修改的内容,想切换分支)
git stash list
查看暂存的历史记录
git stash apple --index
恢复之前暂存的某个记录
git stash drop --index
删除某个暂存记录
git rm
用于从工作区和索引中删除文件
常见使用:删除已经提价到远程仓库的 .idea, .seting 文件/文件夹(项目构建自动生成的)
git rm -r .idea
git commit -m 'remove .idea'
git push origin master
Git commit 解析
commit Object/master/HEAD
tree
项目目录结构
parent
指向上一个commit Object
author/commiter
commit message
查看对象
git cat-file -p HEAD/唯一ID
git cat-file -t HEAD/唯一ID
Git diff
git diff
比较本地工作空间和staged区的差异
git diff -- staged
比较staged区和本地仓库中的差异
git diff HEAD
比较本地工作空间和本地仓库中的差异
Git 撤销操作
git commit --amend
撤销上一次提交将暂存区的文件重新提交(改写提交)
git checkout --filename
拉取暂存区的文件并将其替换工作区的文件
注意与git checkout branchname 区别
git reset HEAD --filename
拉取最近一次提交到版本库中的文件到暂存区,该操作不影响工作区
git reset --option 版本号
--hard
硬回滚(不可逆的),即暂存区,工作区全部用指定提交版本的目录树替换掉
--mixed
mixed或不使用参数,覆盖暂存区,但不覆盖工作区
--soft
软回滚,不进行暂存区和工作区的覆盖
Git 分支
git 分支创建、修改、删除、切换
git branch
查看分支
查看分支来自哪一个分支
git reflog --date=local | grep
git branch
创建分支
git branch -m
修改分支名称
git checkout
切换分支
git checkout -b
创建并切换分支
合并本地分支
git merge 被合并到master的分支名
git branch -d
删除分支
分支合并
git merge
合并指定分支到当前分支(Fast forward)
git merge -no-ff -m
合并指定分支到当前分支(-no-ff 参数表示禁用Fast forward)
Git远程仓库
git clone
git clone http://gitlab.xqchuxing.com/gittest/xqchuxing-test.git
git remote
git remote -v
查看远程信息
git push
git push -u origin master
将本地上分支上推到
git pull
git pull origin dev:master
获取远程的dev分支和本地的master分支合并
git pull origin dev
获取远程的dev分支和当前分支合并,实际是先执行git fetch 后再执行git merge
git fetch
git fetch origin dev
获取远程dev分支但不做合并
关联远程仓库
git remote add origin http://gitlab.xqchuxing.com/gittest/xqchuxing-test.git
Git tag
git tag
查看当前所有tag
git tag
创建tag
git tag
创建一个指向某一次提交的tag
git tag -a -m
git show
查看tag
Git Help
git help
git help
官网文档地址 https://git-scm.com/book/zh/v2
配置
工作流
总体介绍
准备工作
远程仓库有哪些
gitee
码云
gitlab
github
创建github远程仓库
1. 进入首页: https://github.com
2. 注册用户
3. 登录并创建远程仓库
工作区-->远程仓库
1. 创建工作区
git init
2. 把工作区的文件添加在暂存区
git add .
添加所有文件到暂存区
git add 文件名
添加指定到暂存区
3. 把暂存区文件提交到本地仓库
git commit -m "xxx"
"xxx"对于本次提交的描述
4. 把本地仓库的文件提交到远程仓库
1. 首次提交
git push -u 远程仓库地址 master
-u 参数表示首次提交携带用户名和密码
2. 非首次提交
git push 远程仓库地址
远程仓库-->工作区
1. 首次从远程仓库下载代码到本地仓库和工作区
git clone 远程仓库地址
2. 从远程仓库更新代码到本地仓库和工作区
git pull
版本回退
步骤
1. 列表展示当前git仓库的操作记录
git reflog
2. 回退到某一版本
git reset --hard 对应版本hash值
pycharm+git
GUI工具
图像用户接口
列举
1. 自带的
2. 小乌龟
3. SourceTree
4. pycharm
Git基础
Git 安装
Git下载地址
https://git-scm.com/downloads
Git安装(Window/Mac)
选择不同系统安装包安装
检验是否安装成功
出现Git Bash命令行工具或Git GUI工具
git --version 查看git安装版本
Git 结构
工作区(Working Directory)
版本库(repository)
暂存区(stage/index)
master
head唯一指向
Git 文件的4种状态
Untracked(未被跟踪的)
此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify(文件已经入库)
文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
Modified(文件已修改)
文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
Staged(暂存状态)
执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
Git基本命令
git init
初始化git仓库
出现.git文件夹
git add
git add
将文件添加到暂存区
git add .
将工作空间下所有文件添加到暂存区(new,modifyed)
git add -A
将工作空间下所有文件添加到暂存区(new,modifyed,delete)
git add -u
将工作空间下所有文件添加到暂存区(modifyed,delete)
git commit
git commit -m
将暂存区的文件提交到版本库
git commit -am
跳过git add 命令,直接将工作区所有已跟踪的文件提交到版本库,未跟踪的(untracked)文件不能使用该命令
git status
git status -s
git log
git log --graph --oneline
git log --oneline
git config
git全局配置命令
git config --global user.name zivszheng
git config --global user.email zivs.zheng@gmail.com
查看配置
git config --list
单个项目配置
项目父路径/.git/config文件
git stash
git stash
暂存本地修改内容(不想提交修改的内容,想切换分支)
git stash list
查看暂存的历史记录
git stash apple --index
恢复之前暂存的某个记录
git stash drop --index
删除某个暂存记录
git rm
用于从工作区和索引中删除文件
常见使用:删除已经提价到远程仓库的 .idea, .seting 文件/文件夹(项目构建自动生成的)
git rm -r .idea
git commit -m 'remove .idea'
git push origin master
Git commit 解析
commit Object/master/HEAD
tree
项目目录结构
parent
指向上一个commit Object
author/commiter
commit message
查看对象
git cat-file -p HEAD/唯一ID
git cat-file -t HEAD/唯一ID
Git diff
git diff
比较本地工作空间和staged区的差异
git diff -- staged
比较staged区和本地仓库中的差异
git diff HEAD
比较本地工作空间和本地仓库中的差异
Git 撤销操作
git commit --amend
撤销上一次提交将暂存区的文件重新提交(改写提交)
git checkout --filename
拉取暂存区的文件并将其替换工作区的文件
注意与git checkout branchname 区别
git reset HEAD --filename
拉取最近一次提交到版本库中的文件到暂存区,该操作不影响工作区
git reset --option 版本号
--hard
硬回滚(不可逆的),即暂存区,工作区全部用指定提交版本的目录树替换掉
--mixed
mixed或不使用参数,覆盖暂存区,但不覆盖工作区
--soft
软回滚,不进行暂存区和工作区的覆盖
Git 分支
git 分支创建、修改、删除、切换
git branch
查看分支
git branch
创建分支
git branch -m
修改分支名称
git checkout
切换分支
git checkout -b
创建并切换分支
git branch -d
删除分支
分支合并
git merge
合并指定分支到当前分支(Fast forward)
git merge -no-ff -m
合并指定分支到当前分支(-no-ff 参数表示禁用Fast forward)
查看分支来自哪一个分支
git reflog --date=local | grep
Git远程仓库
git clone
git clone http://gitlab.xqchuxing.com/gittest/xqchuxing-test.git
git remote
git remote -v
查看远程信息
git push
git push -u origin master
将本地上分支上推到
git pull
git pull origin dev:master
获取远程的dev分支和本地的master分支合并
git pull origin dev
获取远程的dev分支和当前分支合并,实际是先执行git fetch 后再执行git merge
git fetch
git fetch origin dev
获取远程dev分支但不做合并
关联远程仓库
git remote add origin http://gitlab.xqchuxing.com/gittest/xqchuxing-test.git
Git tag
git tag
查看当前所有tag
git tag
创建tag
git tag
创建一个指向某一次提交的tag
git tag -a -m
git show
查看tag
Git Help
git help
git help
官网文档地址 https://git-scm.com/book/zh/v2
Git 构建分布式版本控制系统
版本控制概念
记录开发文件的时间机器
更好的开发
挽回代码错误带来的损失
分类
本地版本控制系统
分支主题
集中化的版本控制系统
CVS、Subversion(SVN)
分支主题
分布式版本控制系统GIT
分支主题
产品
github
公共的服务器
GitHub注册
官网
https://guides.github.com/activities/hello-world/
图示
分支主题
流程
注册账号
新建项目
克隆项目
git
git客户端
前提
1、github.com 注册账户
2、在github上创建仓库
1.生成本地ssh key
ssh-keygen -t rsa -C 'git@github.com'
邮箱要与github上注册的相同
[root@abc ~]# ssh-keygen -t rsa -C 'git@github.com'
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:YU6tRpZ8rzqUG7qw2jaAUHSjZCwmMM2S4C2IPLR8xKc git@github.com
The key's randomart image is:
+---[RSA 2048]----+
|*B=.o |
|%=O+ o . o |
|=@.oo O o |
|. +E * + . |
|.. S. . |
|. . .+ . |
| .. o o. |
| .oo. o. |
| .oo..... |
+----[SHA256]-----+
2.复制 公钥,在github 中添加ssh key
cat .ssh/id_rsa.pub
[root@abc ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ99Cjo4YQXLQsRAYNPyN4/y7AR8Oih+jkgQA8tylZ3Obxgk+ZdIYij/JdFUqBT4W8OmvzBhhhnAKNNOPwVZdINhffA1nJzhjtuutn40Fvxfl775g0Hg5MFtSYD3De7gvlrBTHgmDxwVQcNqJ35F85Cbidq7EPO/bDH2FFV7MLlucQUoGb5/GgbGWzMHOqSZ0d78VeklQoE1xNlJZ0zreMnsnCoB6ZAv1awdxkl+WLmueMO4FILDwDpfoR48KevJm3NnkA8pOIum2504CWZ6EaLHz4b0A90oBU/UVQ/a4bVyxZvrZ5Z8xP+iIrgcfWVvDO1YSgnOxTWDHbaxtLj0oh git@github.com
在github找到账户设置
分支主题
选择ssh key
分支主题
3.测试本地客户端
yum install git
4.进行认证(但不能远程连接)
ssh -T git@github.com
[root@abc ~]# ssh -T git@github.com
The authenticity of host 'github.com (52.74.223.119)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts.
Hi xuleicloud! You've successfully authenticated, but GitHub does not provide shell access.
5.在本地添加远程仓库用户名
git config --global user.name 'xuleicloud'
6.在本地添加远程仓库邮箱
git config --global user.email '512050951@163.com'
7.启用默认的颜色设置
git config --global color.ui true
不喜欢花花绿绿的就关了。git config --global color.ui false
8.查看配置
git config --list
ls .gitconfig
cat .gitconfig
9.连接远程仓库
git remote -v
10.设置远程仓库地址
查看远程仓库地址
分支主题
git remote add origin git@github.com:xuleicloud/xulei001.git
11.克隆远程仓库信息
git clone git@github.com:xuleicloud/xulei001.git
ls
cd xulei001/
ls
12.上传文件
echo 1234567 > 3333.sh
新建文件
git init
初始化
git remote add origin git@github.com:xuleicloud/xulei001.git
配置远程服务器地址
如果远程服务器配置报错,因为之前已经配置过其他远程服务器。可以用命令清除掉
git remote rm origin
git add .
建立当前文件夹下所有的文件,为准备上传的文件
git commit
提交上传说明
git commit -m 'first commit'
git push -u origin master
上传
git
纯命令行的软件
服务器&客户端
1.准备工作目录
useradd git
mkdir /git-root/
任意目录
cd /git-root/
2.创建一个分支
git init --bare shell.git
初始化空的 Git 版本库于 /git-root/shell.git/
[root@abc git-root]# ls
shell.git
3.目录授权
chown -R git:git shell.git/
4.切换git
su - git
5.生成秘钥
ssh-keygen -t rsa
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/opt/gitlab/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/opt/gitlab/.ssh/id_rsa.
Your public key has been saved in /var/opt/gitlab/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ZoWt/DTfxpq1Q6iGB1jdG0VsBzPNChRQJOHTVrylD6M git@abc
The key's randomart image is:
+---[RSA 2048]----+
| +*==*+ |
| + o..=o=|
| ..=.o+ * |
| ..o.oo * |
| oS o = + |
| .o.o oEo. .|
| o....= |
| . + =.. |
| o o .. |
+----[SHA256]-----+
cd .ssh/
cp id_rsa.pub authorized_keys
logout
6.设置git账号的shell
[root@abc git-root]# usermod -s /usr/bin/git-shell git
7.测试下载仓库
cd /opt/
git clone git@10.18.47.23:/git-root/shell.git
[root@abc opt]# git clone git@10.18.47.23:/git-root/shell.git
正克隆到 'shell'...
git@10.18.47.23's password:
warning: 您似乎克隆了一个空版本库。
[root@abc opt]# ls
gitlab shell
8.测试上传仓库
cd shell
touch 123
git add .
git commit -m 'zdsad'
git push -u origin master
rm -rf *
git clone git@10.18.47.23:/git-root/shell.git
[root@abc shell]# rm -rf *
[root@abc shell]# git clone git@10.18.47.23:/git-root/shell.git
正克隆到 'shell'...
git@10.18.47.23's password:
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
接收对象中: 100% (6/6), done.
[root@abc shell]# ls
shell
[root@abc shell]# ls shell/
123 test1.sh
客户端
gitlab
私有的git web服务器
gitlab-LOGO
分支主题
Gitlab部署
system
支持的类UNIX系统
Ubuntu
Debian
CentOS
Red Hat Enterprise Linux (please use the CentOS packages and instructions)
Scientific Linux (please use the CentOS packages and instructions)
Oracle Linux (please use the CentOS packages and instructions)
不支持的类UNIX系统
OS X
Arch Linux
Fedora
Gentoo
FreeBSD
官网链接
https://about.gitlab.com/downloads/#centos7
1. Install and configure the necessary dependencies
4G以上内存
sudo yum install curl policycoreutils openssh-server openssh-clients
安装和配置必要的依赖关系
sudo systemctl enable sshd
开机自启动ssh程序
sudo systemctl start sshd
sudo yum install postfix
安装邮件程序
sudo systemctl enable postfix
sudo systemctl start postfix
sudo systemctl stop firewalld
防火墙关上!
sudo systemctl disable firewalld
2. Add the GitLab package server and install the package
校内安装
wget ftp://10.18.40.100/rpm-soft/gitlab-ce-9.1.0-ce.0.el7.x86_64.rpm
提示
如果是zip压缩包,请使用解压才可以使用。
unzip 6.Git_构建分布式版本控制系统.zip
cd 6.Git_构建分布式版本控制系统
yum -y install gitlab-ce-9.1.0-ce.0.el7.x86_64.rpm
官网安装(略)
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
添加GitLab-YUM仓库到服务器
script.rpm.sh
gitlab_gitlab-ce.repo
sudo yum install gitlab-ce
3. Configure and start GitLab
sudo gitlab-ctl reconfigure
自动配置文件权限,安装数据库….
提示!安装的时间会很长!!!
4. Browse to the hostname and login
gitlab服务器的地址:http://192.168.100.10
GITLAB占用80端口,访问时直接访问IP就可以
(第一次会让你确认root账户登录的密码)
登录图示
分支主题
创建8位新密码
然后使用root登录即可
欢迎界面
分支主题
创建项目
分支主题
分支主题
推送SSH秘钥
1秘钥提示
分支主题
粘贴这个地址,用于下载项目(文档容器)
2查看秘钥
生成秘钥
ssh-keygen
cat ~/.ssh/id_rsa.pub
分支主题
3上传秘钥
分支主题
分支主题
4查看秘钥
分支主题
5链接地址
分支主题
用于命令行,或客户端程序进行下载使用。
6使用gitlab
图形操作
上传文件到gitlab
1.newfile:先新建一个文件。
2.uploadfile:再上传即可。
分支主题
分支主题
分支主题
下载文件到gitlab客户端
分支主题
分支主题
命令行操作
分支主题
1.域名解析
vim /etc/hosts
192.168.2.133 gitlab.example.com
2.克隆服务器的文件
git config --global user.name 'git'
git config --global user.email 'git@localhost'
git clone git@localhost:root/project1.git
注意您粘贴的地址中,使用了什么用户名。
3.上传文件
cd my-cloud1
进入工作目录
echo 1234567 > 3333.sh
新建文件
git init
初始化
git remote add origin git@gitlab.example.com:root/my-cloud1.git
配置远程服务器地址
如果远程服务器配置报错,因为之前已经配置过其他远程服务器。可以用命令清除掉
git remote rm origin
git add .
建立当前文件夹下所有的文件,为准备上传的文件
git commit
提交上传说明
git commit -m 'first commit'
git push -u origin master
上传
test
随堂测试5.txt
随堂测试6.txt
0 条评论
下一页