git - 了解 git 和 checkout

标签 git ubuntu makefile installation cmake

当我想安装一个库时,我试图了解 git 是如何工作的。假设我有一个名为 foo 的库,它有两个版本:foo-1.0foo-2.0 .所以,我运行 git clone git://github.com/dartsim/dart.git ,它会下载所有源文件。然后,我决定要安装版本 foo-1.0 .所以,我运行 git checkout release-1.0 .然后,我使用 mkdir build 创建一个构建目录, 输入 cd build ,然后使用 cmake ../src 构建和安装库和 make install .

好的,所以在 build文件夹中,有一个名为 libfoo.so.1 的库.在检查了我的 /usr/local/lib目录,还有一份libfoo.so.1安装后。我还看到了头文件foo.h已复制到 /usr/local/include .

现在,假设我还想安装 foo-2.0在同一系统上,无需卸载 foo-1.0 .例如,我可能使用 git 进行了更新,这需要我重新编译并重新安装最新版本。

安装的库和头文件会发生什么?我想会有一个 foo-2.0创建于 build目录,该目录也将被复制到 /usr/local/lib .但是,头文件呢?版本 1 和 2 不同,但源文件中只有一份副本。将运行checkout release-2.0 , cmake ../srcmake install只需覆盖 usr/local/include 处的头文件与版本 2 的头文件?在这种情况下,如何在同一系统上使用两个版本的库?

我只是一般有点不清楚checkout工作原理以及它在安装方面的实际含义.....任何帮助解决这个问题都会很棒,谢谢!

最佳答案

git checkout 给你一个特定的分支。您可以在 2 个分支上拥有 2 个不同的版本。您的构建系统需要克隆一个特定的分支,您可以使用此命令执行此操作

git clone -b <branch name> <remote_repo>

你永远不会在同一个地方有两个版本的相同代码,这基本上没有意义。

当您运行 checkout 命令时,它将切换到该特定分支中的代码版本。

这里有一个注释。 checkout 命令不会删除您 checkout 的最后一个分支中不存在的文件夹,因此您最终可能会得到额外的文件夹。

通常,您不需要在构建过程中运行 git checkout。只需克隆您想要的任何分支。

关于git - 了解 git 和 checkout ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621632/

相关文章:

Git - 每个分支都有单独的文件夹。设置它

linux - 用另一个 makefile 包装 GNU makefile

linux - 更新 makefile 标签中的变量

git - 如何修复 Git for Windows 错误 : "could not lock config file C:/file/path/to/.gitconfig: File exists"?

git - 克隆没有历史记录的 git 存储库?

android - 如何在 Ubuntu 上安装 Buildozer 以创建 Kivy 应用程序的 Android APK?

php - Ubuntu Server 14.04 LAMP更改php目录

c - 使用时间函数时出现段错误(核心转储)错误

linux - 为包含一些已安排文件夹的项目编写 makefile

git - 为什么 'git status' 运行过滤器?