22.5/22.6 单机上使用git
22.7 建立远程仓库
22.8 克隆远程仓库
22.5/22.6 单机上使用git
git和svn不同在于它是分布式的,可以单机使用,代码可以存储在本机的代码管理平台上
步骤
1.使用yum安装git
1 | [root@kun02 ~]# yum install -y git |
2.建立版本仓库
1 | [root@kun02 ~]# mkdir /data/gitroot |
3.初始化仓库
1 | [root@kun02 ~]# git init /data/gitroot/ |
4.添加邮件和用户名
1 | [root@kun02 gitroot]# git config --global user.email "aaa@123.com" |
刚刚定义的邮件和用户名存放在/root/.gitconfig
1
2
3
4[root@kun02 gitroot]# cat /root/.gitconfig
[user]
email = aaa@123.com
name = kun
和svn一样初始化仓库后可以查看多了好多配置文件1
2[root@kun02 ~]# ls /data/gitroot/.git/
branches config description HEAD hooks info objects refs
现在我们在仓库里面新建文件1
2[root@kun02 ~]# cd /data/gitroot/
[root@kun02 gitroot]# echo "hello world" > 1.txt
把文件打上添加标签
格式:git add 文件
1
[root@kun02 gitroot]# git add 1.txt
提交文件
格式:git commit -m "备注内容"
1
2
3
4[root@kun02 gitroot]# git commit -m "add 1.txt"
[master(根提交) de58fc6] add 1.txt
1 file changed, 1 insertion(+)
create mode 100644 1.txt
查看当前仓库的状态
格式:git status
1
2
3[root@kun02 gitroot]# git status
# 位于分支 master
无文件要提交,干净的工作区
当仓库中存在没有添加add标签时会报下面信息1
2
3
4
5
6
7
8
9[root@kun02 gitroot]# git status
# 位于分支 master
# 尚未暂存以备提交的变更:
# (使用 "git add <file>..." 更新要提交的内容)
# (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
# 修改: 1.txt
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
当仓库中存在没有提交时候就会报下面信息1
2
3
4
5
6
7[root@kun02 gitroot]# git status
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 修改: 1.txt
#
查看文件的变更
格式:git diff 文件
1
2
3
4
5
6
7
8
9
10[root@kun02 gitroot]# git diff 1.txt
diff --git a/1.txt b/1.txt
index c60a9ae..21f27d1 100644
--- a/1.txt
+++ b/1.txt
@@ -1,3 +1,4 @@
hello world
111111
22222222
+33333333
查看所有提交的记录
格式:git log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24[root@kun02 gitroot]# git log
commit e345d2076a79eb3378a65079e40d797991700bed
Author: kun <aaa@123.com>
Date: Thu Aug 30 05:11:29 2018 +0800
ch 1.txt 3
commit f2cd7bde934e8766e2c586dd1dcb164f2a25840b
Author: kun <aaa@123.com>
Date: Thu Aug 30 05:07:20 2018 +0800
ch 1.txt 2
commit efa71b5e407880a18a447686642dce222e3b4cbe
Author: kun <aaa@123.com>
Date: Thu Aug 30 05:04:13 2018 +0800
ch 1.txt 1
commit de58fc669c4ec619c13830cc999708462d1923aa
Author: kun <aaa@123.com>
Date: Thu Aug 30 05:00:22 2018 +0800
add 1.txt
单行显示所有提交的记录
格式:git log --pretty=oneline
1
2
3
4
5[root@kun02 gitroot]# git log --pretty=oneline
e345d2076a79eb3378a65079e40d797991700bed ch 1.txt 3
f2cd7bde934e8766e2c586dd1dcb164f2a25840b ch 1.txt 2
efa71b5e407880a18a447686642dce222e3b4cbe ch 1.txt 1
de58fc669c4ec619c13830cc999708462d1923aa add 1.txt
第一列表示版本的IP号
,用于版本的回滚 第二列表示版本的备注
版本越下越早
回滚到某个版本
格式:git reset --hard 版本IP号
1
2[root@kun02 gitroot]# git reset --hard f2cd7bd
HEAD 现在位于 f2cd7bd ch 1.txt 2
去掉add标签
格式:git reset HEAD 文件
1
2
3[root@kun02 gitroot]# git reset HEAD 1.txt
重置后撤出暂存区的变更:
M 1.txt
查看历史版本记录
格式:git reflog
1
2
3
4
5
6[root@kun02 gitroot]# git reflog
f2cd7bd HEAD@{0}: reset: moving to f2cd7bd
e345d20 HEAD@{1}: commit: ch 1.txt 3
f2cd7bd HEAD@{2}: commit: ch 1.txt 2
efa71b5 HEAD@{3}: commit: ch 1.txt 1
de58fc6 HEAD@{4}: commit (initial): add 1.txt
当你回滚了前一个版本后 后悔了要回去之前的最新的版本可以使用查看历史版本记录来查看最新的版本的IP头1
2[root@kun02 gitroot]# git reset --hard e345d20
HEAD 现在位于 e345d20 ch 1.txt 3
从本地仓库中拉取文件
格式:git checkout -- 文件
1
2[root@kun02 gitroot]# rm -rf 1.txt
[root@kun02 gitroot]# git checkout -- 1.txt
当文件给删除或者更改了想使用回仓库中最新的版本可以使用git checkout来拉取回文件
删除文件并提交
格式:git rm 文件
1
2
3
4
5
6[root@kun02 gitroot]# git rm 1.txt
rm '1.txt'
[root@kun02 gitroot]# git commit -m "rm 1.txt"
[master add7b06] rm 1.txt
1 file changed, 4 deletions(-)
delete mode 100644 1.txt
git rm 与rm区别
用 git rm
来删除文件,同时还会将这个删除操作记录下来
;该记录用于commit来提交。
用 rm
来删除文件,仅仅是删除了物理文件
,没有将其从 git 的记录中剔除。 需要在执行commit
的时候,多加一个-a
参数。1
2[root@kun02 gitroot]# rm -rf 1.txt
[root@kun02 gitroot]# git commit -am "rm 1.txt"
22.7 建立远程仓库
更改使用的命令都是在本机上的,要想使用远程仓库来托管代码,可以去github的官网上注册帐号并建立仓库
官网 https://github.com/
注册了帐号后可以新建仓库,点右上角 —-new repository
填写其他仓库信息
添加密钥点击头像
—-Setting
—- SSH and GPG keys
—- New SSH key
然后把本机上使用ssh-keygen的来生成公钥并保存到github上,用于本机连接github时验证通讯
根据创建完仓库的提示输入命令并提交到GitHub仓库上
1 | [root@kun02 tmp]# mkdir test |
此时,远程仓库上就会有刚刚创建的README.md的文件
把本机文件推送到远程上
格式:git push
1
2
3
4[root@kun02 test]# echo "hello world" > 1.txt
[root@kun02 test]# git add 1.txt
[root@kun02 test]# git commit -m "test"
[root@kun02 test]# git push
第一次推送文件使用git push -u origin master
此时回去远程仓库可以发现多了1.txt
22.8 克隆远程仓库
克隆远程仓库可以把整个远程仓库克隆到本机上。使用git clone
类似于svn的 svn checkout
,先到远程仓库上点击Clone or download
复制远程仓库地址
在本机上克隆远程仓库
格式:git clone 远程仓库地址
1
[root@kun02 ~]# git clone git@github.com:kun0769/test.git
到远程仓库上编辑代码文件
本机如果先更新为远程仓库的最新版本,可以拉取到本机
格式:git pull
1
2
3
4
5
6
7[root@kun02 test]# git pull
[root@kun02 test]# cat 1.txt
hello world
fsdf
adadd
fdsf