【git和github的使用杂记】【环境虚拟机ubuntu18.04.6】

0 前言

  • 每次都想着下次有时间学习一下git的使用方法,明日复明日,明日何其多,这次就开始接触一下git的使用方法
  • 环境配置: 虚拟机18.04.6
  • github
  • 自己的Githun账号
  • github官网

1 安装配置git

1.1 检查是否安装了git

git version

如果出现了:

bupo@bupo-vpc:~$ git version
git version 2.17.1

说明已经安装

1.2 如果未安装,那么就进行安装

sudo apt-get update    //更新软件源列表

sudo apt install git

2 Git命令的使用(配置+上传+下载)

2.1 配置

2.1.1 Github账户配置

  • 也就是配置Github账户的用户名和邮箱以用于之后的提交。
  • 在电脑终端输入:
git config --global user.name "(这里填写你github上注册的名字,如xxx)xxx"
git config --global user.email "(这里填写你注册邮箱号,如aa@qq.com)aa@qq.com"
//之后:
git config  --list
//回车就会显示你的注册名字和注册邮箱

输出:

bupo@bupo-vpc:~$ git config --list 
user.name=xxx
user.email=aa@qq.com

2.1.2 SSH key的生成

  • 你的PC如果要与GitHub进行通信,必须先生成一对SSH key,并且保证GitHub上存有你的公钥.
2.1.2.1 检查SSH
  • 因为GitHub会用到SSH,因此需要在shell里检查是否可以连接到GitHub:
ssh -T git@github.com

我的出现了:

bupo@bupo-vpc:~$ ssh -T git@github.com

The authenticity of host 'github.com (20.205.243.166)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
Are you sure you want to continue connecting (yes/no)? yes

输入yes,如果看到:

Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
git@github.com: Permission denied (publickey).

说明可以连接

2.1.2.2 安装SSH keys
  • 一定要在~/.ssh目录下操作
  1. 第一步:检查是否已井具有ssh keys,如果已经具有,则进行第二步,否则,进行第三步
cd ~/.ssh
ls

运行结果如下:

bupo@bupo-vpc:~$ cd ~/.ssh
bupo@bupo-vpc:~/.ssh$ ls
known_hosts
  • 查看该目录下是否已经具有ssh keys,发现并没有id_rsa(私钥)和id_rsa.pub(公钥)这两个文件,有的话就执行第二步
  • known_hosts文件是 2.1.2.1 检查SSH刚才输入yse那一步骤生成的
  1. 第二步:备份并移除已经存在的ssh keys
mkdir key_backup
cp id_rsa* key_backup
rm id_rsa* 
  • 即将已经存在的id_rsaid_rsa.pub文件备份到key_backup文件夹
  1. 第三步:执行如下命令(不具有ssh keys时)进行远程登录:
  • 注意:""是需要的;在ssh目录下进行,可以无脑回车,默认是id_rsa
ssh-keygen -t rsa -C "你自己的github对应的邮箱地址,如aa@qq.com"
//之后连续按三次回车就行了。其中第一次需要输入文件名id_rsa
  • 运行的时候会先让你输入输入文件名,输入id_rsa就可以
  • 接着又会提示你输入两次密码(该密码是你push文件的时候要输入的密码,而不是github管理者的密码)。
  • 也可以不输入密码,直接按回车。那么push的时候就不需要输入密码,直接提交到github上了
  • 如下:
bupo@bupo-vpc:~/.ssh$ ssh-keygen -t rsa -C "aa@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/bupo/.ssh/id_rsa): id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
SHA256:uil+1NMjx5DhmhJ8VJSIjotz6JKUXK6/K30bVdQ8+2M aa@qq.com
The key's randomart image is:
+---[RSA 2048]----+
|     . +ooo      |
|    . o +  +     |
|   + . . +  o    |
|  ..+ . =  .     |
|.o+. o =S+  .    |
|++o.. =.+ =  E   |
|o+o  +.  + .. .  |
|o+ ...oo         |
|. o==++          |
+----[SHA256]-----+
  • 完成后你的主目录下就会生成一个/home/bupo/.ssh/文件夹,其中包含着3个文件id_rsa,id_rsa.pub,known_hosts,其中id_rsa 是私钥文件id_rsa.pub就是公钥文件.
  1. 生成密匙代码(公匙文件)
  • 在终端下,输入:
