Git简介:
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
1.git基础配置
1.让虚拟机能上网
#1.添加火墙策略
[root@foundation66 ~]# iptables -t nat -I POSTROUTING -s 172.25.66.0/24 -j MASQUERADE
#2.测试
[root@server1 ~]# ping www.baidu.com
2.安装git
[root@server1 ~]# yum install -y git
3.创建目录并初始化
#1.创建目录
[root@server1 ~]# mkdir demo
[root@server1 ~]# cd demo/
#2.初始化
[root@server1 demo]# git init
Initialized empty Git repository in /root/demo/.git/
[root@server1 demo]# l.
. .. .git
[root@server1 demo]# cd .git/
[root@server1 .git]# ls
branches config description HEAD hooks info objects refs
[root@server1 .git]# cd ..
#查看当前工作区和暂存区文件的状态
[root@server1 demo]# git status
4.创建文件
[root@server1 demo]# touch file1
[root@server1 demo]# echo westos > file1
[root@server1 demo]# cat file1
westos
[root@server1 demo]# ls
file1
#查看当前工作区和暂存区文件的状态(详细信息)
[root@server1 demo]# git status
#查看简单输出信息
[root@server1 demo]# git status -s
?? file1
5.添加文件
#实质:添加到暂存区
[root@server1 demo]# git add file1
[root@server1 demo]# git status
[root@server1 demo]# git status -s
A file1
6.提交文件
#实质:添加到版本库
[root@server1 demo]# git commit -m "add file1"
(1).设置邮箱和用户名
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
#设置邮箱
[root@server1 demo]# git config --global user.email "865700373@qq.com"
#设置用户名
[root@server1 demo]# git config --global user.name hym
(2).提交
[root@server1 demo]# git commit -m "add file1"
[master (root-commit) 0098555] add file1
1 file changed, 1 insertion(+)
create mode 100644 file1
#查看状态
[root@server1 demo]# git status -s
7.对文件的操作
(1).更改文件内容
#>>表示追加
[root@server1 demo]# echo redhat >> file1
[root@server1 demo]# cat file1
westos
redhat
[root@server1 demo]# git status
# M表示修改文件未添加到暂存区
[root@server1 demo]# git status -s
M file1
[root@server1 demo]# git add file1
#M表示修该文件已添加到暂存区
[root@server1 demo]# git status -s
M file1
[root@server1 demo]# echo admin >> file1
[root@server1 demo]# cat file1
westos
redhat
admin
#MM表示对在暂存区的文件进行修改
[root@server1 demo]# git status -s
MM file1
#添加到暂存区
[root@server1 demo]# git add file1
[root@server1 demo]# git status -s
M file1
#提交
[root@server1 demo]# git commit -m "change file1"
[master 859d87b] change file1
1 file changed, 2 insertions(+)
[root@server1 demo]# git status -s
(2).提交隐藏文件
#1.拷贝隐藏文件
[root@server1 demo]# cd
[root@server1 ~]# l.
. .bash_history .bash_profile .cshrc .tcshrc
.. .bash_logout .bashrc .gitconfig .viminfo
[root@server1 ~]# cp .bashrc demo/
[root@server1 ~]# cd demo/
[root@server1 demo]# ls
file1
[root@server1 demo]# l.
. .. .bashrc .git
[root@server1 demo]# git status -s
?? .bashrc
#2.提交隐藏文件
[root@server1 demo]# vim .gitignore
[root@server1 demo]# cat .gitignore
.*
[root@server1 demo]# git status -s
(3).版本回退
[root@server1 demo]# cat file1
westos
redhat
admin
[root@server1 demo]# echo hello word! >> file1
[root@server1 demo]# cat file1
westos
redhat
admin
hello word!
[root@server1 demo]# git status
#1.把file1文件在工作区的修改全部撤回
[root@server1 demo]# git checkout -- file1
[root@server1 demo]# cat file1
westos
redhat
admin
#查询版本历史
[root@server1 demo]# git log
#更改文件
[root@server1 demo]# echo linux > file1
[root@server1 demo]# cat file1
linux
#添加文件
[root@server1 demo]# git add file1
#提交文件
[root@server1 demo]# git commit -m "big changest"
[master 4bb9037] big changest
1 file changed, 1 insertion(+), 3 deletions(-)
#查看日志,记录了所有的提交信息
[root@server1 demo]# git log
[root@server1 demo]# git status -s
[root@server1 demo]# cat file1
linux
#2.撤销commit命令操作
[root@server1 demo]# git reset --hard HEAD^
HEAD is now at 859d87b change file1
[root@server1 demo]# cat file1
westos
redhat
admin
#查看日志
[root@server1 demo]# git log --pretty=oneline
859d87b7d8cd4eae463955bce8198672095a48a3 change file1
0098555cbf8c1791a8b07710121ea6d9ca3bc561 add file1
[root@server1 demo]# git reflog
859d87b HEAD@{0}: reset: moving to HEAD^
4bb9037 HEAD@{1}: commit: big changest
859d87b HEAD@{2}: commit: change file1
0098555 HEAD@{3}: commit (initial): add file1
#3.硬回滚到某次commit(恢复)
[root@server1 demo]# git reset --hard 4bb9037
HEAD is now at 4bb9037 big changest
[root@server1 demo]# cat file1
linux
(4).恢复误删文件
1.误删文件但并未提交
[root@server1 demo]# ls
file1
[root@server1 demo]# rm -rf file1
[root@server1 demo]# git status
#把file1文件在工作区的修改全部撤回
[root@server1 demo]# git checkout -- file1
[root@server1 demo]# ls
file1
2.误删文件并且已经提交
[root@server1 demo]# rm -rf file1
[root@server1 demo]# git rm file1
rm 'file1'
[root@server1 demo]# ls
[root@server1 demo]# git status
[root@server1 demo]# git reflog
#硬回滚到某次commit
[root@server1 demo]# git reset --hard 4bb9037
HEAD is now at 4bb9037 big changest
[root@server1 demo]# ls
file1
[root@server1 demo]# cat file1
linux
2.上传本地文件到共有仓库
(1).注册并登陆github
(2).创建共有仓库
(3).制作密钥
[root@server1 ~]# ssh-keygen
[root@server1 ~]# cd .ssh/
[root@server1 .ssh]# ls
id_rsa id_rsa.pub
[root@server1 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuni0gWiFnpc4lJFApE8Y5Tvs/7MGtomOZH14YDOlnXVopsdvIFEpPLZ1pNr52Htrl8uYf5T+WzaFC62Njfzn8qZxrANocLXo0BXMz4Q2iZFy+VfmdR8oHp50O8cg6++zjJjHnWQit3b+QdSPEcq+cxcriGd6/Gm0yJbWjCcIg/JwwUzQQItUshoCoGvFqJbtDkyKhp31hUPR5OXhdEKOjShhsJY7UqsqoFycplY0K0qm5tZML98FF/7S5n9XyHbziiLn46Roee5QGbG+4vZ3OXa8qk9AL3PbOJDIV9Cnr8b9xfc27k0Y9EX5B1wny3fla2FD+J28UnF/dQq24gCZd root@server1
(4).上传密钥
注意:上传的是公钥
(5).添加远程地址
[root@server1 ~]# cd demo/
#添加远程地址
[root@server1 demo]# git remote add origin git@github.com:hongyunmei/demo.git
#查看已添加的远程地址
[root@server1 demo]# git remote -v
origin git@github.com:hongyunmei/demo.git (fetch)
origin git@github.com:hongyunmei/demo.git (push)
注意:如果远程地址添加错误,怎么办?
[root@server1 demo]# git remote -v
origin https://github.com/hongyunmei/hongyunmei.git (fetch)
origin https://github.com/hongyunmei/hongyunmei.git (push)
#删除指定的远程地址
[root@server1 demo]# git remote remove origin
[root@server1 demo]# git remote -v
(6).推送
#将本地仓库推送到远程仓库
[root@server1 demo]# git push -u origin master
刷新网页:
(7)克隆
1.创建仓库
2.克隆
#克隆项目到本地
[root@server1 ~]# git clone git@github.com:hongyunmei/git.git
测试:
[root@server1 ~]# ls
demo git
[root@server1 ~]# cd git/
[root@server1 git]# ls
README.md
创建文件并上传:
[root@server1 ~]# cd demo/
[root@server1 demo]# ls
file1
[root@server1 demo]# echo hello linux > file2
[root@server1 demo]# ls
file1 file2
[root@server1 demo]# cat file2
hello linux
[root@server1 demo]# git add file2
[root@server1 demo]# git commit -m "add file2"
[master 352311c] add file2
1 file changed, 1 insertion(+)
create mode 100644 file2
#上传
[root@server1 demo]# git push -u origin master
刷新网页: