0
点赞
收藏
分享

微信扫一扫

Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻直播带货及 免 费 小程序商城搭建的完整指南

陈情雅雅 03-22 14:30 阅读 2
git

ROS git使用

基本流程

创建 ROS 项目和初始化 Git 仓库

  1. 这里是使用 Git 和 Visual Studio Code (VSCode) 来管理一个 ROS 项目的完整指南,包括创建项目、初始化 Git 仓库、更改本地默认分支为 main,以及将代码推送到远程仓库的步骤:

    创建 ROS 项目

    1. 创建工作空间

      mkdir -p ~/ros_workspace/src
      cd ~/ros_workspace/
      catkin_make
      
    2. 创建 ROS 包

      cd src
      catkin_create_pkg package_name std_msgs rospy roscpp
      cd ..
      catkin_make
      source devel/setup.bash
      

    初始化 Git 仓库

    1. 在工作空间中初始化 Git

      cd ~/ros_workspace/
      git init
      
    2. 添加所有文件并进行首次提交

      git add .
      git commit -m "Initial commit"
      

    更改本地默认分支为 main

    1. 创建 main 分支

      git branch main
      
    2. 切换到 main 分支

      git checkout main
      
    3. 推送 main 分支到远程仓库

      git push -u origin main
      
    4. 更改远程仓库的默认分支为 main

      • 在 GitHub 或其他 Git 服务提供商的仓库设置中更改。

    在 VSCode 中使用 Git

    1. 用 VSCode 打开工作空间

      • 打开 VSCode 并选择“文件” > “打开文件夹”,然后选择您的 ROS 工作空间。
    2. 进行代码更改

      • 在 VSCode 中编辑文件,如修改源代码或添加新文件。
    3. 使用 Git 功能

      • 在 VSCode 的“源代码管理”面板中暂存、提交更改。

    链接到远程 Git 仓库并推送

    1. 在 GitHub/GitLab/Bitbucket 上创建一个新仓库

    2. 链接本地仓库到远程仓库

      git remote add origin <远程仓库的URL>
      
    3. 推送更改到远程仓库

      git push -u origin main
      

    注意事项

    • 确保在更改分支名称或删除分支之前,所有重要的更改都已经被合并或保存。
    • 与团队成员沟通有关分支名称更改的信息,以确保工作流程的一致性。
    • 如果项目涉及 CI/CD 或其他自动化流程,确保更新这些系统以适应新的分支名称。
  2. git push origin < branch-name >

这个 git 命令用于将本地的分支推送到远程仓库。让我们分解并详细解释这个命令:

git push origin <branch-name>
  1. git push

    • 这是 Git 中用于推送本地更改到远程仓库的基本命令。
  2. origin

    • 这是远程仓库的默认名称。当您克隆一个仓库时,Git 自动将其命名为 origin。它是一个引用,指向您克隆的远程仓库的 URL。
    • 在大多数情况下,origin 是远程仓库的别名,指的是您通过 git clone 命令克隆的那个仓库。
  3. <branch-name>

    • 这里,<branch-name> 应该被替换为您想要推送的本地分支的名称。
    • 例如,如果您想要推送名为 feature-x 的分支,命令将是 git push origin feature-x

使用场景

假设您在本地分支上进行了一些更改(例如添加新功能、修复错误等),并希望将这些更改上传到远程仓库。您会先在本地提交这些更改,然后使用 git push origin <branch-name> 命令将它们推送到远程仓库。

注意事项

  • 在使用此命令之前,确保您已经在本地正确提交了所有更改。
  • 如果远程仓库中不存在该分支,这个命令将在远程仓库中创建一个新分支,并推送您的更改。
  • 如果远程分支已存在,并且有新的更改,您可能需要先执行 git pull 来合并这些更改,以避免冲突。
  • 如果您在推送过程中遇到错误(如您所描述的情况),可能需要检查分支名称是否正确,或者您的本地仓库是否与远程仓库正确同步。

在您提到的具体情况下,出现错误的原因可能是本地没有名为 main 的分支,或者本地的 main 分支没有设置远程跟踪分支。您可以通过 git branch 检查本地分支,并通过 git branch -vv 检查分支的远程跟踪状态。

注意本地分支是main还是master

当您使用 git push origin <branch-name> 这个命令时,它会将您指定的本地分支推送到远程仓库的同名分支上。在这个命令中,<branch-name> 是您想要推送的本地分支的名称。以下是一些关键点:

  1. 如果远程仓库中存在同名分支

    • 您的本地分支将会被推送到远程仓库的这个同名分支上。例如,如果您执行 git push origin main,并且远程仓库中存在 main 分支,那么您的本地 main 分支上的更改将会被推送到远程仓库的 main 分支。
  2. 如果远程仓库中不存在同名分支

    • Git 将会在远程仓库中创建一个新的分支,并将您的本地分支的更改推送到这个新创建的分支上。例如,如果您执行 git push origin feature,并且远程仓库中不存在 feature 分支,那么 Git 将在远程仓库中创建一个名为 feature 的新分支,并推送您的更改。
  3. origin 是您的远程仓库的别名。它通常指向您通过 git clone 命令克隆的那个远程仓库。

  4. 如果您的本地分支没有设置与远程分支的对应关系,这个命令还会设置您的本地分支跟踪对应的远程分支。这意味着在未来的操作中,比如 git pull,Git 将知道从哪个远程分支拉取更改。

总之,git push origin <branch-name> 会将您的本地 <branch-name> 分支推送到远程仓库的同名分支上。如果远程仓库中没有这个分支,它会被创建。

master和main分支 本地分支和远程分支

mastermain 分支在 Git 仓库中都用作主分支的名称,但随着时间的推移,它们的使用和含义有所变化。

master 分支

  • 历史上的用法:在 Git 的早期历史中,master 是默认的主分支名称。当您初始化一个新的 Git 仓库时(使用 git init 命令),Git 默认会创建一个名为 master 的分支。
  • 主要作用master 分支通常被视为项目的主分支,包含生产或发布的代码。它是开发流程中最稳定、最可靠的分支,通常用作部署到生产环境的基础。

main 分支

  • 现代用法:近年来,为了避免引用奴隶制,许多组织和开源项目决定将默认的主分支名称从 master 更改为 main。GitHub 等主要的 Git 服务提供商现在默认使用 main 作为新仓库的主分支名称。
  • 主要作用:与 master 一样,main 分支被视为项目的主分支,包含生产或发布的代码,并作为开发流程的基础。

本地和远程的区别

  • 本地分支

    • 指的是您在本地计算机上的分支。您可以在本地分支上进行开发工作,包括提交更改、创建新分支等,而无需与远程仓库进行交互。
    • 在本地,您可以自由地命名分支、更改分支名称或删除分支。
  • 远程分支

    • 远程分支是指存储在远程仓库(如 GitHub、GitLab 等)上的分支。它们通常作为团队协作的基础,是团队成员共享和交换代码的地方。
    • 当您克隆一个仓库时,Git 会自动创建远程分支的跟踪分支。例如,远程仓库的 main 分支会在本地创建为 origin/main
    • 推送(git push)和拉取(git pull)操作用于与远程分支同步。

如何选择和使用

  • 选择使用 mainmaster 取决于个人或团队的偏好,以及您使用的 Git 服务提供商的默认设置。
  • 如果您正在创建一个新的项目,建议使用 main 作为默认的主分支名称,以符合现代的命名惯例。
  • 如果您正在与一个已经存在的项目合作,并且它仍然使用 master 作为主分支,那么您可能需要继续使用 master,除非项目决定进行更改。

分支的操作

在 Git 中,对分支的操作可以分为本地操作和远程操作。下面分别解释这两种情况下的常见操作:

本地分支操作

  1. 创建分支

    • 使用 git branch <branch-name> 创建一个新分支。
    • 例如:git branch feature-xyz 创建名为 feature-xyz 的分支。
  2. 切换分支

    • 使用 git checkout <branch-name> 切换到一个已存在的分支。
    • 例如:git checkout feature-xyz 切换到 feature-xyz 分支。
    • 或者使用 git switch <branch-name>,这是 Git 新版本中的替代命令。
  3. 合并分支

    • 使用 git merge <branch-name> 将指定分支的更改合并到当前分支。
    • 例如:在 main 分支上,运行 git merge feature-xyz 会将 feature-xyz 分支的更改合并到 main
  4. 删除分支

    • 使用 git branch -d <branch-name> 删除本地分支。
    • 例如:git branch -d feature-xyz 删除 feature-xyz 分支。
  5. 重命名分支

    • 使用 git branch -m <old-name> <new-name> 重命名分支。
    • 例如:git branch -m feature-xyz feature-abcfeature-xyz 重命名为 feature-abc
  6. 查看分支

    • 使用 git branch 查看所有本地分支。

远程分支操作

  1. 推送分支到远程

    • 使用 git push origin <branch-name> 将本地分支推送到远程仓库。
    • 例如:git push origin feature-xyzfeature-xyz 推送到远程。
  2. 拉取远程分支

    • 使用 git pull origin <branch-name> 拉取远程分支的更改并合并到当前分支。
    • 例如:git pull origin main 会拉取远程的 main 分支并与当前分支合并。
  3. 跟踪远程分支

    • 创建一个新的本地分支来跟踪远程分支:git checkout --track origin/<branch-name>
    • 例如:git checkout --track origin/feature-xyz 创建并切换到一个新的本地分支 feature-xyz,该分支跟踪 origin/feature-xyz
  4. 删除远程分支

    • 使用 git push origin --delete <branch-name> 删除远程分支。
    • 例如:git push origin --delete feature-xyz 从远程仓库中删除 feature-xyz 分支。
  5. 查看远程分支

    • 使用 git branch -r 查看远程分支。