cat ~/.ssh/id_rsa.pub
  • 你会发现出现了我们不认识的代码(公钥文件),把显示出来的代码(自己的,别展示)全都复制下来,之后登录github。

2.1.3 公匙文件的上传

  • 下面的步骤就是在github下操作的,登陆自己的账号
  1. 在GitHub主页上点击头像,然后点击弹出菜单的“settings“项,并在“settings“界面左侧菜单栏选择“SSH and GPG keys“,然后点击“New SSH key
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 把从终端的复制的代码(公钥文件),粘贴在key表单中。title表单中,任意填写一个英文名字,之后,点击下方绿色选项。
    注意:包括ssh-rsa
    在这里插入图片描述
  3. 回到终端,输入如下命令,验证是否连接成功:
ssh -T git@github.com

如果询问yse/no,就输入yes,前面遇到过就不会遇到了

输出:

bupo@bupo-vpc:~/.ssh$ ssh -T git@github.com
Hi tapowanliwuyun! You've successfully authenticated, but GitHub does not provide shell access.
  • 表示连接成功了。这就完成了使GitHub和本地PC可以实现通信的信任配置。

2.2 上传

2.2.1 在Github上创建一个仓库

  • 在github中的配置同样可以参考
  • 如何在github创建第一个项目也可以参考,这里我创建的项目名称为czy_reposotory
    在这里插入图片描述
  1. 登录GIthub网站,在界面右上角点击”+”号创建新的仓库,注意这个仓库的名字要跟本地仓库一样,比如在这里,名字就是”czy_repository”,将相关信息都填好之后,Github上的仓库就创建好了。
    在这里插入图片描述
  2. 点击New respository创建一个新的仓库
    在这里插入图片描述
  • Private:私有的仓库时需要钱的

  • Description:是对仓库的描述

  • 下面是初始化信息,用于对仓库进行更详细的描述

  • 建议将Initialize this repository with的第一项勾选上创建后结果如下:
    在这里插入图片描述

  • 下面按步骤说说如何建立本地仓库和github上的存储库的联系

2.2.1 创建本地仓库

(1)在虚拟机上随便目录下创建一个文件夹存放要提交的文件,这个文件夹就叫做仓库(repository),我们假设将文件夹命名为”my_github"
在这里插入图片描述
这两个文件是之后模拟的要上传的文件,在这里也创建了
(2)进入这个文件夹,然后初始化

  • 在想要git的项目文件夹中,输入以下指令:
cd my_github
git init 

运行完后,会发现该目录下多了一个 .git 隐藏文件夹
在这里插入图片描述
如果你的没用,可以使用命令ctrl+h查看隐藏文件

(3)配置git

  • 设置用户名:
    your name:是你的github用户名,就是id
git config --global user.name "your name"
  • 设置用户邮箱
    your email:你的注册邮箱
git config --global user.email "your email"

(4)添加要关联Github远程仓库

git remote add origin "git@github.com: ... ..."

引号内为个人仓库的地址,具体要看你想将文件夹中文件关联到哪个仓库中,地址如下图所示:
在这里插入图片描述

(5)添加.gitignore:.gitignore可以忽略你不想上传的文件,比如doc,temp_data,data_base等。
参考:(超实用)Ubuntu下配置和使用GitHub
(6)添加提交文件:在提交之前最好先拉取一下,查看第(9)步

  • 每次更改文件也从这里执行
git add .

这是添加目录下所有文件,如果只是添加某个文件,就将文件名字列出。
托管完成后可以通过查看git本地仓库的状态,来查看所要上传的文件:

git status

(7)提交项目

git commit -m "描述信息"

-m参数后面跟着本次提交的描述信息,可以是修改了哪些代码,新增了哪些功能等等。

(8)上传项目

  • 每次更新云端都必须执行6、7、8步,将本地文件上传到存储库
