---
title: "【SCM】git使用方法与规范"
author: "Perrin Yong"
author_profile: https://www.pystone.net/profile/
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/git-usage-best-practices/
type: note
content_role: unspecified
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/03-软件工程与质量保障/CI-CD与质量保障/CI-CD工具链/【SCM】git使用方法与规范.md"
content_hash: e0e3b18779da52826455e45c2099e0480a23f9f7ba5c59f3ffb4c9a9d9f3eba5
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# 【SCM】git使用方法与规范

﻿# 【SCM】git使用方法与规范

> 创建时间：2021/4/26 17:38

* 相关概念
    * SSH
      * 身份验证途径
    * git与github,gitlab,gitee
  * git常用命令及用法
    * 用户名密码配置
    * 访问方式
      * SSH
    * 更新代码流程
    * 其他命令
    * 放弃本地working directory的修改（git revert）
  * git管理Unity项目

## 相关概念

### SSH

Secure Shell（安全外壳协议，简称SSH）是一种 **加密的网络传输协议** ，可在不安全的网络中为网络服务提供安全的传输环境。

SSH最常见的用途是 **远程登录系统** ，人们通常利用SSH来传输命令行界面和远程执行命令。SSH使用频率最高的场合是类Unix系统，但是Windows操作系统也能有限度地使用SSH。

#### 身份验证途径

SSH以非对称加密实现 **身份验证** 。

> 常见途径有两种：
>  一种是使用自动生成的公钥-私钥对来简单地加密网络连接，随后使用密码认证进行登录；
>  另一种是人工生成一对公钥和私钥，通过生成的密钥进行认证，这样就可以在不输入密码的情况下登录。任何人都可以自行生成密钥。公钥需要放在待访问的电脑之中，而对应的私钥需要由用户自行保管。一旦接受了公钥，拥有对应私钥的用户就被视为合法用户。

核实未知密钥来源都是重要的事情，因为SSH只验证提供用户是否拥有与公钥相匹配的私钥，只要接受公钥而且密钥匹配服务器就会授予许可。这样的话，一旦接受了恶意攻击者的公钥，那么系统也会把攻击者视为合法用户。

### git与github,gitlab,gitee

Git 是一个分散式版本控制软件。
Git is software for tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows (thousands of parallel branches running on different systems).

GitHub是通过Git进行版本控制的软件源代码托管服务平台。
GitHub, Inc. is a provider of Internet hosting for software development and version control using Git.

## git常用命令及用法

https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

### 用户名密码配置

配置全局或局部用户名密码：
git config --global user.name [username]
git config --global user.email [email]
git config --global user.password [pswd]

如果输入 --global，即会在全局范围内进行配置，配置的信息存在当前用户的根目录下。
如果不输入 --global，就意味着在当前仓库进行局部配置，必须在git仓库所在的目录下进行配置。

执行clone、pull等命令时直接写入用户名密码（防止二次输入导致运行失败）：

git clone http://userName:password@链接
git pull http://userName:password@链接

### 访问方式

#### SSH

  1. 生成密钥对后，将公钥配置到仓库的设置中
  2. 私钥保留在本地
  3. copy SSH URL，即可clone

### 更新代码流程

  1. git status（查看本地分支文件信息，确保更新时不产生冲突）

  2. git branch（查看当前分支情况）

  3. git checkout branch-1
切换分支
git checkout -b branch-2 本地创建 branch-2 分支，同时切换到 branch-2 分支。只有提交的时候才会在服务端上创建一个分支
git checkout remote branch (若分支为本地分支，则需切换到服务器的远程分支)

  4. git pull

其他：git branch branch-3 创建分支branch-3

### 其他命令

git status（查看本地分支文件信息，确保更新时不产生冲突）
git branch（查看当前分支情况）

### 放弃本地working directory的修改（git revert）

https://blog.csdn.net/zssureqh/article/details/51712972

## git管理Unity项目

教程：https://www.cnblogs.com/murongxiaopifu/p/6086849.html

Unity3D项目的版本控制主要针对Assets和ProjectSetting这两个文件，.gitignore的内容

```cpp
string s = String.Empty;

```