注意事项

  • 在删除分支之前,请确保不再需要分支上的更改或已将这些更改合并到其他分支。
  • 远程分支操作通常涉及与其他团队成员的协作,因此在进行这些操作之前,最好与团队成员沟通。
  • 在执行远程操作之前,建议先执行 git fetch 来更新远程分支的状态。

分支冲突

要将 GitHub 上的远程仓库的 main 分支和 master 分支合并,并且最后只保留 master 分支,你可以按照以下步骤操作:

  1. 克隆仓库(如果你还没有克隆):

    git clone <your-repository-url>
    cd <your-repository-directory>
    
  2. 切换到 main 分支:

    git checkout main
    
  3. 拉取最新的 main 分支更改(确保你拥有最新的提交):

    git pull origin main
    
  4. 合并 main 分支到 master 分支:
    首先切换到 master 分支:

    git checkout master
    

    然后合并 mainmaster

    git merge main
    
  5. 处理可能出现的合并冲突:
    如果出现合并冲突,你需要手动解决这些冲突。解决后,使用 git add 将解决后的文件标记为已解决,然后继续合并。

  6. 推送合并更改到远程 master 分支:

    git push origin master
    
  7. 删除本地的 main 分支(如果你希望删除它):

    git branch -d main
    
  8. 删除远程的 main 分支:

    git push origin --delete main
    

在这个过程中,你首先确保 main 分支上的所有更改都被合并到 master 分支。然后,你可以选择性地删除 main 分支,无论是在本地还是在远程仓库。

注意:在合并和删除分支之前,请确保备份你的仓库以防意外发生。如果你对 Git 不是非常熟悉,建议在进行这些操作之前查看具体的文档或求助于有经验的开发者。

git对于大文件的处理

您遇到的问题是在尝试将大文件推送到 GitHub 仓库时出错。错误信息表明文件 src/robot_bringup/.vscode/browse.vc.db 太大,超出了 GitHub 100 MB 的文件大小限制。

以下是解决这个问题的几种方法:

  1. 使用 Git 大文件存储(LFS):

    • Git LFS 是一个用于在 Git 仓库中管理大文件和二进制文件的 Git 扩展。
    • 您可以按照 Git LFS 网站 上的指示安装 Git LFS。
    • 安装后,您可以使用像 git lfs track "*.extension" 这样的命令来跟踪大文件,其中 *.extension 是您想要跟踪的文件类型。
    • 然后,像平常一样添加、提交和推送您的更改。
  2. 移除或减小大文件的大小:

    • 如果 Git LFS 不适合您的需求,考虑移除大文件或减小其大小。
    • 要移除文件,使用 git rm --cached src/robot_bringup/.vscode/browse.vc.db 命令,然后提交并推送您的更改。
    • 如果该文件对您的项目是必需的,考虑将其压缩或分割成更小的文件。
  3. 避免跟踪不必要的文件:

    • .vscode 文件夹通常包含特定于您的开发环境的设置,可能不需要在您的仓库中跟踪。
    • 您可以将此文件夹添加到 .gitignore 文件中,以防止其被跟踪。

解决这个问题后,您应该能够推送您的更改到 GitHub 仓库,而不会遇到大小限制错误。

如果您已经删除了大文件,但仍然遇到相同的错误,可能是因为虽然文件已从当前工作树中删除,但它仍然存在于 Git 的历史记录中。这就意味着您的仓库中仍然包含超过 GitHub 大小限制的文件。要解决这个问题,您需要从 Git 历史记录中彻底移除该文件。这里是具体步骤:

  1. 使用 git filter-branch 命令

    • 这个命令可以用来重写 Git 历史,以此来移除或修改指定的文件。
    • 使用以下命令从历史记录中移除大文件:
      git filter-branch --force --index-filter \
      "git rm --cached --ignore-unmatch src/robot_bringup/.vscode/browse.vc.db" \
      --prune-empty --tag-name-filter cat -- --all
      
    • 这个命令将从所有分支和标签中移除指定的文件。
  2. 推送更改到远程仓库

    • 完成上述步骤后,您需要强制推送更改到远程仓库。因为您修改了历史记录,所以需要使用 --force 标志:
      git push origin --force --all
      git push origin --force --tags
      
    • 这将更新远程仓库中的所有分支和标签。
  3. 警告

    • 请注意,使用 git filter-branch 会重写历史记录,这可能会对其他协作者造成影响。确保在执行这些操作前通知所有项目协作者。
  4. 备选方案:使用 BFG Repo-Cleaner

    • 如果您觉得 git filter-branch 太复杂,可以考虑使用 BFG Repo-Cleaner,这是一个简化的工具,专门用于从 Git 仓库中移除大文件或敏感数据。

