Git基础知识

一、git 查看当前分支

你可以使用以下命令来查看当前所在的 Git 分支:

git branch

输出中带有 * 符号的分支就是当前所在的分支。

如果只想显示当前分支的名称,可以使用:

git branch --show-current

二、开发过程中,忘记切换分支,有什么办法当前开发的内容移动新的分支中?

如果你在开发过程中忘记切换分支,但已经进行了一些提交或有一些未提交的更改,不用担心,你可以将这些更改移动到新的分支。具体步骤如下:

方法 1: 已经提交代码的情况

如果你已经提交了代码,但忘记切换分支,可以使用以下步骤将提交移动到新分支:

  1. 创建并切换到新分支
    你可以在当前分支的基础上创建一个新分支,并把提交移动到新分支上。

    git checkout -b 新分支名
    
  2. 回到原分支并重置到提交之前的状态
    然后回到之前的分支并重置到提交前的状态,这样之前的分支就不会包含你忘记切换分支时的提交。

    git checkout 原分支名
    git reset --hard 上一个合适的commit_id
    

    commit_id 可以通过 git log 找到)

方法 2: 未提交代码的情况

如果你还没有提交代码,但已经有了本地更改,可以使用以下步骤:

  1. 暂存更改
    你可以将所有未提交的更改暂存,切换到新分支,再将更改应用到新分支。

    git stash
    
  2. 切换到新分支
    创建并切换到新分支。

    git checkout -b 新分支名
    
  3. 恢复暂存的更改
    将之前暂存的更改应用到新分支。

    git stash pop
    

之后,你就可以继续在新的分支上开发了。

方法 3: 结合提交和未提交的情况

如果你既有未提交的更改,又有提交了的内容,可以将未提交的部分 stash 暂存,然后根据方法 1将已提交的部分移动到新分支。

三、拉取远程master分支,合并到当前dev分支

要从远程的 master 分支拉取最新的更改并合并到你当前的 dev 分支,按以下步骤操作:

1. 确保你当前位于 dev 分支

首先,你需要确认自己在 dev 分支上。如果你不在 dev 分支,可以用以下命令切换:

git checkout dev

2. 拉取远程 master 分支

然后,从远程仓库中拉取 master 分支的最新代码:

git fetch origin master

3. 合并 master 分支到当前的 dev 分支

接下来,合并远程的 master 分支到当前的 dev 分支:

git merge origin/master

4. 解决冲突(如果有)

如果合并过程中产生了冲突,Git 会提示你手动解决冲突。你可以打开冲突文件,手动修改冲突部分,然后添加修改并完成合并:

git add <file_with_conflict>
git commit

5. 推送到远程 dev 分支(可选)

合并完成后,你可以将 dev 分支推送到远程仓库:

git push origin dev

这样你就完成了从远程 master 分支拉取并合并到 dev 分支的操作。

四、git fetch origin master 后, git branch没有显示master

在执行 git fetch origin master 后,如果 git branch 没有显示 master 分支,可能是因为 master 分支还没有被创建为本地分支。git fetch 只拉取了远程的 master 分支更新,但不会在本地自动创建该分支。

你可以通过以下方式查看远程分支,并创建本地的 master 分支:

1. 查看远程分支

使用以下命令查看所有远程分支:

git branch -r

你应该能看到类似 origin/master 的分支,表示远程仓库中存在 master 分支。

2. 创建本地 master 分支

如果你需要在本地创建并切换到 master 分支,可以执行:

git checkout -b master origin/master

这会在本地创建一个名为 master 的分支,并将它设置为跟踪远程的 origin/master

3. 确认本地分支

执行以下命令来确认本地分支是否显示 master

git branch

这样,你就可以看到本地的 master 分支了。

五、将本地已经创建的dev分支设置为跟踪远程dev分支

要将本地的 dev 分支设置为跟踪远程的 dev 分支,可以使用 git branch --set-upstream-to 命令:

