Git工具常用指令合集,添加SSH


安装git软件:
官网地址:https://git-scm.com/
文档地址:https://git-scm.com/book/zh/v2
安装完成后,在菜单中找到Git Bash软件,点击打开。

$ ssh-keygen /?
Too many arguments.
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]
                  [-N new_passphrase] [-C comment] [-f output_keyfile]
       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
       ssh-keygen -i [-m key_format] [-f input_keyfile]
       ssh-keygen -e [-m key_format] [-f input_keyfile]
       ssh-keygen -y [-f input_keyfile]
       ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
       ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
       ssh-keygen -B [-f input_keyfile]
       ssh-keygen -D pkcs11
       ssh-keygen -F hostname [-f known_hosts_file] [-l]
       ssh-keygen -H [-f known_hosts_file]
       ssh-keygen -R hostname [-f known_hosts_file]
       ssh-keygen -r hostname [-f input_keyfile] [-g]
       ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
       ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
                  [-j start_line] [-K checkpt] [-W generator]
       ssh-keygen -s ca_key -I certificate_identity [-h] [-U]
                  [-D pkcs11_provider] [-n principals] [-O option]
                  [-V validity_interval] [-z serial_number] file ...
       ssh-keygen -L [-f input_keyfile]
       ssh-keygen -A
       ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
                  file ...
       ssh-keygen -Q -f krl_file file ...

ssh-keygen -t rsa -c “demo@demo.com”
其中-t的参数:dsa | ecdsa | ed25519 | rsa

第一步执行:

PS C:\Users\demo\.ssh>ssh-keygen -t rsa -C "demo@demo.com"

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\mengx/.ssh/id_rsa): 【输入key保存的文件:demo_rsa】
Enter passphrase (empty for no passphrase):【输入密码,至少5位数】
Enter same passphrase again:【输入确认密码,至少5位数】
Your identification has been saved in demo_rsa.
Your public key has been saved in demo_rsa.pub.
The key fingerprint is:
SHA256:upjrw8K5oHfKui4yVt6eAVpkFVxiHtULyc+zbspxR2M demo@demo.com
The key's randomart image is:
+---[RSA 2048]----+
|    .*=oo        |
|    +.o+ .       |
|   o    S oE     |
|  o..  . .o .    |
|.ooo...... .     |
|=+=.+++.oo.      |
|O*+**=.oo        |
+----[SHA256]-----+

查看生成的文件,打开demo_rsa,复制其中的内容到gitlab页面,在配置界面的SSH KEYS页面添加KEY.

PS C:\Users\demo\.ssh> ls


    目录: C:\Users\demo\.ssh


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2019/4/10     15:54            485 1config
-a----       2019/11/21     11:21           1766 demo_rsa
-a----       2019/11/21     11:21            400 demo_rsa.pub
-a----        2019/4/10     15:35            464 id_ed25519
-a----        2019/4/10     15:35            102 id_ed25519.pub
-a----         2018/6/5     16:25           1766 id_rsa
-a----         2018/6/5     16:25            409 id_rsa.pub
-a----        2018/12/4     15:41            411 known_hosts

分支相关指令

# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 查看所有分支
git branch -a
# 本地创建新的分支
git branch branch-name
# 切换到新的分支
git checkout branch-name
# 创建并切换到该分支
git checkout -b branch-name
# 推送分支到github
git push origin branch-name
# 删除本地分支
git branch -d branch-name
# 删除github远程分支
git push origin :branch-name

获取创建的分支代码

git clone -b branch-name https://xxx.git [指定的目录]

Git打包文件

Git中打包文件是个简单的活,不管是打包全部文件作为release,

还是只压缩更改的文件,一个命令就能搞定。

而且,打包之后目录结构完全不变,这对于覆盖部署来说极其方便。

打包所有文件

[备注]:如下需要在Git Bash命令下执行
打包master分支的所有文件:

$ git archive --format=zip --output master.zip master

其中,输出格式为zip,输出文件为master.zip。git支持zip和tar两种输出格式。

打包当前分支当前HEAD的所有文件:

$ git archive --format=zip --output head.zip HEAD

打包v1.2标签的所有文件:

$ git archive --format=zip --output v1.2.zip v1.2

打包更改的文件

打包更改文件的原理是:

git diff找出文件列表;
用打包命令打包。
也就是说,只要能用找出文件列表,就可以git打包出来。

打包最后修改的文件

先通过git diff找到最新版本修改过的文件,再压缩打包这些文件:

$ git archive --format=zip -o update.zip HEAD $(git diff --name-only HEAD^)

打包最后两个版本修改的文件

总共也是2个版本:

$ git archive --format=zip -o update.zip HEAD $(git diff --name-only HEAD~2)

打包两个分支之间差别的文件

$ git archive --format=zip -o update.zip HEAD $(git diff --name-only master fix-error)

如上,打包master和fix-error分支差异的文件。