git push -u origin master  

如果报错就强制上传,一般不用:

git push -u origin +master 
  • 如果是在新的电脑上上传更新,要提前进行拉取,否则报错
error: 无法推送一些引用到 'git@github.com:tapowanliwuyun/czy_repository.git'
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 'git pull ...')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。

解决方案看第九步

(9)拉取Github远程仓库master分支代码同步到本地

git pull origin master
git pull origin master --allow-unrelated-histories 

默认情况下,git合并命令拒绝合并没有共同祖先的历史。当两个项目的历史独立地开始时,这个选项可以被用来覆盖这个安全。由于这是一个非常少见的情况,因此没有默认存在的配置变量,也不会添加。
(10)每次本地仓库更新都要执行:

git add .
git status
git commit -m "更新"
git push -u origin master  

(11)取消git status的暂存文件

git reset HEAD

3 用git命令从分支拉取代码到本地

3.1 首先创建一个文件夹并初始化本地仓库

mkdir my_github
cd my_github
git init
  • cap2是自己创建的文件夹,用于存放拉取的文件
  • 实际操作如下
    在这里插入图片描述

3.2 关联本地仓库和远程仓库

git remote add origin git@github.com:tapowanliwuyun/czy_repository.git
  • origin表示远程库的名字,可以随意,一般默认为origin;
  • origin后面表示远程仓库的真实地址,如下图所示。我这里使用的是SSH地址,当然也可以使用HTTPS地址,复制过来就行。
    在这里插入图片描述

3.3 拉取分支代码

git fetch origin master
#可以使用git fetch origin 拉取全部
  • master为我的分支名字,根据自己的分支决定。
    在这里插入图片描述
  • 有的同学可能会用git pull,git pull = git fetch + git merge,因为pull拉取会合并本地文件,可能会导致冲突。
  • 拉取后的结果为:
    在这里插入图片描述

3.4 创建本地分支,并切换到本地分支

  • 经过上一步,在本地还看不到拉取的代码,需要手动创建一下:
  • 不要使用git checkout -b develop,如果没有关联远程,会出问题!!!
git checkout -b master origin/master
  • git checkout表示切换分支或恢复工作树文件。
  • -b表示进入git checkout之前执行git branch 创建分支操作。
  • 综合起来考虑,这一步的操作相当于执行checkout命令检出远程拉取分支,并进入该分支。
  • 使用ls命令可以看到下拉的文件,并且使用git branch命令可以看到当前停留的分支。

在这里插入图片描述

3.5 更新分支代码

  • 如果远程分支上有更新,可以使用pull命令对本地进行更新,如果没有,则可以跳过此步骤。
git pull origin master 

在这里插入图片描述

3.6 git 下载指定tag版本

3.6.1 方式一:直接进git网站手动下载安装包

直接看参考教程里面的

3.6.2 方式二:git clone

  • 标准使用方法
git clone --branch [tags标签] [git地址]
  • 例如:
git clone --branch 3.0 https://github.com/Little-Potato-1990/localization_in_auto_driving.git

3.7 本小节参考

如何使用git命令从分支拉取代码到本地,修改后提取代码到该分支,看这一篇就够了!

4 .gitignore的使用

  • 参考:
  1. Git 开发必备 .gitignore 详解!【建议收藏】
  2. .gitignore的用法

4.1 使用说明

4.1.1 创建.gitignore文件

 touch .gitignore

4.2 使用案例

4.2.1 cmakelists.txt的工程使用

# this is .gitignore file.
# 以下是忽略的文件

# 仅忽略当前路径下的build文件夹及其内所有的文件
build/

# 忽略当前这个.gitignore文件
# .gitignore

# 只删除第二级目录下的文件,如czy文件夹
*/czy/

4.3 所遇见的问题

