6.25-Git 技巧

TOC

致谢

xqs83
git stash

前言

  • 自己是git新手,在本地没有分支的时候不知道怎么拉取(从别的电脑push的)远程分支,完全没办法,只好删除整个文件夹重新clone,后来到网上好好学了学,总算知道了。
  • 这里重点介绍一下本地没有该分支,需要到远程拉取该分支的方法

本地没有的时候拉取远程分支

错误做法

git branch link-rosforlv
git checkout link-rosforlv
git pull origin link-rosforlv
  • 因为,这样建立的branch是以master为基础建立的,再pull下来的话,会和master的内容进行合并,有可能会发生冲突

正确用法

  • git branch -a查看包括远程分支在内的所有分支:
  • 使用checkout命令来把远程分支取到本地,并自动建立tracking
git checkout -b link-rosforlv origin/link-rosforlv
  • 或者使用-t参数,它默认会在本地建立一个和远程分支名字一样的分支
git checkout -t origin/link-rosforlv
  • 也可以使用fetch来做:
    git fetch origin link-rosforlv:link-rosforlv

    不过通过fetch命令来建立的本地分支不是一个track branch,而且成功后不会自动切换到该分支上

结语

  • 学完之后才发现有这么多种方法可以做到这些,瞬觉自己才疏学浅,惭愧惭愧。

误在master上做开发

  • git stash 可以暂时将当前修改压入git stack栈中,在checkout 到其他分支后再从栈中压出来
# on master
git stash
git branch dev
git checkout dev
git stash apply
# 注意:2,3两步可以合为git checkout -b dev

git submodule

合并一个分支的特定commits

合并一个分支的一个重要commit

  • 比如,feature 分支上的commit 62ecb3 非常重要,它含有一个bug的修改,或其他人想访问的内容。无论什么原因,你现在只需要将62ecb3 合并到master,而不合并feature上的其他commits,所以我们用git cherry-pick命令来做:
git checkout master
git cherry-pick 62ecb3

commit提交错误

提交之后发现还有文件忘了提交

git commit -m 'initial commit'
git add forgotten_file
git commit --amend # 这个命令会将暂存区中的文件提交

其他错误

detached HEAD问题

  • 使用VSCode时候,提交时选择了origin/global_planner而不是global_plannner,结果checkout 过去发现自己不在一个branch里面,而是在某一个commit里面
  • 问题是,我其实是想生成一个新的branch,并且保存这些更改
git checkout global_planner # 执行完毕后仍然在master分支
git checkout otigin/global_planner # 执行完后来到了一个commit,而不是一个branch,此时就是detached HEAD状态
git checkout -b temp # 将此commit生成一个branch
# 之后就可以merge了
git checkout master 
git merge temp

git large file support

remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com

解决办法

#下载git large file 插件
# 到库里面
git lfs install

猜你喜欢

转载自www.cnblogs.com/lizhensheng/p/11117216.html
今日推荐