设置本地 dev 分支跟踪远程 dev 分支

  1. 确保当前切换到 dev 分支:

    git checkout dev
    
  2. 设置 dev 分支跟踪远程的 origin/dev 分支:

    git branch --set-upstream-to=origin/dev
    

验证跟踪关系

设置完成后,你可以通过以下命令验证本地分支的跟踪状态:

git branch -vv

它会显示当前分支跟踪的远程分支。

六、拉取远程分支的更新

要拉取远程分支的更新并合并到当前分支,可以使用以下命令:

  1. 确保切换到要拉取更新的分支

    git checkout dev
    
  2. 拉取远程分支的更新并合并

    git pull origin dev
    

这会从远程仓库的 origin/dev 分支拉取更新并自动合并到你本地的 dev 分支。

如果你已经设置了分支的跟踪关系(如之前的 git branch --set-upstream-to=origin/dev),你也可以简单地运行:

git pull

这将拉取并合并当前分支跟踪的远程分支的最新更改。

七、将master分支更新内容合并到dev分支

要将 master 分支的更新内容合并到 dev 分支,你可以按照以下步骤操作:

  1. 切换到 dev 分支

    git checkout dev
    
  2. 拉取最新的 master 分支更新

    git fetch origin master
    
  3. 合并 master 分支到 dev 分支

    git merge origin/master
    

    这会将 origin/master 分支的最新更改合并到你当前的 dev 分支中。

  4. 解决任何合并冲突(如果有的话):

    • Git 会提示你如果在合并过程中遇到冲突。你需要手动编辑冲突的文件,解决冲突,然后将解决后的文件标记为已解决。
    • 使用以下命令添加已解决的文件:
      git add <file>
      
    • 提交合并:
      git commit
      
  5. 推送合并后的 dev 分支到远程仓库(如果需要):

    git push origin dev
    

这些步骤将确保你的 dev 分支包含了 master 分支的最新更改,并在需要时解决任何合并冲突。

八、git fetch origin master 将拉取的内容保存到哪个分支上了?

使用 git fetch origin master 命令会从远程仓库拉取 master 分支的最新更新,并将这些更新保存在本地的 origin/master 分支上。origin/master 是远程 master 分支的本地跟踪分支。

这不会自动合并到当前分支。你需要执行额外的操作来将这些更新合并到你当前的工作分支。具体来说,git fetch 操作只会更新远程跟踪分支,而不会更改你的本地分支。

如果你想将 origin/master 的更改合并到你当前的分支(比如 dev),你需要在执行 git fetch 后执行合并操作。以下是完整的流程:

  1. 获取远程分支更新

    git fetch origin master
    

    这将把远程 master 分支的最新内容下载到 origin/master

  2. 切换到你的工作分支(例如 dev):

    git checkout dev
    
  3. 合并 origin/master 到你的工作分支

    git merge origin/master
    

    这样,你就将远程 master 分支的更新内容合并到了你的 dev 分支上。

九、 如何查看fetch后代码更新

要查看 git fetch 获取到的代码更新,你可以通过以下步骤进行检查。

步骤 1: git fetch

首先,使用 git fetch 命令获取远程仓库的最新提交。这一步不会更改你当前的分支,只是更新本地的远程跟踪分支。

git fetch origin

步骤 2: 查看远程分支的变更

要查看远程仓库与本地分支之间的差异,可以使用 git loggit diff

1. 使用 git log 查看更新的提交

你可以通过 git log 查看当前分支与远程分支的差异。比如你想查看 master 分支和远程 origin/master 之间的差异:

git log HEAD..origin/master

这将显示自本地 master 分支以来,远程 origin/master 上的新提交。

2. 使用 git diff 查看代码差异

如果你想查看具体代码的差异,可以使用 git diff

git diff HEAD..origin/master

这会显示你本地 master 分支与远程 origin/master 分支之间的代码差异。

步骤 3: 检查远程分支

你还可以列出远程仓库中所有分支的最新状态:

git branch -r

