Git

1. 分支

1.1 查看分支

git branch # 查看本地分支
git branch -r  #查看远程分支
git branch -a #查看所有分支,红色为远程

1.2 切换分支

git checkout [branch] #切换到已有分支
git checkout -b [newbranch] #创建并切换到新分支

1.3 推送分支到远端

git push -u origin [newbranch] #首次推送分支到远端,之后直接使用 git push origin [newbranch] 即可

1.4 删除分支

git push origin --delete [branch] #删除远端分支
git branch -D [branch] #删除本地分支

1.5 清空远程分支方法

git rm -r --cached . #清除本地缓存
git commit -m"delete"
git push origin main 

2. 克隆

2.1 克隆特定分支文件

git clone -b [branch] [仓库链接] 

2.2 一次性批量克隆仓库到本地

使用 vcs 命令实现批量下载,例如某 build_depends.repos 文件内容如下

repositories:
  common:
    type: git
    url: https://gitlab.com/autowarefoundation/autoware.ai/common.git
    version: master
  lanelet2:
    type: git
    url: https://github.com/fzi-forschungszentrum-informatik/Lanelet2.git
    version: master
  messages:
    type: git
    url: https://gitlab.com/autowarefoundation/autoware.ai/messages.git
    version: master
  mrt_cmake_modules:
    type: git
    url: https://github.com/KIT-MRT/mrt_cmake_modules.git
    version: master

在同级文件夹下使用命令:

vcs import ..<<build_depends.repos

将文件中的仓库批量下载至上一级文件夹 .. 当中。


3. 忽略文件或文件夹

  • 在git工作空间下创建 .gitignore 文件(注意不是在 .git 文件夹下创建),若要忽略 build.vscode 文件夹,则可以在 .gitignore 中写道:
# .gitignore文件内容
build
.vscode
  • 若要忽略的文件已经添加到缓存区,删除
git ls-files #缓存查看
git rm -r --cached [要忽略文件夹]
git add .
git commit -m "提交描述"

4. git merge 相关操作

  • --ff
  • --no-ff

5. git merge 和 git rebase 区别

两种方式都是合并分支,但是有差别。

5.1 git merge

  1. 简介: git merge 合并以后,两个分支的commit 信息还各自按照时间线保留,只不过是一种交叉方式的合并,在 git 树中存在交叉。
  2. 使用场景: 由各自的 feature 分支向 develop 分支合并。
git checkout main
git merge --no-ff develop 

image.png|400

5.2 git rebase

  1. 简介: 顾名思义,就是重新选择基础,也就是重新选择 rebase 的分支为基础,然后达到一个线性合并的方式。会找到两个分支的上一个共有 commit,然后插入 rebase 分支的新 commit 。
  2. 使用场景: 在本地清理自己的各种分支,主打一个简洁,并不需要多关注以前的 commit 时间和信息。
git checkout main
git rebase develop

image.png|400

6. git commit –amend

Git 中修改最近一次已经提交的代码,而无需再进行 commit 操作

# 修改代码
git add .
git commit —amend —no-edit

这样不会产生新的 commit,只有上一次的 commit ,但是也修改了代码。