Git 之 (1) 单机上使用git、建立远程仓库、克隆远程仓库

1. 单机上使用git

1 准备

安装git
[root@yt-01 /]# yum install -y git

建立git版本库目录
[root@yt-01 /]# mkdir /data/gitroot/

初始化gi版本仓库
[root@yt-01 /]# cd /data/gitroot/
[root@yt-01 gitroot]# git init
初始化空的 Git 版本库于 /data/gitroot/.git/

配置用户名和邮箱
[root@yt-01 gitroot]# git config --global user.email "zhouqunic@163.com"
[root@yt-01 gitroot]# git config --global user.name "yuntai"

配置文件
[root@yt-01 gitroot]# cat /root/.gitconfig
[user]
 email = zhouqunic@163.com
 name = yuntai

2. 上传,对比和查看状态

创建新文件
[root@yt-01 gitroot]# echo -e "123/234/456/789" > 1.txt
[root@yt-01 gitroot]# ll
总用量 4
-rw-r--r-- 1 root root 16 4月 3 14:39 1.txt

把1.txt添加到git仓库
[root@yt-01 gitroot]# git add 1.txt         //打标记
[root@yt-01 gitroot]# git commit -m "creat new file 1.txt"   //上传
[master(根提交) 44609a5] creat new file 1.txt
 1 file changed, 1 insertion(+)
 create mode 100644 1.txt
# 记住,上传文件到仓库,每次都要 git add filename 和 git commit -m "注释" 两句命令


再次变更1.txt
[root@yt-01 gitroot]# echo -e "1 new added/END" >> 1.txt
[root@yt-01 gitroot]# cat 1.txt
123/234/456/789
1 new added/END

查看当前仓库中的状态,比如是否有改动的文件
[root@yt-01 gitroot]# git status
# 位于分支 master
# 尚未暂存以备提交的变更:
# (使用 "git add <file>..." 更新要提交的内容)
# (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
#	修改: 1.txt
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

# 每部操作之后都可以使用“git status”查看当前状态,可以根据提示信息进行后续操作。

不同版本文件对比
[root@yt-01 gitroot]# git diff 1.txt
diff --git a/1.txt b/1.txt
index a53950c..49384d8 100644
--- a/1.txt
+++ b/1.txt
@@ -1 +1,2 @@
 123/234/456/789
+1 new added/END

3 版本变更

更新版本
[root@yt-01 gitroot]# git add 1.txt
[root@yt-01 gitroot]# git commit -m "add 1.txt again"
[master 01803b5] add 1.txt again
 1 file changed, 1 insertion(+)

查看版本变更日志
[root@yt-01 gitroot]# git log
commit 01803b54e07b9842da0c2c4558fdafd66b05ada6
Author: yuntai <zhouqunic@163.com>
Date: Tue Apr 3 15:04:36 2018 +0800
    add 1.txt again
commit 2ab6b801dd207ef35d102c240173dc69d2ff3dc2
Author: yuntai <zhouqunic@163.com>
Date: Tue Apr 3 15:02:00 2018 +0800
    add 1.txt again
commit 44609a553eef00abe45e45a3c1bd54cc8fe9a402
Author: yuntai <zhouqunic@163.com>
Date: Tue Apr 3 14:41:50 2018 +0800
    creat new file 1.txt

删除文件2行,并更新版本
[root@yt-01 gitroot]# vim 1.txt
[root@yt-01 gitroot]# git add 1.txt
[root@yt-01 gitroot]# git commit -m "删除最后2行 "
[master 5acf95f] 删除最后2行
 1 file changed, 2 deletions(-)

版本变更日志,一行显示
[root@yt-01 gitroot]# git log --pretty=oneline   //版本变更日志,一行显示
5acf95fd5e06f1fc01acc0f28f5753610a292a07 删除最后2行
01803b54e07b9842da0c2c4558fdafd66b05ada6 add 1.txt again
2ab6b801dd207ef35d102c240173dc69d2ff3dc2 add 1.txt again
44609a553eef00abe45e45a3c1bd54cc8fe9a402 creat new file 1.txt
# 代码表示版本代码