4.3.1 Git配置.gitignore不生效解决方案

  • .gitignore文件只会在第一次提交项目的时候写入缓存,也就是说如果你第一次提交项目时候忘记写.gitignore文件,后来再补上是没有用的,.gitignore文件是不生效的。因为在缓存中已经标记该项目不存在ignore文件了
  • 如果本地仓库文件已被跟踪,那么即使在 .gitignore 中设置了忽略,也不起作用,意思就是,如果想把已经在git仓库中的文件忽略掉,直接在.gitignore中添加是不可以的,需要运行先删除仓库的记录,之后在.gitignore配置即可生效
  • 但是,这里修改缓存,提交之后,就相当于git仓库里面的文件全部删除,然后按照当地仓库重新提交,所以一定要考虑好
4.3.1.1 解决方案
  1. 方法一:清除全部缓存文件
  • 这种方法会把所有的缓存都清掉!根目录下执行完后,所有文件都需要add一次才行:
git rm -r --cached .
git add .
git commit -m ".gitignore重写缓存成功"
git push -u origin master
  1. 方法二:清楚指定缓存文件
  • 先删除仓库的记录,想让哪个生效,删哪个缓存就好:
git rm -r --cached 路径/文件名
  • 参考:
  1. Git配置.gitignore不生效解决方案
  2. .gitignore文件不生效解决

5 常用指令

#1、克隆仓库代码到本地:
	git clone "仓库地址"  	        
	
#2、查看本地代码与远程代码有哪些不同
	git diff  	       

#3//从远程拿到最新版本代码
#(提交代码时,忌讳直接提交。每次提交代码之前,
#	一定要保证本地的代码是最新的,即先执行git pull)
	git pull        

#4、查看本地代码属于仓库的哪个分支
	git branch        

#5、查看仓库都有哪些分支
	git branch -a         

#6、切换分支(注:不建议使用,最好给一个分支单独建立一个文件夹)
	git checkout "分支名"     

#7、克隆指定分支的仓库代码到本地
	git clone -b "分支名" "仓库地址"         

#8、上传本地文件到github的相应分支
	git push -u origin 分支名(分支名通常为master)

#9、查看本地 git的状态,和本地 git中包含的文件
	git status         

#10、连接远程主机:
	git remote add  origin  远程仓库地址


6 参考文献

Ubuntu下安装Git以及面向Github的简单教程
(超实用)Ubuntu下配置和使用GitHub
github使用(建立环境,基本命令,历史版本回滚)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是在Ubuntu 18.04.04上安装和配置Realsense D435i的步骤: 1. 下载和安装Realsense SDK: ``` sudo apt-get update && sudo apt-get upgrade sudo apt-get install libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev mkdir -p ~/realsense_ws/src cd ~/realsense_ws/src git clone https://github.com/IntelRealSense/realsense-ros.git cd realsense-ros/ git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1` cd ~/realsense_ws/ catkin_make clean catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release ``` 2. 安装ibrealsense2: ``` sudo apt-get install librealsense2-dkms sudo apt-get install librealsense2-utils sudo apt-get install librealsense2-dev sudo apt-get install librealsense2-dbg ``` 3. 配置udev规则: ``` sudo cp ~/realsense_ws/src/realsense-ros/realsense2_camera/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules && udevadm trigger sudo modprobe uvcvideo ``` 4. 启动camera: ``` source ~/realsense_ws/devel/setup.bash roslaunch realsense2_camera rs_camera.launch ``` 如果需要启用D435i的IMU功能,可以添加以下参数: ``` source ~/realsense_ws/devel/setup.bash roslaunch realsense2_camera rs_camera.launch enable_imu:=true ``` 5. 查看camera输入: ``` rostopic list rostopic echo /camera/color/image_raw rostopic echo /camera/depth/image_raw rostopic echo /camera/infra1/image_raw rostopic echo /camera/infra2/image_raw rostopic echo /camera/imu ``` 6. 使用rviz查看camera输入: ``` rosrun rviz rviz ``` 在rviz中添加以下内容: - Fixed Frame: camera_link - Add -> By Topic -> /camera/color/image_raw - Add -> By Topic -> /camera/depth/image_raw - Add -> By Topic -> /camera/infra1/image_raw - Add -> By Topic -> /camera/infra2/image_raw - Add -> By Topic -> /camera/imu

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值