git 版本更新
sudo add-apt-repository ppa:git-core/ppa -y
sudo apt-get update
sudo apt-get install git -y
git --version
注意:旧版本的git会导致遇到没有权限的子仓库后就不再拉取其他仓库了。所以要更新git版本。
git取消文件跟踪
git rm --cached src/tmp.cc #取消文件跟踪但不删除本地文件
git rm -r --cached src/ #取消文件夹跟踪但不删除本地文件
git rm -f src/tmp.cc #取消文件夹跟踪且删除本地文件
git中的submudule操作
git clone 集成仓库地址 --recursive
示例:
git clone git@gitee.com:YOUR_GITEE/YOUR_REPO.git --recursive #递归拉取所有子模块
git submodule foreach --recursive 'git status' #查看各个仓库的状态
#将集成仓库内所有子仓库的分支切换到develop分支
git checkout develop && git submodule foreach --recursive git checkout develop
批量添加远程仓库信息
git submodule foreach --recursive 'git remote add upstream `git remote get-url origin`'
git submodule foreach --recursive 'git remote set-url origin git@gitee.com:shoufei403/`basename $(git remote get-url origin)`'
注意:git@gitee.com:shoufei403需要修改成自己的帐号前缀
拉取分支更新的方法(但不能合并二进制文件,git pull可以)
git submodule foreach --recursive git fetch upstream #把修改拉下来
git submodule foreach --recursive git merge upstream/develop #把upstream/develop分支合并到当前分支
git submodule update --init src/map/clean_map #只更新单独的模块
添加子仓库
git submodule add 仓库地址 #在本地添加新的远程子仓库
删除子仓库
#以common 为模块的目录名字为例
#1. 逆初始化模块, 执行后子模块目录将被删除
git submodule deinit common
#2. 清除子模块缓存
git rm --cached common
#3. 提交代码并推送
git commit -am "Remove a submodule" && git push
撤销上次commit
git reset --soft HEAD^ #撤销上一次commit HEAD~2 撤销前两次 --hard 会把撤销的commit的代码也删掉
git stash
#能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
git stash
#作用等同于git stash,区别是可以加一些注释
git stash save “test1”
#查看当前stash中的内容
git stash list
#将当前stash中的内容弹出,并应用到当前分支对应的工作目录上
git stash pop
#将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
git stash apply
#清除堆栈中的所有内容
git stash clear
#查看堆栈中最新保存的stash和当前目录的差异
git stash show
拉取远程所有分支到本地
git clone xxx
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
取消本地修改
取消修改需谨慎使用。因为该命令会删掉对文件的修改。
1. 未使用git add 缓存代码 使用git checkout -- filename,注意中间有--
git checkout -- filename
放弃仓库内所有修改
git checkout .
此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令还没有执行)的修改。此命令不会删除新建的文件,因为新建的文件还没加入git管理系统中,所以对git来说是未知,只需手动删除即可
2. 已使用git add 缓存代码,未使用git commit 使用 git reset HEAD filename
git reset HEAD filename
放弃所有文件修改 git reset HEAD
git reset HEAD
此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所做的工作。在使用本命令后,本地的修改并不会消失,而是回到了第一步1. 未使用git add 缓存代码,继续使用用git checkout -- filename,就可以放弃本地修改
3. 已经用 git commit 提交了代码
使用 git reset --hard HEAD^ 来回退到上一次commit的状态
git reset --hard HEAD^
或者回退到任意版本git reset --hard commit id ,使用git log命令查看git提交历史和commit id
git reset --hard commit id
更新origin
git remote rm origin
git remote add origin 仓库地址
更新upstream
git remote add upstream 仓库地址
连接本地仓库和远程仓库
git branch --set-upstream-to=origin/remote_branch your_branch
删除远程分支
git push origin --delete _develop
合并二进制文件的方法
参考网址:https://blog.csdn.net/weixin_33967071/article/details/93329439
git merge B #试图将B分支合并到A分支上,会提示test.docx合并冲突
git checkout test.docx --ours #保留A分支(当前分支)上的改动
git add test.docx #提交改动后的文件
git commit -m "解决了test.docx上的冲突,保留了A分支改动"
关注公众号《首飞》回复“机器人”获取精心推荐的C/C++,Python,Docker,Qt,ROS1/2等机器人行业常用技术资料。

2606

被折叠的 条评论
为什么被折叠?