完成这些步骤后,您的仓库应该不再包含过大的文件,可以正常推送到 GitHub。

不必要的文件夹

如果您不需要 builddevel 文件夹,并且只想保留 src 文件夹,在 GitHub 远程仓库中删除这些文件夹的步骤如下:

  1. 删除本地文件夹:
    首先在本地仓库中删除 builddevel 文件夹。使用命令行,您可以这样做:

    git rm -r --cached build devel
    

    这个命令将 builddevel 文件夹从 Git 的暂存区中移除,但不会从您的文件系统中删除它们。

  2. 提交更改:
    接下来,您需要提交这些更改。使用以下命令:

    git commit -m "Remove build and devel folders"
    

    这会创建一个新的提交,记录了删除这两个文件夹的操作。

  3. 推送到远程仓库:
    然后,将这些更改推送到远程仓库:

    git push origin main
    

    根据您的分支名称,可能需要替换 main。例如,如果您的主分支是 master,则应使用 git push origin master

  4. 更新 .gitignore:
    为了防止将来这些文件夹再次被错误地上传,您应该在 .gitignore 文件中添加这两个文件夹的路径。只需将它们的名字添加到 .gitignore 文件中即可。

  5. 确认更改:
    完成以上步骤后,在 GitHub 仓库中检查以确认这两个文件夹是否已被成功移除。

这将确保 builddevel 文件夹从您的远程仓库中移除,并且未来不会再被错误地上传。

.gitgnore

更新 .gitignore 文件是一个简单的过程,可以通过以下步骤完成:

  1. 打开 .gitignore 文件:
    首先,您需要在文本编辑器中打开项目根目录下的 .gitignore 文件。如果该文件不存在,您可以创建一个。

  2. 添加规则:
    .gitignore 文件中,添加您想要 Git 忽略的文件或文件夹。在您的情况下,您想要 Git 忽略 builddevel 文件夹。将以下行添加到文件中:

    build/
    devel/
    

    这告诉 Git 忽略 builddevel 文件夹及其所有内容。

  3. 保存更改:
    保存 .gitignore 文件。

  4. 提交更改到仓库:
    接下来,您需要将这些更改提交到您的 Git 仓库。首先,添加更改到暂存区:

    git add .gitignore
    

    然后,提交这些更改:

    git commit -m "Update .gitignore to exclude build and devel directories"
    
  5. 推送到远程仓库:
    最后,将这些更改推送到您的远程仓库:

    git push origin main
    

    如前所述,根据您的主分支名称,可能需要替换 main

完成这些步骤后,builddevel 文件夹将被 Git 忽略,不会再被添加到您的仓库中。这也有助于防止未来这些文件夹被错误上传。

如果你在项目中找不到 .gitignore 文件,可能是因为这个文件尚未被创建。.gitignore 文件是一个用来指定 Git 忽略跟踪的文件和文件夹的特殊文件。你可以手动创建这个文件,并在其中指定你想要 Git 忽略的文件或文件夹。以下是创建和配置 .gitignore 文件的步骤:

  1. 创建 .gitignore 文件
    打开命令行或终端,在你的 Git 仓库的根目录下运行以下命令来创建一个 .gitignore 文件:

    touch .gitignore
    
  2. 编辑 .gitignore 文件
    使用文本编辑器打开 .gitignore 文件,并添加你想要 Git 忽略的文件或文件夹的路径。例如,如果你想要 Git 忽略 builddevel 文件夹,你可以在 .gitignore 文件中添加以下内容:

    build/
    devel/
    
  3. .gitignore 文件添加到 Git
    在创建和编辑完 .gitignore 文件后,你需要将它添加到仓库中。使用以下命令:

    git add .gitignore
    git commit -m "Add .gitignore file"
    
  4. 从仓库中移除已经跟踪的不需要的文件夹
    由于 builddevel 文件夹已经被上传到了远程仓库,你需要从 Git 的跟踪中移除它们,但保留它们在本地的副本。使用以下命令:

    git rm -r --cached build
    git rm -r --cached devel
    git commit -m "Remove build and devel folders from tracking"
    
  5. 推送更改到远程仓库
    最后,使用 git push 命令将这些更改推送到远程仓库。

注意,.gitignore 文件是对大小写敏感的,确保文件名和路径的正确性。此外,你可能需要根据你的项目需求调整 .gitignore 文件中的内容。

举报

相关推荐

0 条评论