Git

安装

一般情况下,Linux系统一般都已经自带,无需安装,如需安装,Debian/Ubuntu请使用以下命令

Windows请下载安装包后自行按提示安装。

配置git用户名和邮箱

这里配置的用户名和邮箱都不作为验证用,用户名推荐使用中文。在查找代码历史时可以更方便查出作者是谁,不推荐使用偏僻的英文名或其它难以分辨的用户名。

小提示:以下命令请先复制出来,在vscode或任意文本编辑器中修改正确后全部复制进命令行执行。

没有出错信息就是成功了。

公钥的使用

在个人设置https://github.com/settings/keys中设置个人ssh公钥,之后使用ssh方式clone代码后再提交代码时不需重复输入用户名和密码。

  1. 生成生成ssh公钥及私钥

    或者

    一路回车即可,如果遇到文件已经存在的提示,可以选择覆盖原有文件,如下

    输入y并回车

  2. 将生成的文件

    • windows c:/用户/个人用户名/.ssh/id_rsa.pub
    • linux ~/.ssh/id_rsa.pub
    • linux ~/.ssh/id_ed25519.pub

    中的内容全部复制到个人设置https://github.com/settings/keyshttps://gitee.com/profile/sshkeys即可

    提示:

    可以通过cat命令输出这个文件的内容(windows请在Git Bash中执行该命令)

    注意:如果是通过文本编辑器打开的该文件,请注意一定不要误修改这个文件,如果你修改过,请按上面的步骤重新再次生成一次。

  3. 测试

    如果配置成功,命令行会提示Hi 张三! You've successfully authenticated, but GitHub does not provide shell access.,说明已经配置成功。

    如果执行以上命令后有权限错误,执行以下命令修复

    再次运行测试命令,应该就成功了,如果还是有问题,请联系 管理员协助。至此,系统初始化完成。

克隆(clone)

  1. 在本地通过命令创建一个目录名(名字可以是01factory或work之类),为了方便下面讲解,我们这里创建一个名为01factory的目录

  2. 在Github上打开任一个项目页面,点击绿色的Code按钮,用鼠标选择ssh页签,点击复制按钮

  3. 在终端上执行以下命令切换到项目目录

  4. 在终端执行以下命令克隆代码,以下命令需要删除掉xxx,粘贴第一步复制的git地址到xxx的位置

  5. 查看已克隆的项目目录

  6. 使用以下命令切换到项目目录,假设上一步查看已克隆到本地的目录名为xxx,以下命令需要删除掉xxx,替换为上一步克隆到本地的项目目录名

  7. 在终端执行以下命令下载项目依赖

  8. 使用vscode打开项目目录

提交(commit)

  1. 在项目中进行代码开发,并保存修改
  2. 在vscode中按ctrl+shift+g或者在左侧第三个图标上点击,切换到代码管理面板,在该面板下面的文件改变列表中,检查一下有没有误修改不相关的文件,如果有这类文件,鼠标放到该文件上,会有撤销按钮出现,点击该按钮,在弹出的提示框中确认,还原该文件
  3. 在列表上方的消息区填写要提交的消息内容
  4. ctrl+sctrl+enter提交修改,首次进行该操作vscode会弹出提示框,选择总是(Always)即可完成提交

拉取(pull)

在克隆代码之后,可能会有人向服务器推送代码,这时就需要将服务器上的代码拉取到本地,具体操作为

  1. 在终端中使用cd命令切换到项目目录下,如项目名称为xxx,在终端上使用以下命令切换到该项目目录下

  2. 在终端上执行拉取命令

  1. 有时候本地文件有修改而未提交,刚好这些文件有些文件与服务器上的文件有冲突,是不允许拉取的,在拉取的时候会有错误提示
  2. 有时候拉取完代码之后部分已提交的文件与服务器上的文件有冲突,需要手动解决完冲突后再进行提交合并冲突的操作

推送(push)

本地提交后,需要使用推送操作将本地提交推送到服务器,具体操作如下

  1. 在终端中使用cd命令切换到项目目录下,如项目名称为xxx,在终端上使用以下命令切换到该项目目录下

  2. 在终端上执行推送命令

同步(sync)

在vscode中,可以通过界面上的同步按钮进行代码的同步操作,同步操作包含了pull和push操作。

冲突

我们经常会遇到代码有冲突的情况,这通常会比较棘手。什么是冲突呢?比如张三和李四同时修改了同一个文件的某个相同的部分,张三先将修改的代码提交(commit)并推送(push)到服务器了,这个时候李四也修改了本地的代码,并且也提交(commit)了,这时候李四再拉取代码的时候就会提示有冲突并且无法自动合并,需要手动解决冲突