版本回退
[root@yt-01 gitroot]# git reset --hard 2ab6b801dd207
HEAD 现在位于 2ab6b80 add 1.txt again
# hard后面跟的代码可以只填写一部分
[root@yt-01 gitroot]# git log --pretty=oneline
2ab6b801dd207ef35d102c240173dc69d2ff3dc2 add 1.txt again
44609a553eef00abe45e45a3c1bd54cc8fe9a402 creat new file 1.txt

撤销版本回退(假如忘了版本代码)
[root@yt-01 gitroot]# git reflog        //查看所有历史版本
2ab6b80 HEAD@{0}: reset: moving to 2ab6b801dd207
5acf95f HEAD@{1}: commit: 删除最后2行
01803b5 HEAD@{2}: commit: add 1.txt again
2ab6b80 HEAD@{3}: commit: add 1.txt again
44609a5 HEAD@{4}: commit (initial): creat new file 1.txt
# 版本回退
[root@yt-01 gitroot]# git log --pretty=oneline
5acf95fd5e06f1fc01acc0f28f5753610a292a07 删除最后2行
01803b54e07b9842da0c2c4558fdafd66b05ada6 add 1.txt again
2ab6b801dd207ef35d102c240173dc69d2ff3dc2 add 1.txt again
44609a553eef00abe45e45a3c1bd54cc8fe9a402 creat new file 1.txt

假如文件1.txt被删除了
[root@yt-01 gitroot]# rm -rf 1.txt
[root@yt-01 gitroot]# ls
[root@yt-01 gitroot]# git checkout -- 1.txt    //恢复原来文件
[root@yt-01 gitroot]# ls
1.txt

假如更改了1.txt,然后git add了,但是没有git commit,不想更新了,想回退到当时版本
[root@yt-01 gitroot]# echo -e "xxxxxx" > 1.txt
[root@yt-01 gitroot]# git add 1.txt
[root@yt-01 gitroot]# git reset HEAD 1.txt   //重置缓存
重置后撤出暂存区的变更:
M	1.txt
[root@yt-01 gitroot]# cat 1.txt
xxxxxx
[root@yt-01 gitroot]# git checkout -- 1.txt     //恢复原来文件
[root@yt-01 gitroot]# cat 1.txt
123/234/456/789

删除文件

[root@yt-01 gitroot]# git rm 1.txt    //删除文件
rm '1.txt'
[root@yt-01 gitroot]# git commit -m "删除1.txt文件"     //提交删除
[master 7215021] 删除1.txt文件
 1 file changed, 1 deletion(-)
 delete mode 100644 1.txt
[root@yt-01 gitroot]# ls

git checkout已经不能恢复了
[root@yt-01 gitroot]# git checkout -- 1.txt
error: pathspec '1.txt' did not match any file(s) known to git.

恢复git rm删除的文件
[root@yt-01 gitroot]# git log --pretty=oneline     //查看版本日志
721502178db58654977d89635423afaa806e3c27 删除1.txt文件
5acf95fd5e06f1fc01acc0f28f5753610a292a07 删除最后2行
01803b54e07b9842da0c2c4558fdafd66b05ada6 add 1.txt again
2ab6b801dd207ef35d102c240173dc69d2ff3dc2 add 1.txt again
44609a553eef00abe45e45a3c1bd54cc8fe9a402 creat new file 1.txt

[root@yt-01 gitroot]# git reset --hard 721502178d     //最后的版本已经是删除掉的时候,恢复不了
HEAD 现在位于 7215021 删除1.txt文件
[root@yt-01 gitroot]# ls
[root@yt-01 gitroot]# git reset --hard 5acf95fd5e06f1fc01acc0f28f5753610a292a07    //回退到对应版本才可以
HEAD 现在位于 5acf95f 删除最后2行
[root@yt-01 gitroot]# ls
1.txt

2. 建立远程仓库

1 创建远程仓库