然后,你可以查看某个远程分支的更新:

git log origin/<branch-name>

这会列出远程 <branch-name> 分支的所有提交记录。

十、如果查看fetch代码更新

要查看 git fetch 获取到的代码更新,你可以通过以下步骤进行检查。

步骤 1: git fetch

首先,使用 git fetch 命令获取远程仓库的最新提交。这一步不会更改你当前的分支,只是更新本地的远程跟踪分支。

git fetch origin

步骤 2: 查看远程分支的变更

要查看远程仓库与本地分支之间的差异,可以使用 git loggit diff

1. 使用 git log 查看更新的提交

你可以通过 git log 查看当前分支与远程分支的差异。比如你想查看 master 分支和远程 origin/master 之间的差异:

git log HEAD..origin/master

这将显示自本地 master 分支以来,远程 origin/master 上的新提交。

2. 使用 git diff 查看代码差异

如果你想查看具体代码的差异,可以使用 git diff

git diff HEAD..origin/master

这会显示你本地 master 分支与远程 origin/master 分支之间的代码差异。

步骤 3: 检查远程分支

你还可以列出远程仓库中所有分支的最新状态:

git branch -r

然后,你可以查看某个远程分支的更新:

git log origin/<branch-name>

这会列出远程 <branch-name> 分支的所有提交记录。

结论

  • git fetch 后不会自动合并代码,你需要手动检查更新。
  • 使用 git log HEAD..origin/branch 查看提交记录。
  • 使用 git diff HEAD..origin/branch 查看代码改动。

在 Git 中,两个点号 .. 是一种范围运算符,用来指定两个提交之间的比较范围。它的作用是列出在一个分支或提交点上存在,而在另一个分支或提交点上不存在的提交或差异。

让我们深入理解 ..HEAD..origin/master 中的作用:

.. 的含义

两个点号 .. 用于定义一个比较的范围,表示从第一个提交(或分支)到第二个提交(或分支)之间的范围。具体来说:

  • A..B:表示比较两个提交点 AB,列出从 AB 之间的提交。
    • 只显示在 B 上有但不在 A 上的提交(即 B 相对于 A 的新增提交)。

解释 HEAD..origin/master

  • HEAD..origin/master:表示比较当前分支(HEAD 所指的提交)和远程 origin/master 分支之间的差异。
    • 它会列出HEAD 以来,在 origin/master 上新增的提交。换句话说,这些是远程分支上有,但本地分支上没有的提交。

行为示例

  1. git log HEAD..origin/master

    • 这会列出在 origin/master 分支上存在,但不在 HEAD(即你当前的本地分支)上存在的提交。通常用于查看远程仓库在你本地未同步的提交。
  2. git diff HEAD..origin/master

    • 这会显示远程 origin/master 分支与本地 HEAD 分支之间的代码差异,显示的内容是那些在远程分支上但不在本地分支上的变动。

总结

  • 两个点号 .. 的作用:比较两点之间的差异,列出在第二个点上存在但不在第一个点上的内容。它通常用于在查看远程仓库和本地分支之间的差异时,帮助开发者决定是否需要更新本地代码。

结论

  • git fetch 后不会自动合并代码,你需要手动检查更新。
  • 使用 git log HEAD..origin/branch 查看提交记录。
  • 使用 git diff HEAD..origin/branch 查看代码改动。

十一、将已经有的本地项目上传到 Git 仓库的步骤如下:

1. 初始化 Git 仓库

如果你的本地项目还没有初始化 Git 仓库,请在项目根目录中运行以下命令:

git init

2. 添加远程仓库

使用以下命令将远程仓库添加为你的 Git 远程地址。如果你已经有 Git 仓库,则跳过此步骤。

git remote add origin <repository-url>

<repository-url> 替换为你的 Git 仓库的 URL。例如:

git remote add origin https://github.com/username/repository.git

3. 添加所有文件到暂存区

将所有文件添加到 Git 的暂存区中:

git add .

4. 提交更改

