参考文章:
https://git-scm.com/book/zh/v2
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
使用ssh-keygen生成私钥和公钥,命令:ssh-keygen -t rsa
例子:
fdipzone@ubuntu:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/fdipzone/.ssh/id_rsa): 这里输入要生成的文件名
Enter passphrase (empty for no passphrase): 这里输入密码
Enter same passphrase again: 这里重复输入密码
Your identification has been saved in /home/fdipzone/.ssh/id_rsa.
Your public key has been saved in /home/fdipzone/.ssh/id_rsa.pub.
The key fingerprint is:
f2:76:c3:6b:26:10:14:fc:43:e0:0c:4d:51:c9:a2:b0 fdipzone@ubuntu
The key's randomart image is:
+--[ RSA 2048]----+
| .+=*.. |
| . += + |
| o oo+ |
| E . . o |
| ..S. |
| .o . |
| .o + |
| ...oo |
| +. |
+-----------------+
# 参数 -t rsa 表示使用rsa算法进行加密,执行后,会在/home/当前用户/.ssh目录下找到id_rsa(私钥)和id_rsa.pub(公钥)
fdipzone@ubuntu:~$ ls -lt ~/.ssh
总用量 12
-rw------- 1 fdipzone fdipzone 1679 2015-08-07 00:28 id_rsa
-rw-r--r-- 1 fdipzone fdipzone 397 2015-08-07 00:28 id_rsa.pub
也可以使用 dsa 加密算法进行加密,命令如下:
ssh-keygen -t dsa
# 设定客户端连接使用的ssh私钥和公钥
vim /etc/ssh/ssh_config
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
把前面#去掉,然后在 IdentityFile 后填写你用来执行ssh时所用的密钥
ssh-keygen
产生公钥与私钥对,而ssh-copy-id
将本机的公钥复制到远程机器的authorized_keys
文件中,ssh-copy-id
也能让你得到访问远程机器的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利
$ ssh-keygen
$ ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx
$ ssh 用户名字@192.168.x.xxx
Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2
ssh-copy-id -u eucalyptus -i ~eucalyptus/.ssh/id_rsa.pub ssh 用户名字@192.168.x.xxx
第一次需要密码登录
上述是给eucalyptus用户赋予无密码登陆的权利
/usr/bin/ssh-copy-id: ERROR: No identities found
使用选项 -i ,当没有值传递的时候或者 如果 ~/.ssh/identity.pub 文件不可访问(不存在), ssh-copy-id 将显示上述的错误信息 ( -i选项会优先使用将ssh-add -L的内容)
git clone http://10.1.1.11/service/tmall-service.git
git clone -b dev_jk http://10.1.1.11/service/tmall-service.git
命令中:多了一个 -b dev-jk,这个dev_jk就是分支,http://10.1.1.11/service/tmall-service.git为源码的仓库地址
1、将远程指定分支 拉取到 本地指定分支上:
git pull origin <远程分支名>:<本地分支名>
2、将远程指定分支 拉取到 本地当前分支上:
git pull origin <远程分支名>
3、将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支)
git pull origin
实例
eports@dev:/opt/shellScript/ad-ws-port$ git pull
remote: Counting objects: 42, done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 42 (delta 15), reused 0 (delta 0)
Unpacking objects: 100% (42/42), done.
From repo.e-ports.com:e-ports/ad-ws-port
d5032a2..03b52ed test -> origin/test
0b051db..2784d9e develop -> origin/develop
Updating d5032a2..03b52ed
Fast-forward
.../src/main/java/com/eports/ad/ws/port/controller/PortController.java | 12 ++++++++++++
ad-ws-port-api/src/main/resources/mapper/PortMapper.xml | 4 ++--
.../src/main/java/com/eports/ad/ws/port/vo/EPPortByIdVO.java | 33 +++++++++++++++++++++++++++++++++
.../src/main/java/com/eports/ad/ws/port/vo/EPPortOfChinaVO.java | 2 ++
4 files changed, 49 insertions(+), 2 deletions(-)
create mode 100644 ad-ws-port-client/src/main/java/com/eports/ad/ws/port/vo/EPPortByIdVO.java
eports@dev:/opt/shellScript/ad-ws-port$ git fetch
eports@dev:/opt/shellScript/ad-ws-port$ git pull origin develop
From repo.e-ports.com:e-ports/ad-ws-port
* branch develop -> FETCH_HEAD
Already up to date.
eports@dev:/opt/shellScript/ad-ws-port$ git pull origin develop:develop
From repo.e-ports.com:e-ports/ad-ws-port
0b051db..2784d9e develop -> develop
Already up to date.
eports@dev:/opt/shellScript/ad-ws-port$
在克隆远程项目的时候,本地分支会自动与远程仓库建立追踪关系,可以使用默认的origin来替代远程仓库名,
所以,我常用的命令就是 git pull origin <远程仓库名>,操作简单,安全可控。
git pull --rebase = git fetch + git rebase
git rebase用于把一个分支的修改合并到当前分支
git fetch origin
只是手动指定了要fetch的remote。
git fetch origin branch1
设定当前分支的 FETCH_HEAD’ 为远程服务器的branch1分支`.
注意: 在这种情况下, 不会在本地创建本地远程分支, 这是因为:
这个操作是git pull origin branch1的第一步, 而对应的pull操作,并不会在本地创建新的branch.
一个附加效果是:
这个命令可以用来测试远程主机的远程分支branch1是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出一个异常.
git fetch origin branch1:branch2
只要明白了上面的含义, 这个就很简单了,
首先执行上面的fetch操作
使用远程branch1分支在本地创建branch2(但不会切换到该分支),
如果本地不存在branch2分支, 则会自动创建一个新的branch2分支,
如果本地存在branch2分支, 并且是fast forward', 则自动合并两个分支, 否则, 会阻止以上操作.
git fetch origin :branch2等价于:
git fetch origin master:branch2`
eports@dev:/opt/shellScript/ad-ws-port$ git fetch
eports@dev:/opt/shellScript/ad-ws-port$ git fetch origin develop
From repo.e-ports.com:e-ports/ad-ws-port
* branch develop -> FETCH_HEAD
eports@dev:/opt/shellScript/ad-ws-port$ git fetch origin develop:develop
eports@dev:/opt/shellScript/ad-ws-port$
注意:git pull = git fetch + merge
xu_bob@DESKTOP-NVM39PS MINGW64 /d/E-Ports/ad-ms/ad-ms (test)
$ git branch # 查看本地分支,带'*'的是当前本地分支。
* test
xu_bob@DESKTOP-NVM39PS MINGW64 /d/E-Ports/ad-ms/ad-ms (test)
$ git branch -r # 查看远程分支
origin/HEAD -> origin/master
origin/develop
origin/master
origin/test
xu_bob@DESKTOP-NVM39PS MINGW64 /d/E-Ports/ad-ms/ad-ms (test)
$ git branch -a # 查看所有分支
* test
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
remotes/origin/test
xu_bob@DESKTOP-NVM39PS MINGW64 /d/E-Ports/ad-ms/ad-ms (test)
$ git checkout -b develop origin/develop # 创建新分支,并指定远程分支
Switched to a new branch 'develop'
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
eports@dev:/opt/shellScript/ad-ws-port$ git branch t2 # 创建本地分支,但不会切换分支
eports@dev:/opt/shellScript/ad-ws-port$ git branch
develop
t2
* test
eports@dev:/opt$ git branch -d t2 # 删除t2分支,如果在分支中有一些未merge的提交,那么会删除分支失败
error: The branch 't2' is not fully merged.
If you are sure you want to delete it, run 'git branch -D t2'.
eports@dev:/opt/shellScript/ad-ws-port$ git branch -D t2 # 强制删除t2分支
Deleted branch t2 (was 03b52ed).
eports@dev:/opt/shellScript/ad-ws-port$ git branch
develop
* master
t3
test
xu_bob@DESKTOP-NVM39PS MINGW64 /d/E-Ports/ad-ms/ad-ms (develop)
$ git checkout test # 切换本地分支到 test
Switched to branch 'test'
Your branch is up to date with 'origin/test'.
eports@dev:/opt/shellScript/ad-ws-port$ git checkout -b t3 # 创建分支,且会切换到新建分支
Switched to a new branch 't3'
eports@dev:/opt/shellScript/ad-ws-port$ git branch
develop
t2
* t3
test
eports@dev:/opt$ git checkout -b master origin/master # 从远程仓库里拉取一条本地不存在的分支,且会切换到新建分支
Branch 'master' set up to track remote branch 'master' from 'origin'.
Switched to a new branch 'master'
eports@dev:/opt/shellScript/ad-ws-port$ git branch -a
develop
* master
t2
t3
test
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
remotes/origin/prod
remotes/origin/test
xu_bob@DESKTOP-NVM39PS MINGW64 /d/E-Ports/ad-ms/ad-ms (test)
$ git pull
remote: Counting objects: 73, done.
remote: Compressing objects: 100% (61/61), done.
remote: Total 73 (delta 35), reused 1 (delta 1)
Unpacking objects: 100% (73/73), done.
From repo.e-ports.com:e-ports/ad-ms
243ce7a..ac6d997 develop -> origin/develop
Already up to date.
xu_bob@DESKTOP-NVM39PS MINGW64 /d/E-Ports/ad-ms/ad-ms (test)
$ git merge develop # 合并 'develop分支' 到 'test分支'
Merge made by the 'recursive' strategy.
pom.xml | 17 ++
.../com/eports/ad/ms/config/RedisCacheConfig.java | 2 +-
.../com/eports/ad/ms/constants/CommonContants.java | 5 +
.../eports/ad/ms/controller/LineUpController.java | 44 ++-
.../com/eports/ad/ms/entity/lineUp/LineUp.java | 4 +
.../eports/ad/ms/entity/vo/TerminalBasicVO.java | 17 ++
.../ad/ms/entity/vo/TerminalWithLineUpVO.java | 17 ++
.../ad/ms/exception/GlobalExceptionHandler.java | 99 +++++++
.../com/eports/ad/ms/exception/MyException.java | 51 ++++
src/main/java/com/eports/ad/ms/log/Log.java | 264 ++++++++++++++++++
src/main/java/com/eports/ad/ms/log/SysLog.java | 14 +
.../java/com/eports/ad/ms/log/WebLogAspect.java | 126 +++++++++
.../java/com/eports/ad/ms/mapper/LineUpMapper.java | 10 +
.../com/eports/ad/ms/mapper/TerminalMapper.java | 5 +
.../com/eports/ad/ms/service/LineUpService.java | 12 +
.../com/eports/ad/ms/service/TerminalService.java | 4 +
.../ad/ms/service/impl/LineUpServiceImpl.java | 150 ++++++++++-
.../ad/ms/service/impl/TerminalServiceImpl.java | 8 +
.../java/com/eports/ad/ms/shiro/AuthRealm.java | 11 +-
.../java/com/eports/ad/ms/shiro/ShiroConfig.java | 1 -
src/main/java/com/eports/ad/ms/util/AESUtil.java | 114 ++++++++
src/main/java/com/eports/ad/ms/util/FileUtils.java | 57 +++-
src/main/java/com/eports/ad/ms/util/ToolUtil.java | 265 ++++++++++++++++++
src/main/java/com/eports/ms/shiro/ShiroUser.java | 7 +-
src/main/resources/mapper/LineUpMapper.xml | 24 ++
src/main/resources/mapper/TerminalMapper.xml | 5 +
src/main/resources/templates/lineUp/list.ftl | 297 +++++++++------------
src/main/resources/templates/login.ftl | 96 +------
28 files changed, 1446 insertions(+), 280 deletions(-)
create mode 100644 src/main/java/com/eports/ad/ms/entity/vo/TerminalBasicVO.java
create mode 100644 src/main/java/com/eports/ad/ms/entity/vo/TerminalWithLineUpVO.java
create mode 100644 src/main/java/com/eports/ad/ms/exception/GlobalExceptionHandler.java
create mode 100644 src/main/java/com/eports/ad/ms/exception/MyException.java
create mode 100644 src/main/java/com/eports/ad/ms/log/Log.java
create mode 100644 src/main/java/com/eports/ad/ms/log/SysLog.java
create mode 100644 src/main/java/com/eports/ad/ms/log/WebLogAspect.java
create mode 100644 src/main/java/com/eports/ad/ms/util/AESUtil.java
create mode 100644 src/main/java/com/eports/ad/ms/util/ToolUtil.java
xu_bob@DESKTOP-NVM39PS MINGW64 /d/E-Ports/ad-ms/ad-ms (test)
xu_bob@DESKTOP-NVM39PS MINGW64 /d/E-Ports/ad-ws-order (master)
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
remotes/origin/test
# 远程添加分支后,更新远程分支列表
xu_bob@DESKTOP-NVM39PS MINGW64 /d/E-Ports/ad-ws-order (master)
$ git remote update origin -p
Fetching origin
From repo.e-ports.com:e-ports/ad-ws-order
* [new branch] test -> origin/test
撤消上一次commit的内容(该操作会彻底回退到某个版本,本地的源码也会变为上一个版本的内容) git reset --hard
以下表示要撤消“update build gradle configuration file”这一次的commit id,返回到"add battery settings ui"这一次的commit id,
xp.chen@YC-JG-YXKF-PC27 MINGW64 /f/ob ((c8303a9…))
$ git log
commit c8303a9e8db2bcf4edb7488e722a380f4e8858ec (HEAD)
Author: xp.chen <[email protected]>
Date: Sat Oct 28 09:28:51 2017 +0800
update build gradle configuration file
Change-Id: I9ee532fd0d4698613698a64eb754fb98a8559e32
commit 8d8e5ccf24cf6836ab780aa3860270c3876e825a
Author: xp.chen <[email protected]>
Date: Sat Oct 28 09:02:01 2017 +0800
add battery settigns ui
Change-Id: Ia907ee4e84f54c00a186d31378a7925a6adaba0e
xp.chen@YC-JG-YXKF-PC27 MINGW64 /f/ob ((c8303a9...))
$ git reset --hard 8d8e5ccf24cf6836ab780aa3860270c3876e825a
HEAD is now at 8d8e5cc add battery settigns ui
xp.chen@YC-JG-YXKF-PC27 MINGW64 /f/ob ((8d8e5cc...))
$ git log
commit 8d8e5ccf24cf6836ab780aa3860270c3876e825a (HEAD)
Author: xp.chen <[email protected]>
Date: Sat Oct 28 09:02:01 2017 +0800
add battery settigns ui
Change-Id: Ia907ee4e84f54c00a186d31378a7925a6adaba0e
git commit -m
注释换行git commit -m
注释可以通过单引号来换行,比如:
$ git commit -m '
> 1.aaaaa
> 2.bbbb
> '
[master b25154b] 1.aaaaa 2.bbbb
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 ss.txt
# 通过`git commit --amend` 命令可以查看到刚刚的log信息为
1.aaaaa
2.bbbb
git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
作为一次最新的提交
* git revert HEAD 撤销前一次 commit
* git revert HEAD^ 撤销前前一次 commit
* git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,不影响之前提交的内容
git revert 和 git reset的区别
判断的条件是本地的Git_Commit跟远端进行对比,不一致就代表有新的代码提交,执行操作,否则exit
# 更新本地的远程分支
git fetch origin
2.本地与远程的差集 :(显示远程有而本地没有的commit信息),git比较本地仓库和远程仓库的差异
git log master..origin/master
3.统计文件的改动
# git diff /
git diff --stat master origin/master
#!/bin/bash
# Comments to support chkconfig on Linux
# chkconfig: 2345 64 36
# Author : deng.gonghai
# Date : 2016-08-29
# ======================================
# Script for the xxx Server
# ======================================
未完待续……