GitHub官网:github.com 注册账号并激活,然后开始创建主机的仓库! 创建完成后,添加key: 点击浏览器右上角头像——setting——SSH and GPG keys(选择SSH keys)——在服务器(虚拟机)执行ssh-keygen命令生成密钥对(/root/.ssh/id_rsa-私钥, /root/.ssh/id_rsa.pub-公钥)——将公钥复制到浏览器后点“添加”。

2 创建同名本地仓库,并连接

创建本地版本仓库
[root@yt-01 tmp]# mkdir /tmp/gittest/
[root@yt-01 tmp]# cd gittest/
[root@yt-01 tmp]# echo "# gittest" >> README.md
[root@yt-01 gittest]# git add README.md    
[root@yt-01 gittest]# git commit -m "创建README.md"
[master(根提交) f7045bf] 创建README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

远程连接
[root@yt-01 gittest]# git remote add origin git@github.com:zhouqunic/gittest.git
[root@yt-01 gittest]# git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 232 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:zhouqunic/gittest.git
 * [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

3 文件推送

新建文件
[root@yt-01 gittest]# vim 123.txt
[root@yt-01 gittest]# cat 123.txt
123 123 123
123 123
123

推送到本地仓库
[root@yt-01 gittest]# git add 123.txt
[root@yt-01 gittest]# git commit -m "新建123.txt文件"
[master 6007c36] 新建123.txt文件
 1 file changed, 3 insertions(+)
 create mode 100644 123.txt

推送到远程仓库
[root@yt-01 gittest]# git push
warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching'
修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯,
进行如下设置:
  git config --global push.default matching
若要不再显示本信息并从现在开始采用新的使用习惯,设置:
  git config --global push.default simple
参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple' 模式)
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 300 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:zhouqunic/gittest.git
   f7045bf..6007c36 master -> master

# 上面有好多无用的提示信息,为了之后不显示这些信息,根据提示执行命令

[root@yt-01 gittest]# git config --global push.default simple

3. 克隆远程仓库

克隆远程仓库

创建一个本地文件夹,来放克隆的内容
[root@yt-01 gittest]# cd /usr/local/sbin/
[root@yt-01 sbin]# ls

克隆远程仓库
[root@yt-01 sbin]# git clone https://github.com/maicong/LNMP.git     //克隆
正克隆到 'LNMP'...
remote: Counting objects: 420, done.
remote: Total 420 (delta 0), reused 0 (delta 0), pack-reused 420
接收对象中: 100% (420/420), 612.72 KiB | 95.00 KiB/s, done.
处理 delta 中: 100% (224/224), done.
[root@yt-01 sbin]# ls
LNMP
[root@yt-01 sbin]# cd LNMP/
[root@yt-01 LNMP]# ls
DBMGT etc home keys LICENSE lnmp.sh README.md source.sh svnserve svn.sh

编辑仓库

要是自己的仓库,别人的仓库的话,必须fork到自己的仓库,克隆后才能编辑

[root@yt-01 sbin]# git clone git@github.com:zhouqunic/LNMP.git
正克隆到 'LNMP'...
remote: Counting objects: 420, done.
remote: Total 420 (delta 0), reused 0 (delta 0), pack-reused 420
接收对象中: 100% (420/420), 612.72 KiB | 62.00 KiB/s, done.
处理 delta 中: 100% (224/224), done.
[root@yt-01 sbin]# ls
LNMP
[root@yt-01 sbin]# cd LNMP/
[root@yt-01 LNMP]# ls
DBMGT etc home keys LICENSE lnmp.sh README.md source.sh svnserve svn.sh
[root@yt-01 LNMP]# echo "^^^^" >> lnmp.sh
[root@yt-01 LNMP]# git add lnmp.sh
[root@yt-01 LNMP]# git commit -m "瞎改"
[master c67bc06] 瞎改
 1 file changed, 1 insertion(+)

# 此时只是提交到了本地仓库

推送到远程仓库

[root@yt-01 LNMP]# git push
Warning: Permanently added the RSA host key for IP address '192.30.253.112' to the list of known hosts.
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 293 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To git@github.com:zhouqunic/LNMP.git
   027e59a..c67bc06 master -> master

转载于:https://my.oschina.net/zhouyuntai/blog/1791170

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值