前言
这几天学习了git,颇有感悟,下面是我这几天的收获与大家分享,有什么错误评论区指出
服务端 | server:192.168.4.100 |
---|---|
客户端 | node1:192.168.4.200 |
一、git是什么?
git开源的分布式版本控制系统,我的理解是中华上下5千年,使用git你可以看每个朝代的发生故事
二、使用步骤
1.安装配置git
**2台同时做**
yum -y install git //yum安装
setenforce 0
systemctl stop firewalld.service //selinux和防火墙都关
[root@server ~]# git init project --bare //git init 创建仓库 --bare 创建空的
已初始化空的 Git 仓库于 /root/project/
[root@server ~]# ls
anaconda-ks.cfg project
[root@node1 ~]# git clone root@192.168.4.100:/root/project //从我刚刚的服务器下拉project
正克隆到 'project'...
The authenticity of host '192.168.4.100 (192.168.4.100)' can't be established.
ECDSA key fingerprint is SHA256:oubaGNMV6+zl6Qboiy7e/A1TvPlf2ZjMRApB5EdipRE.
Are you sure you want to continue connecting (yes/no)? yes //第一次需要密码
Warning: Permanently added '192.168.4.100' (ECDSA) to the list of known hosts.
root@192.168.4.100's password: //服务端密码
warning: 您似乎克隆了一个空仓库。
[root@node1 ~]# ls
anaconda-ks.cfg project
[root@node1 ~]# cd project/
[root@node1 project]# ls
[root@node1 project]# ls -a
. .. .git
[root@node1 project]# git remote -v //查看服务器信息
origin root@192.168.4.100:/root/project (fetch)
origin root@192.168.4.100:/root/project (push)
//使用git前告诉服务器你的信息,随便写
[root@node1 project]# git config --global user.email "lh.com" //你的邮箱
[root@node1 project]# git config --global user.name "lh" //你的姓名
[root@node1 project]# cat /root/.gitconfig //这里能查到你输入的邮箱姓名
[user]
email = lh.com
name = lh
//加入测试文件,随意添加
[root@node1 project]# echo "this is test" > test1.txt
[root@node1 project]# ls
test1.txt
[root@node1 project]# mkdir demo
[root@node1 project]# ls
demo test1.txt
[root@node1 demo]# cp /etc/passwd .
[root@node1 demo]# ls
passwd
[root@node1 demo]# cd ..
[root@node1 project]#
[root@node1 project]# git status //查看git状态,这里发现文件没有备份
位于分支 master
尚无提交
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
demo/
test1.txt
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@node1 project]# git add . //将文件提交缓存区 .当前目录
[root@node1 project]# git status //再次查看,发现已经提交
位于分支 master
尚无提交
要提交的变更:
(使用 "git rm --cached <文件>..." 以取消暂存)
新文件: demo/passwd
新文件: test1.txt
[root@node1 project]# git commit -m "one" //文件备份到本地仓库 -m "这里是注释"
[master(根提交) 49a961d] one
2 files changed, 23 insertions(+)
create mode 100644 demo/passwd
create mode 100644 test1.txt
[root@node1 project]# git push //将本地数据推送给git服务器
root@192.168.4.100's password:
枚举对象: 5, 完成.
对象计数中: 100% (5/5), 完成.
使用 4 个线程进行压缩
压缩对象中: 100% (3/3), 完成.
写入对象中: 100% (5/5), 752 字节 | 752.00 KiB/s, 完成.
总共 5(差异 0),复用 0(差异 0),包复用 0
To 192.168.4.100:/root/project
* [new branch] master -> master
[root@node1 project]# git remote -v //查看服务器信息 这里origin是服务器名字
origin root@192.168.4.100:/root/project (fetch)
origin root@192.168.4.100:/root/project (push)
[root@node1 project]# git push origin //指定上传给origin,一般默认是origin
root@192.168.4.100's password:
Everything up-to-date
[root@node1 project]#
[root@node1 project]# git reflog //查看日志
49a961d (HEAD -> master, origin/master) HEAD@{0}: commit (initial): one //这个one就是我的上传注释 这个49a961d就是我的版本号
2.使用HEAD指针
再这之前我任意加入数据并且上传,在这里我总共上传了4次,所以有4个版本号,那么问题来了,我该如何回到过去了?
[root@node1 project]# git reflog
e5eb9fb (HEAD -> master, origin/master) HEAD@{0}: commit: 4
7dcc44f HEAD@{1}: commit: third
83b57cf HEAD@{2}: commit: first
49a961d HEAD@{3}: commit (initial): one
[root@node1 project]# ls
4.txt demo test1.txt test2.txt test3.txt
发生了什么?我怎么突然回到第一次遇见你的地方?
这个就是指针
git reset --hard 如图我指到第一次那个49a9那个版本,所以我回到了哪里
注意:你可以任意移动指针到任意版本,但是,最后一定要回到最新版本
你可以穿越时空,但是不可以篡改历史!
所以我又回来了
3.使用分支
场景:windows开发windows12 这个时候就可以分一个分支出来
首先建立user1分支用来开发Windows12
git branch 分支名 建立分支
git branch -v 查看分支信息
这个时候2个分支都指向e5eb这个版本
这里我去user1去开发windows11,发现回到mster分支并没有影响
把user1分支Windows11的数据拉回master版本
这里我就完成了开发,并且没有影响master分支
4.git免密登录
在前面我们可以看到使用git需要密码这里密码是ssh,所以我们只要ssh免密登录就不需要输入密码
首先建立一个新的仓库demo1
[root@server ~]# git init --bare demo1
已初始化空的 Git 仓库于 /root/demo1/
node1机器设置免密
[root@node1 ~]# git clone root@192.168.4.100:/root/demo1
正克隆到 'demo1'...
warning: 您似乎克隆了一个空仓库。
在上传也不要密码
总结
以上就是今天要讲的内容,本文仅仅简单介绍了git的使用,今后也要认真学习哦