git常用指令

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等机器人行业常用技术资料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

首飞爱玩机器人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值