Git命令

简易的命令行入门教程:

Git 全局设置:

git config –global user.name “xxxxdev”
git config –global user.email “xxxx.dev@gmail.com
创建 git 仓库:

mkdir backend-movie
cd backend-movie
git init
touch README.md
git add README.md
git commit -m “first commit”
git remote add origin git@gitee.com:xxxxdev/backend-movie.git
git push -u origin master

已有项目?
cd existing_git_repo
git remote add origin git@gitee.com:xxxxdev/backend-movie.git
git push -u origin master

  1. 用户名和邮箱地址的作用
    用户名和邮箱地址是本地Git客户端的一个变量,不随git库而改变。
    每次commit都会用用户名和邮箱纪录。
    github的contributions统计就是按邮箱来统计的。

  2. 查看用户名和邮箱地址:
    $ git config user.name
    $ git config user.email

  3. 修改用户名和邮箱地址:
    $ git config –global user.name “username”
    $ git config –global user.email “email”


clone命令:
选择分支—
$ git clone “url地址”


push命令:
进入项目所在文件夹
$ git init 初始化仓库
$ git add . 或者 $git add –all
$ git commit -m “change log”
(提交到本地的版本控制库里,引号里面是你对本次提交的说明信息。)
git remote add origin git@gitee.com:xxxxdev/backend-movie.git(关联远端仓库)
git fetch(取回远端更新)
git merge(取回更新和本地合并)
$ git push -u origin master


git status
git branch
git branch + 分支名称
git checkout + 分支名称

$ git clone https://github.com/xxxxdev/wjs (最后面不加点,把所有分支都克隆下来)
$ git branch -a 查看所有分支
$ git checkout -b gh-pages origin/gh-pages (在本地创建并选择那个和远程分支名一样的分支工作)


你可以用gitk查看你做了些什么:
$ gitk –all &


1
git clone   
2
git remote   
3
git fetch   
4
git pull   
5
git push

