# 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可以从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 git commit -m "删除xxx" ``` ### 排除文件(适用于文件从未被提交过;如果已提交过,先删除) 在项目里面有一个.gitignore文件,打开它,将要排除的文件和文件夹加进去就行了。排除子文件夹和不在同一目录下的文件,应当注意文件夹与文件夹之间用“/”而非“\”分隔。 ### 回滚更改 先看你提交过几次: ``` git log ``` 然后用`git revert`命令回滚: ``` git revert ``` 如需回滚到的提交不是最后一个,则需要: ``` git revert <需回滚掉的最旧一次的提交>^..<需回滚掉的最新一次的提交> ``` > 注意:必须包含^。 然后会生成一个新的提交,这个提交不包含被你撤销的那些提交。 另外,关于`git revert`还有些特殊情况,请详细阅读这篇文章:[ Git 之 revert ](https://blog.csdn.net/liuxiao723846/article/details/122691779) 关于`git revert`的更多用法请百度。如需删除提交,使用`git reset --hard`,具体百度。