SpeedPioneer/Git_Usage.md

185 lines
6.1 KiB
Markdown
Raw Normal View History

2023-09-28 15:04:15 +08:00
# Git使用方法
## 配置OpenSSH
Windows 11自带了OpenSSH无需安装。按如下操作生成SSH公钥和私钥
首先,查看`C:\Users`下面你的用户名对应的文件夹名字是什么。下面“你的用户名”都要替换成这个名字。
```
PS C:\Users\你的用户名> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\你的用户名/.ssh/id_rsa): C:\Users\你的用户名\.ssh\为这个私钥起个名字
Enter passphrase (empty for no passphrase): 按Enter
Enter same passphrase again: 按Enter
Your identification has been saved in C:\Users\HW\.ssh\example
Your public key has been saved in C:\Users\HW\.ssh\example.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 你的用户名@你的计算机名
The key's randomart image is:
+---[RSA 3072]----+
| xxxxx |
| xxxxx |
| .o |
| =o... |
| . XS+. |
| xxxxxxxx |
| o*.=+ . o |
| .++.==Eo.... |
| +=.=+o==oo. |
+----[SHA256]-----+
PS C:\Users\你的用户名>
```
然后,打开`C:\Users\你的用户名\.ssh`(这个文件夹可能是隐藏的,打开“文件夹选项”中“查看”选项卡下的“显示隐藏的文件夹和文件”就能看到了,如图)
![01](vx_images/149635509246652.png =300x)
![](vx_images/303165709242406.png =300x)
>注意:除了显示隐藏文件外,还有清除“隐藏已知文件类型的扩展名”复选框的选择。
在`.ssh`目录下创建名为`config`的文本文件,清除其扩展名。用记事本打开这个文本文件,键入:
```
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/你刚才给私钥起的名字
```
保存并退出。
之后打开gitee.com进行如下设置
1. 注册并登录账号;
2. 打开右上角的头像->账号设置;
![](vx_images/286211310260286.png =300x)
3. 在左侧找到安全设置-SSH公钥
![](vx_images/519401410257890.png =300x)
4. 为公钥取一个标题,用记事本打开`C:\Users\你的用户名\.ssh\你刚才取的名字.pub`,复制里面的内容到“公钥”一栏;
![](vx_images/94771710255392.png =300x)
> 注意:要用记事本打开的是扩展名为.pub的文件不是无扩展名的文件。
5. 单击“确定”;
6. 把你用于注册Gitee的电子邮件地址发给我我把你拉入我在Gitee上创建的团队
7. 同意加入那个团队。
现在,你应该可以看到我创建的“赛车”仓库了。
## 一般操作
1. 在某个文件夹下打开终端或右键单击“开始”按钮然后单击“Windows终端”用下列命令进入该文件夹
```
cd <文件夹的绝对路径>
```
如果`>`前的路径没有更改,尝试在`cd`后面加上`/d`参数。
```
cd /d <文件夹的绝对路径>
```
2. fork仓库
单击“克隆/下载”上面一行最右面的“fork”。
3. 克隆仓库
```
git clone <url>
```
url可以从Gitee上获得具体方法如下
在Gitee上的组织主页打开“仓库”选项卡单击“赛车”仓库
单击“克隆/下载”旁边的倒三角;
单击“SSH”选项卡
单击“复制”url会被复制到剪贴板。
例如,克隆本赛车项目的命令为:
```
git clone git@gitee.com:tust-15-515/racing.git
```
>注意第2、3步只用操作一次。
4. 切到dev分支
```
git checkout dev
```
5. 进行编辑
6. 回到终端,将编辑加入暂存区
```
git add .
```
7. 提交编辑
```
git commit -m "本次提交的说明"
```
>注意:冒号是英文冒号,要切换到英文输入法下输入。
8. 推送提交
```
git push origin master
```
9. 提交Pull request
在你自己的fork页面上切换到dev分支单击“Pull request”按提示操作把dev分支推送到团队的dev分支。
以上就是一个完整的git工作流程。
>注意每天开始之前要Sync Fork。
> ```
> git remote add upstream <团队仓库url>
> git fetch upstream
> git checkout master
> git merge upstream/master
> git checkout dev
> git merge upstream/dev
> git push origin master
> git push origin dev
> ```
## 遇到冲突怎么办
### Pull request冲突
我来解决如果太多我会把Pull Request退回你sync fork重新处理冲突。
### Sync Fork冲突
你的冲突的每个文件里会出现这种东西:
![146944813237262](vx_images/293691514257428.png =600x)
需要哪个留哪个,多余的删掉,然后重新添加至暂存区、提交、推送。
## 我想自己建立一个新项目
1. 新建一个空文件夹,在里面打开终端,执行命令:
```
git init
```
2. 在Gitee上建一个新项目复制url
3. 添加远程仓库
```
git remote add upsteram <项目url>
```
4. 执行前面的第5步开始的东西。
5. 如果要创建新分支:
```
git checkout -b <新分支名>
```
6. 删除分支:
```
git branch --delete <分支名>
```
7. 查看本地有几个分支
```
git branch
```
8. 查看关联了几个远程仓库
```
git remote -v
```
9. 善用Bing/百度/Google。
## 如何排除文件/删除文件/回滚更改
### 删除文件
```
git rm <filename>
git commit -m "删除xxx"
```
### 排除文件(适用于文件从未被提交过;如果已提交过,先删除)
在项目里面有一个.gitignore文件打开它将要排除的文件和文件夹加进去就行了。排除子文件夹和不在同一目录下的文件应当注意文件夹与文件夹之间用“/”而非“\”分隔。
### 回滚更改
先看你提交过几次:
```
git log
```
然后用`git revert`命令回滚:
```
git revert <CommitID>
```
如需回滚到的提交不是最后一个,则需要:
```
git revert <需回滚掉的最旧一次的提交>^..<需回滚掉的最新一次的提交>
```
> 注意:必须包含^。
然后会生成一个新的提交,这个提交不包含被你撤销的那些提交。
另外,关于`git revert`还有些特殊情况,请详细阅读这篇文章:[
Git 之 revert
](https://blog.csdn.net/liuxiao723846/article/details/122691779)
关于`git revert`的更多用法请百度。如需删除提交,使用`git reset --hard`,具体百度。