如果你在本地做了错误提交,那么回退版本的方法很简单`

1.先用下面命令找到要回退的版本的commit id:

git reflog

2.接着回退版本:

git reset –hard a7e1d279

a7e1d279就是你要回退的版本的commit id的前面几位。

####远程分支版本回退的方法
如果你的错误提交已经推送到自己的远程分支了,那么就需要回滚远程分支了。
1.首先要回退本地分支:
git reflog
git reset –hard Obfafd

2.紧接着强制推送到远程分支:
git push -f origin master 这里假设只有一个master分支

Git将当前分支上修改的东西转移到新建分支

1
比如我在A分支做了一些修改,现在由于某种原因(如A分支已经合并到master)不能把A分支上修改的东西保留下来但是需要把A分支上修改的东西继续在新分支继续修改。那么现在我们可以有两种简单的做法完成这一需求。
2
3
第一种方法
4
我们不需要在A分支做commit,只需要在A分支新建B分支,然后切换过去。这个时候你会发现修改的东西在A,B分支都有。这个时候在B分支commit,那么这些修改保留在B分支上,再切换到A分支上会发现修改都没有保留下来。
5
6
第二种方法
7
使用git stash 将A分支暂存起来,然后在某一个分支(如master分支)新建一个分支B,然后在B分支上使用git stash pop 将修改弹出到B分支上,然后这些修改就在B分支上了。

如何在 Git 里撤销(几乎)任何操作

http://blog.jobbole.com/87700/ (总结得一般)

Another git process seems to be running in this repository

1
Another git process seems to be running in this repository, e.g.
2
an editor opened by 'git commit'. Please make sure all processes
3
are terminated then try again. If it still fails, a git process
4
may have crashed in this repository earlier:
5
remove the file manually to continue.

解决办法:

Try deleting index.lock file in your .git directory.

1
rm -f .git/index.lock

git命令行删除远程分支

1
先查看远程分支
2
git branch -r
3
使用下面两条命令来删除远程分支
4
git branch -r -d origin/branch-name
5
git push origin :branch-name

一不小心把本地的临时分支push到server上去了,想要删除。

方法一:

1
git branch -r -d origin/branch-name

不成功,发现只是删除的本地对该远程分支的track,正确的方法应该是这样:

1
git push origin :branch-name

冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。

方法二:

在Git v1.7.0 之后,可以使用这种语法删除远程分支:

1
$ git push origin --delete <branchName>

删除tag这么用:

1
git push origin --delete tag <tagname>

Git 中的Tag的作用

首先说一下作用:Git 中的tag指向一次commit的id,通常用来给开发分支做一个标记,如标记一个版本号。

下面就说一下具体的用法:

1.添加标签: git tag -a version -m “note”
注解:git tag 是打标签的命令,-a 是添加标签,其后要跟新标签号,-m 及后面的字符串是对该标签的注释。

2.提交标签到远程仓库 :git push origin -tags
注解:就像git push origin master 把本地修改提交到远程仓库一样,-tags可以把本地的打的标签全部提交到远程仓库。
3.删除标签:git tag -d version
注解:-d 表示删除,后面跟要删除的tag名字
4.删除远程标签:git push origin :refs/tags/version
注解:就像git push origin :branch_1 可以删除远程仓库的分支branch_1一样, 冒号前为空表示删除远程仓库的tag。

Git仓库SSH

Git SSH Key 生成步骤
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的git则需要SSH的配置。
github的SSH配置如下:
一 、
设置Git的user name和email:
$ git config –global user.name “xuhaiyan”
$ git config –global user.email “haiyan.xu.vip@gmail.com

二、生成SSH密钥过程:
1.查看是否已经有了ssh密钥:cd ~/.ssh
如果没有密钥则不会有此文件夹,有则备份删除
2.生存密钥:
$ ssh-keygen -t rsa -C “haiyan.xu.vip@gmail.com
按3个回车,密码为空。

Your identification has been saved in /home/tekkub/.ssh/id_rsa.
Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.
The key fingerprint is:
………………

最后得到了两个文件:id_rsa和id_rsa.pub

3.添加密钥到ssh:ssh-add 文件名
需要之前输入密码。
4.在github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。
打开https://github.com/ ,登陆xuhaiyan825,然后添加ssh。

5.测试:ssh git@github.com
The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.
RSA key fingerprint is 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
Warning: Permanently added ‘github.com,207.97.227.239′ (RSA) to the list of known hosts.
ERROR: Hi tekkub! You’ve successfully authenticated, but GitHub does not provide shell access
Connection to github.com closed.

增强服务器安全等级

快速开始

1.修改服务器默认登录端口

1
$ sudo vi /etc/ssh/sshd_config

把里面的port改掉,然后重启服务(特别注意:修改端口后一定要在服务器后台添加端口配置!!!!)

1
$ sudo service ssh restart

搭建服务器的Nodejs环境

快速开始

xxxxx

1
sudo apt-get update
  1. 在服务端安装这些
    1
    $ sudo apt-get install vim openssl build-essential libssl-dev wget curl git
  2. 在github下载并安装nvm服务器安装,重新开启一个命令行窗口。
    1
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
  3. 安装nodejs
    1
    nvm install v6.11.2 -g

设置和使用的默认版本

1
nvm use v6.11.2
2
nvm alias default v6.11.2
  1. 安装NPM

    1
    npm --registry=https://registry.npm.taobao.org install -g npm
  2. 写入目录结构树

    1
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
  3. 安装CNPM

    1
    npm --registry=https://registry.npm.taobao.org install -g cnpm
  4. 安装CNPM

    1
    npm install pm2 webpack gulp grunt-cli -g
  5. 编写测试文件

    1
    vi app.js
    2
    3
    const http = require('http');
    4
    5
    http.createServer(function(req, res) {
    6
      res.statusCode = 200;
    7
      res.setHeader('Content-Type', 'text/plain');
    8
      res.end('Hello Lucas\n');
    9
    }).listen(10002);
    10
    11
    console.log(`Server running at http://47.91.249.92:10002`);

pm2让Nodejs服务长驻

1
npm install pm2 -g
2
3
pm2 start app.js
4
5
pm2 list (列出所有在pm2上跑的服务)
6
pm2 show "名称" (查看详细信息)

配置Nginx实现反向代理

删除-移除Apache

1
sudo service apache2 stop
2
sudo service apache stop
3
update-rc.d -f apache2 remove
4
sudo apt-get remove apache2

更新apt-get

1
$ sudo apt-get update

安装nginx

