git的命令操作
1、git安装
[root@pokes04 ~]# yum -y install git
[root@pokes04 ~]# git --version
git version 1.8.3.1
2、公钥的创建
创建公钥
[root@pokes04 ~]# ssh-keygen -t rsa -C "pokes@163.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:hSs1jbQhKbbIkkqQlNZ6s2AAg6R/A+qhIsxggsu0Usc pokes@163.com
The key's randomart image is:
+---[RSA 2048]----+
|B+o ..o |
|*+ .o .o * |
|=ooo o * o |
|+Bo=. . + |
|O== E . S |
|%oo+ . . |
|** |
|+ |
| |
+----[SHA256]-----+
[root@pokes04 ~]#
[root@pokes04 ~]#
[root@pokes04 ~]#
[root@pokes04 ~]# cd ~/.ssh/
[root@pokes04 .ssh]# ll
总用量 8
-rw------- 1 root root 1679 9月 13 12:06 id_rsa
-rw-r--r-- 1 root root 395 9月 13 12:06 id_rsa.pub
查看公钥
[root@pokes04 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+xtbsmoFZDJGU7sY2NCMchl0jHC3oJ7VaqHLDvveIG6hkt+0sYoDcL/TdZ1wmpXlsRJWvDC6W/95t9KWbXnc10wHqFRd2iVZ/Se91knJEtTAhOFOFfOrNzADdk7QL2fyIuj0P33uf6kMxDb5dloSkJxR5F2SYyuTAQNRz6IArzUK3LfK5zot5Xq+JSec5xhzpNcgbp4QAhu61NdvIJgQQAFastnll1ljwkmJIyoV6fnzYyY47tUPSrpE2yIINoCHoV3RZ2kF0k1Kfkyov4V98UTdB5HC9CQjFUal6LvyqHK2yiXoRHhEY8FoGSVaRMzGQP02yZ6qLN4XJwZaf3HDj pokes@163.com
复制上面的加到github或者gitee的ssh里面.国内建议使用gitee
尝试连接github
[root@pokes04 .ssh]# ssh 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 <----这里选择yes
Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts.
PTY allocation request failed on channel 0
Hi spokess! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
3、创建本地版本库
[root@pokes04]mkdir -p /gitdata/mysql
[root@pokes04]cd /gitdata/mysql
[root@pokes04 mysql]# git init
初始化空的 Git 版本库于 /gitdata/.git/
[root@pokes04 mysql]# git config --global user.email "pokes@163.com"
[root@pokes04 mysql]# git config --global user.name "Yusa"
4、绑定远程项目分支
我之前新建的是gitdata这个目录是本地所有项目的总目录,mysql只是一个分支,后续我还有项目就会新建别的目录,例如/gitdata/docker 因此你必须进入到这个目录中
注意:因为git在国外,这里以国内的gitee为例,其实操作都是一样的
[root@pokes04 mysql]# cd /gitdata/mysql
[root@pokes04 mysql]# git remote add origin https://gitee.com/spokes/mysql.git
绑定之后无论下载和上传都会到这个目录。
5、将项目分支拉去到本地
将https://gitee.com/spokes/mysql.git 这个页面的所有数据都拉到本地。如下就是拉取的全过程:
[root@pokes04 mysql]# git pull origin master
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 23 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (23/23), done.
来自 https://gitee.com/spokes/mysql
* branch master -> FETCH_HEAD
[root@pokes04 mysql]# ll
总用量 75504
-rw-r--r-- 1 root root 416846 9月 13 13:55 hanligang_data.sql
drwxr-xr-x 2 root root 320 9月 13 13:55 MySQL-5.5.62-1.el6
drwxr-xr-x 2 root root 320 9月 13 13:55 MySQL-5.5.62-1.el7
-rw-r--r-- 1 root root 37441536 9月 13 13:55 mysql-5.5.62-win32.msi
-rw-r--r-- 1 root root 39456768 9月 13 13:55 mysql-5.5.62-winx64.msi
[root@pokes04 mysql]#
拉去到本地之后,我们就可以进行修改。修改完之后必须先提交到本地库。
6、提交到本地库
git add . -A
git commit -m "第一次提交"
说明:直接git add .
就可以了。但是在这里因为我的操作中,我把过期的数据删除了,所以在提交的时候它提示我没有指定-A (--all)' 或 '--ignore-removal
[root@pokes04 docker]# git add .
warning: 您在运行 'git add' 时没有指定 '-A (--all)' 或 '--ignore-removal',
针对其中本地移除路径的行为将在 Git 2.0 版本库发生变化。
像本地工作区移除的路径 'docker-compose/docker-compose-Linux-x86_64'
在此版本的 Git 中被忽略。
* 'git add --ignore-removal <pathspec>',是当前版本的默认操作,
忽略您本地工作区中移除的文件。
* 'git add --all <pathspec>' 将让您同时对删除操作进行记录。
运行 'git status' 来检查您本地工作区中移除的路径。
[root@pokes04 docker]# git add . -A
命令 | 功能 | 缩写 |
---|---|---|
git add . | 他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。 | |
git add -u | 他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。 | git add --update的缩写 |
git add -A | 是上面两个功能的合集 | git add --all的缩写 |
7、本地同步到远程服务器
修改好之后我们就可以把本地库同步到远程服务器上,在这里需要注意几点:
- 必须创建用户和邮箱加以识别;
- 必须先绑定远程项目库的连接。
[root@pokes04 docker]# git push origin master
Username for 'https://gitee.com': pokes@163.com
Password for 'https://pokes@163.com@gitee.com':
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 459 bytes | 0 bytes/s, done.
Total 2 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-5.0]
To https://gitee.com/spokes/docker.git
97c45b7..981bd33 master -> master
8、强制拉取并覆盖本地代码
有时候我们在本地修改文件,由于误操作修改错了。需要将远程服务器上的数据覆盖本地数据。这样的操作数据丢失的风险比较大,必须满足以下几个条件:
- 操作前,请先将你的数据备份一份;
- 操作前必须先绑定分支。
这种方法使用时需慎用,以免覆盖数据,导致数据丢失。
git fetch --all
git reset --hard origin/master
git pull