GIT入职必备
GIT入职必备
实习入职已经一个月了,整理一下自己常用的一些指令,供自己查阅,也可以供一些新入职朋友参考。
这条博客也会不定时更新。
Git 简单理解
- Git 是一款代码同步的工具,方便团队协同工作时或个人编写程序时的代码管理。
- 这里画了一张基本的 Git 原理图供大家理解。
======================
Windows 环境
Git 安装
- 这里给出官方网址:https://git-scm.com/
- 还有阿里巴巴的镜像地址:https://registry.npmmirror.com/binary.html?path=git-for-windows/
- 官网下载比较慢,我们用镜像地址中选择一个版本下载就可以了,安装过程就是无脑下一步下一步。
- 安装完成后,我们会发现右键菜单多出两个选项。而
Git Bash Here
就是我们常用的,你在某个文件夹内右键单Git Bash Here
它会自动进入那个目录,方便你进行下一步操作
首次连接 - 仓库授权
当我们初次使用 Git 连接某个仓库(GitLab,GitHub,Gitee)时,都需要首先进行认证,不然权限通不过无法连接仓库。
- 在本地生成秘钥 key(先随便找个地方右键
Git Bash Here
输入以下命令)
ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
注:“ ” 中填写自己的邮箱即可
- 查看生成的 SSH Key,并复制。
cat ~/.ssh/id_rsa.pub
通过这个指令,我们生成了一长串秘钥,我们复制到剪贴板中
3. 配置到 Github/GitLab,Gitee
- 不同的平台操作方法类似,一般来说都是 设置 - 秘钥 这样的操作逻辑,下面列出 GitHub,Gitee 的操作方法。
首次连接 - 用户信息配置
- 首次连接的时候,还需要我们设置用户名和邮箱等信息,这样才可以进行提交等操作。
- 具体操作如下
法一:命令行配置(随意找个位置右键 Git Bash here)
git config --global user.name "xxxxxx"
git config --global user.email "xxxxx@zju.edu.cn"
// 这里有个config 表示全局配置,这样下次就不用再次配置了。
法二:利用配置文件
我们可以找到这个目录下的配置文件 C:\Users\Administrator\ .gitconfig ,然后利用自己的编辑器修改配置即可。
做完以上配置工作,我们已经可以进行正常的拉取和上传操作
如何将 Git 项目拉至本地 (法一)
一般来说,我们都是先 clone 主分支,即 master 分支,然后可以切换其他分支;想用哪个分支直接切换过去就可以了。
比如说我们想把网上一个项目(比说说公司正在做的项目)[如下图] 拉到本地。
我们先在本地新建一个同名文件夹,并且初始化git init
,我们会发现一个. git 文件。我们复制这里的 SSH 链接
回到我们刚才的文件夹,
git remote add origin xxxxSSHxxxx
建立远程连接git fetch origin master
从远程库获取 master 分支的代码git pull origin master
把代码拉取到本地此时,该文件夹内已经生成远程仓库的代码文件,并且打开 idea 会有对应的操作提示。这就表明该项目的主分支已经 clone 到你本地了。
如何将 Git 项目拉至本地(法二,推荐!)
这个方法更简单,更好用,推荐!
- 首先也需要复制这个 SSH 链接
- 直接找个地方
git clone xxxxSSHxxxx
(不用 init 这些, 他会直接连文件夹都帮你建好,非常方便!)
修改代码并提交
当我们修改了代码,想要提交的时候,有可能别人也修改了代码,所以我们需要把远程仓库的代码拉下来再提交
- 首先需要保存我们对代码的操作,这样即使代码丢失还可以找回
git add .
- 再
git commit -m "修改信息"
- 拉取远程仓库某个分支代码
git pull origin xxx
- 一般这个时候都会有 conflict 冲突,我们需要处理冲突,把报冲突的地方删删减减就可以了。
- 正式提交我们的代码,把代码提交到某个分支上
git push origin xxx
远程分支的切换
- 假设我们已经获得了 master 分支,如何切换到其他分支
git fetch origin
使我们能够看到所有的分支git branch -a
可以看到所有分支git checkout xxx
切换到 xxx 分支
如何将本地项目上传至 Git
有时候,我们在本地做了一个项目,然后想把这个项目同步到 Git 该怎么做呢?下面提出解决办法
首先,仓库授权和用户信息配置是通用的,如果没配置的话一样需要配置。
Git 新建一个仓库,仓库的名字和我们本地项目的名字是一样的。
我十分建议新建的时候添加一个 readme.txt(先不填 Desctiption,后面可以在本地的 readme.txt 里写再传上去),这样就可以自动创建一个 master 分支,方便我们直接上传
在项目内右键打开我们的 Git bash 工具,输入下面一串代码即可。
git init //记得先初始化
git add .
git commit -m "xxx"//提交到暂存区
git remote add origin git@xxxx//建立远程连接
git pull --rebase origin master//将GitHub仓库的文件与本地仓库的文件进行**合并**,不然远程有readme本地没有reademe文件是提交不上去的。
git push -u origin master//推送到远程(下次可以试试-u不加会怎么样)
如何将 Git 项目同步至本地
git fetch --all //拉取所有线上代码
git reset --hard origin/master //本地代码同步线上最新代码(会覆盖本地所有与远程仓库上同名的文件)
git pull //再更新一次
- 假如新建的时候没有勾选 add a readme file,就没有默认的 master 分支,需要自己创建分支
git branch -M master
如何用某一分支覆盖某一分支
千万谨慎,操作失误容易把自己原来的东西搞没
假如我现在有一个 master 分支,有一个 backup 分支,我想用 backup 分支覆盖 master 分支
- 确保你当前在 backup 分支上进行操作,可以通过以下命令来确认当前所在分支:
git branch
当前所在的分支会有 * 号标记。
确保你的 backup 分支中的更改已经提交和保存,如果有未提交的更改,可以使用以下命令进行提交:
git add .
git commit -m "提交更改"
- 切换到 master 分支:
git checkout master
- 将 backup 分支的更改合并到 master 分支上,可以使用以下命令:
git merge backup
或者,如果你希望完全覆盖 master 分支,可以使用以下命令:
git reset --hard backup
注意:使用 git reset --hard 命令会丢弃 master 分支上的所有更改,并将其重置为与 backup 分支相同的状态,请确保你不再需要 master 分支上的任何更改。
- 如果需要,可以将更改推送到远程仓库:
git push origin master
======================
Ubuntu 环境
其实思路基本类似于 windows 下的, 然后这里我们以 GitHub 作为仓库
Git 工具安装
- 命令行安装 Git 工具,Ctrl+Alt+T 唤出命令行,输入
sudo apt-get install git
首次连接 - 仓库授权
- 先在本地生成秘钥 key
- 仍然是命令行输入
ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
,然后这个 email@xx 填自己的邮箱即可,这时候已经生成自己的秘钥了。
- 仍然是命令行输入
- 查看秘钥
- 先进入文件夹
cd ~/.ssh
- ls 查看所有文件
cat id_rsa.pub
查看该文件内容,这里就是秘钥,我们复制到剪贴板就可以了
- 先进入文件夹
- 我们进入 GitHub,设置我们的秘钥
- 点击 New SSH Key
- 填写内容
首次连接 - 用户信息配置
首次连接的时候,还需要我们设置用户名和邮箱等信息,这样才可以进行提交等操作 ()。具体操作如下
- 我们直接呼出命令行, 输入下面两条指令即可,当然邮箱和名字填写你自己的
git config --global user.name "xxxxxx"
git config --global user.email "xxxxx@xxu.edu.cn"
// 这里有个global表示全局配置,这样下次就不用再次配置了
OK 了,配置的思路和 win 一模一样
创建用于同步的仓库
首先我们在 GitHub 上创建一个仓库,首页就能直接创建, 和上面 win 的过程一模一样,(注意这里有个主分支名是否为 master 的问题,我在 win 操作的时候没碰到,今天碰到了,这里提前改为 master 后面麻烦会少一点)
创完仓库把地址 copy 一下
先再本地创建同名文件,然后打开该文件夹后右键打开终端,输入
git init
初始化一下git remote add origin xxxxSSHxxxx
建立远程连接(就是上面 copy 的地址)git fetch origin master
从远程库获取 main 分支的代码。(注意下面那个图里的 main 再创建仓库时已经改为 master 了)同理
git pull origin master
把代码拉取到本地好了,仅有的 readme 也已经同步到本地
VSCode 中如何操作
- 我们用 VSCode 打开这个文件夹
- 然后也是有两种方式去同步,一种是他提供的可视化操作,还有一种是自己唤起命令行操作。(当然在 vscode 之外,你直接 ctrl+alt+t 进行同步也是完全可以的)
其他操作和 win 一样,看上面 win 步骤就行
============
ROS 控制下的注意点
- 在 ROS 机器人控制中,我们经常需要从 GitHub 上下载现成的机器人包放到我们的工作空间 workspace 里,但是 GitHub 上的包里往往已经存在了 git 的同步文件,会影响我们对 workspace 的同步控制(同步一个大包的时候小包里不能也有 git 同步),所以我们把下载下来的现成包里的同步文件删掉即可。
- 比如下图,我就把
.github
.gitlan/issue_templates
.gitnore
.git
删掉了 - 如果下次我想更新这个驱动包,就把这个包删掉重新 clone 下来然后一样删掉这些同步文件。
2. 每台电脑上的环境可能还是有些许不同的,所以建议工作空间 workspace 下 devel 和 build 的内容不用同步,每次在本地重新编译就可以了(在同步 workspace 工作空间的时候只同步 src 的内容)。具体做法就是在目录下新建一个.gitgnore
,然后直接输入你要屏蔽同步的文件名字,如下图:
- 可以在本地创建然后 push 到云端
- 或者在云端创建然后 pull 到本地
======================
Git 常用命令速查表
- 这里有一张网上看到的速查表格,可以没事看一看