1
$ sudo apt-get install nginx
2
3
cd /etc/nignx 然后进入conf.d文件夹
4
新建一个配置文件:
5
sudo vi wangchunfu-com-10002.conf
6
upstream wangchunfu {
7
    server 127.0.0.1:10002;
8
}
9
server {
10
    listen 80;
11
    server_name 47.91.249.92;
12
    location / {
13
        
14
		proxy_set_header X-Real-IP $remote_addr;
15
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
16
        proxy_set_header   X-Nginx-Proxy true;
17
        proxy_set_header   Host $http_host;
18
        proxy_redirect off;
19
        proxy_pass http://wangchunfu;
20
    }
21
}
22
23
24
测试配置文件
25
sudo nginx -t
26
27
28
重启nignx:
29
sudo service nginx reload 重新加载配置文件
30
不显示nginx版本信息:
31
把nginx.conf文件里面的server_tokens off的注释去掉。

安装MongoDB数据库

删除-移除Apache

1
shttps://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-ubuntu/
2
启动服务
3
sudo C:\Program Files\MongoDB\Server\3.4\bin(restart重启)
4
检查是否成功
5
cat /var/log/mongodb/mongod.log
6
7
停止服务
8
sudo service mongod stop
9
10
修改端口
11
sudo vim /etc/mongod.conf

Ubuntu 14.04 本地无密码SSH登录

快速开始

1.客户端配置公钥和私钥

  1. 如果有使用过Git仓库的公钥是和私钥的话,就不要再重新生成了;
  2. 如果本地没有的话,那就去生成一对公钥和私钥,通过命令行创建.ssh文件夹,进入.ssh文件夹;
    通过下面命令生成(“xxx@xx.com“是邮箱地址)
    1
    ssh-keygen -t rsa -b 4096 -C "xxx@xx.com"
  3. 开启ssh代理
    1
    eval "$(ssh-agent -s)"
  4. 把本地的私钥加入到代理中
    1
    ssh-add ~/.ssh/id_rsa

2.服务端配置

  1. 在服务端生成公钥和私钥(“xxx@xx.com“是邮箱地址,邮箱地址和客户端要相同)
    1
    ssh-keygen -t rsa -b 4096 -C "xxx@xx.com"
  2. 开启ssh代理
    1
    eval "$(ssh-agent -s)"
  3. 把服务端的私钥加入到代理中
    1
    ssh-add ~/.ssh/id_rsa
  4. 用vim命令创建authorized_keys这个文件
    1
    vi authorized_keys
  5. 把客户端的公钥(id_rsa.pub)拷贝到这个文件,之后用下面命令退出。
    1
    :wq!
  6. 修改authorized_keys的权限。
    1
    chmod 600 authorized_keys
  7. 重启服务
    1
    sudo service ssh restart

Ubuntu 14.04 SSH远程登录的那些坑

快速开始

1.下载PuTTY(命令行工具)

如果你的是Windows系统,在进行SSH远程登录之前,应该先去下载个PuTTY命令行工具,

2.SSH远程登录

  1. 打开软件—在Host Name(or IP address)输入你的公网IP—在Port输入端口号(22)—Open
  2. 在命令行中输入登录用户名:root(注意,这里千万不能直接ssh root@xxx,这里是一个小坑),然后输入密码,登录成功。
  3. 因为root的权限太高了,为了避免误操作所带来的后果,要创建一个管理员权限的用户;

创建新用户,例如:新用户“demo”

1
$ adduser demo

Full Name: xxx
Room Number: xxx

给增加的用户赋权

1
$ gpasswd -a demo sudo

修改配置文件

1
$ sudo visudo

在User privilege specification下面增加一行

1
$ demo ALL=(ALL:ALL) ALL

Ctrl + X—保存—输入”y”—回车

查看管理员用户

1
$ ls /home

修改端口

1
sudo vim /etc/ssh/sshd_config
2
或者nano /etc/ssh/sshd_config(GUI编辑命令行)
3
4
先增加一个端口,然后用这个端口去测试ssh登录,如果这个端口可用,再把22端口去掉,防止你修改的端口是成功了
5
# What ports, IPs and protocols we listen for
6
Port 22
7
Port xxxxx

重启服务

1
sudo service ssh restart

使用管理员用户登录

在命令行中输入登录用户名:ssh demo@xx.xx.xx.xx, 然后输入密码,登录成功。