为你的更改添加一次提交信息:

git commit -m "Initial commit"

5. 推送到远程仓库

将你的更改推送到远程仓库的 main 分支(或者其他分支,例如 master):

git push -u origin main

总结

  1. 初始化 Git 仓库:git init
  2. 添加远程仓库:git remote add origin <repository-url>
  3. 添加文件:git add .
  4. 提交文件:git commit -m "Initial commit"
  5. 推送到远程仓库:git push -u origin main

这样,所有的本地文件都会被上传到 Git 仓库。

十二、gitlab 包含模型文件,比较大,怎么上传

当你的 GitLab 项目包含较大的模型文件或其他大文件时,直接上传可能会遇到一些限制。你可以使用以下几种方法来处理:

方法 1:调整 Git 的文件大小限制

  1. 调整 GitLab 的限制
    如果你有权限管理 GitLab 实例,你可以调整 GitLab 服务器上的文件大小限制。通常,这是系统管理员的职责。

  2. 调整 Git 的 buffer 大小
    如果文件较大但并没有超过 GitLab 的限制,可以通过调整 Git 的 buffer 大小来提高上传效率。使用以下命令设置:

    git config http.postBuffer 524288000  # 将 buffer 设置为 500MB
    

    如果你使用的是 SSH,可以设置 sendpack buffer:

    git config ssh.postBuffer 524288000
    

方法 2:使用 Git LFS (Large File Storage)

Git LFS 是 Git 的扩展,专门用于处理大文件。它将大文件的内容存储在 Git 仓库外部的存储系统中,而在 Git 仓库中只保留指向大文件的引用。

  1. 安装 Git LFS
    首先需要安装 Git LFS:

    • 对于 macOS:
      brew install git-lfs
      
    • 对于 Ubuntu/Debian:
      sudo apt-get install git-lfs
      
  2. 初始化 Git LFS
    在项目中启用 Git LFS:

    git lfs install
    
  3. 跟踪大文件
    配置 Git LFS 来跟踪特定的文件类型或大文件:

    git lfs track "*.model"  # 例如跟踪所有 .model 文件
    

    这将在仓库根目录生成 .gitattributes 文件,记录哪些文件由 LFS 处理。

  4. 提交和推送
    提交并推送文件:

    git add .gitattributes
    git add path/to/large/file
    git commit -m "Add large model file"
    git push origin main
    

    使用 Git LFS 后,大文件将被存储在 Git LFS 的存储中,而仓库中只包含文件的指针。

方法 3:分块上传

如果模型文件太大,GitLab 可能会拒绝上传,可以尝试将大文件拆分成较小的部分,再在需要时重新组装。

  1. 拆分文件
    使用 split 命令将大文件拆分为较小的部分:

    split -b 100M large_model_file.bin part_
    

    这将文件拆分为每个 100MB 的部分(根据你的需求调整大小)。

  2. 提交拆分后的文件
    将拆分后的文件提交到 GitLab。

  3. 重新组装文件
    在需要使用模型文件的地方,使用 cat 命令重新组装:

    cat part_* > large_model_file.bin
    

方法 4:使用外部存储

如果模型文件非常大并且经常变化,可以考虑将其存储在外部文件存储服务中,如:

  • AWS S3
  • Google Cloud Storage
  • 阿里云 OSS

然后只在 GitLab 仓库中存储指向外部存储的链接或脚本。

具体步骤:
  1. 将大文件上传到外部存储服务。
  2. 在 GitLab 仓库中创建一个脚本或文档,描述如何从外部存储下载大文件。
  3. 使用 .gitignore 确保这些大文件不会被误提交到仓库中。

总结

  • Git LFS 是管理 Git 仓库中的大文件的最佳选择。
  • 如果模型文件非常大,使用 外部存储 可能会更合适。
  • 调整 Git 的配置可以帮助解决某些上传问题,但并不适合长期处理大文件。

选择适合你项目的方案,可以确保大文件被正确上传和管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值