forked from YuAnhao/SpeedPioneer
185 lines
6.1 KiB
Markdown
185 lines
6.1 KiB
Markdown
# 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`,具体百度。
|