# Git_SourceTree_Guide
**Repository Path**: wang-gelin/git_teach
## Basic Information
- **Project Name**: Git_SourceTree_Guide
- **Description**: 用来编写git和SourceTree教程
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2022-04-19
- **Last Updated**: 2022-04-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SourceTree与git使用教程
[TOC]
本教程,你将学会
1、如何使用SourceTree创建和配置你的密钥(公钥和私钥)
2、如何使用fork老师的仓库,并同步老师的仓库
3、SourceTree的基本使用,克隆,创建分支,提交,推送,回滚
4、如何进行代码评审Pull Request和交作业
## 如何使用SourceTree创建和配置你的密钥(公钥和私钥)
### 创建密钥
使用SourceTree创建密钥
打开SourceTree->顶部工具栏->工具->创建和导入SSH密钥

点击Generate后,在进度条下面的空白区域(按住鼠标左键)乱画,进度条完成后生成全新的密钥

上面大框框里面的是公钥
key fingerprint 密钥指纹
key comment 密钥账号(名字)
key passphrase 密钥密码
Confirm passphrase 确认密钥
建议添加密码

Generate 创建密钥
load 导入密钥
save public key 保存公钥
save private key 保存私钥
保存你的公钥和私钥,现在你已经成功保存好你的密钥了
### 配置密钥
#### 配置私钥
打开SourceTree->顶部工具栏->工具->选项

如图,密钥格式有两个格式类型
PuTTY/Plink是.ppk格式的密钥,上面用SourceTree创建的密钥就是.ppk格式
OpenSSH是你在cmd中使用ssh-keygen指令生成的密钥格式
在SSH 密钥:中点击 ... 找到你之前保存的私钥,选择就行了
#### 配置公钥
打开SourceTree->顶部工具栏->工具->创建和导入SSH密钥
选择load,导入之前你保存的私钥(可以是.ppk的,也可以是ssh-keygen生成的)

然后你就得到这个界面,上面大框框里的就是你的公钥
复制好
打开你的gitee
右上角点击你的头像->设置

左边栏目中->SSH公钥

点击后,把公钥粘贴到公钥框里面,同时起个标题,点击确定

好了,现在你的公钥也配置完毕
## fork和同步
### fork操作
打开你的gitee
顶部栏目中的选择我的,选择企业
进入页面->选择代码

选择你要fork的仓库

选完后,选择右上角fork进行fork操作

选择你个人

现在你已经成功fork仓库
### 同步操作
打开你fork成功的仓库
第一种方法:顶部栏目中的选择我的,在仓库一栏哪里找到你的仓库
第二种方法:顶部栏目中的选择我的,选择企业->进入页面->选择代码->选择你fork的仓库->点击右上角fork右边的数字

进入页面后在下面一栏可以看见fork这个仓库的所有人,找到你的,点击仓库的名字(不要点头像)进入

上面的仓库名字右边的就是你的同步按钮
同步完毕后,看看homeworks有没有改变,因为有人乱在原始仓库上建立分支,如果出现,在你的本地仓库,强制推送homeworks分支以覆盖远端仓库
## SourceTree的基本操作
打开SourceTree主页面,在上面,点击加号
进入这样的页面

local 浏览你的仓库
Remote 远端仓库 本教程不教
clone 克隆 从云端克隆一个仓库到本地
add 添加 添加本地已有的一个仓库到你的SourceTree上
create 创建 创建一个新仓库
### 创建一个仓库
在本地建立一个全新的仓库
点击上面的Create,进入这样的页面

第一行:你存放仓库的位置
第二行:你仓库的名字
创建,完成
### 克隆云端仓库到本地
打开你gitee上面的仓库
请确保仓库名前缀是你的账号,不是企业账号
选择 克隆/下载 ->SSH->复制(请确保您的公钥和私钥配置成功)这就是你的远端仓库ssh地址

打开SourceTree,选择开头提到的clone

第一行,粘贴远端仓库的ssh地址
第二三行相当与创建仓库的第一二行。
完成
### 分支
打开你的SourceTree上的仓库
选择左边WORKSPACE下面的History,右边就会显示你本地的所有分支,选择其中你要出现分支的位置(选中会变蓝)

点击上方的分支->新分支->起好名字,创建

就会在你选中的位置上产生一个新分支,新分支和选中的位置一模一样
我们要在最新的master分支上创建一个新分支homeworks,用于放置我们的代码
在左边的一栏

分支一栏是你本地的所有分支,黑深色前面加圆圈就是你当前所在的分支,双击可以切换分支
远端一栏origin下面是你远程仓库上面的所有分支
### 提交和推送
提交:
选择你要提交的分支,点击选择左边WORKSPACE下面的文件状态,或者点击提交按钮

右边出现这样的页面

左边上下两栏是已暂存文件和未暂存文件
右边在你点击任一文件后,就可以知道你修改了什么
点击未暂存文件的加号,就会把文件添加到上面,你也可以点击暂存所有和暂存所选来批量暂存
底下的边框,用来输入你这次提交修改了什么,删除了什么,增加了什么
如何勾选了立即推送,则在提交的同时把代码推送到远端仓库
推送:
点击推送

选择你要推送的分支
左边是你的本地分支,右边是远端分支
如何是本地新分支,可能右边需要新建一个分支

勾选你推送的分支,点击推送即可
### 回滚操作
打开你的SourceTree上的仓库
选择左边WORKSPACE下面的History,右边就会显示你本地的所有分支,选择其中你要回滚到的位置(选中会变蓝)->右击->选择重置当前分支到此次提交

有三种选项

软合并 将此次提交回滚到指定提交位置,但这个过程中会将修改过的文件暂存到暂存区。
混合合并 混合合并是指将此次提交回滚到指定的位置,但这个过程中不会将修改过的文件暂存到暂存区,而是将修改过的文件存放在未暂存文件区。
强制合并 当前的文件会全部倒退会这个版本
详细内容参考这个 https://blog.csdn.net/cobek/article/details/110426141
## 代码评审Pull Request
进入你gitee上的仓库

点击 +Pull Request
进入这个页面
源分支是你的分支,通常交作业选择homeworks分支
目标分支是你fork的仓库,通常选择homeworks_teacher分支


在下面的标题输入你这次评审(交作业)的事(比如完成了哪个实验)
点击底部的创建Pull Request完成