git使用技巧总结

一、把github上的代码下载下来

  • 简单下载git代码
git clone ......
  • 下载代码,并更新子模块
git clone ....
# 更新.git/config文件
git submodule init
git submodule update
# 或者
git clone git@github.com:SprintRay-Software/Moonray.git --recursive

二、把修改的代码提交上去

git add ....
git commit -m "........"
git push -u origin master

三、强制切换成某个版本

git reset --hard .....commit code .......

四、创建分支

git checkout -b .... branch name ....
git add .......
git commit -m ........
git push -u origin ......branch name ......

五、切换成最新版本

git pull

六、放弃本地修改,远程分支强制覆盖本地

git fetch --all    //只是下载代码到本地,不进行合并操作
git reset --hard origin/分支名如master    //把HEAD指向最新下载的版本

七、git网页上删除分支后本地不同步

踩到一个小坑,如果在gitlab或其他web端删除git某分支,本地pull的话并不会更新分支列表,也就是会出现远端分支A已经被删掉了,但是在本地git bash里面仍然能看到远端分支A这种灵异的情况。本地使用branch -a 命令可以看到分支FixIECompatible,并且还可以检出。但是想删除远端分支的时候就报错了,说分支不存在(事实上远端就是不存在)。
可用如下命令刷新分支列表,可解决此问题

# 可用如下命令刷新分支列表,可解决此问题
    git remote update origin --prune
# 另外还可使用如下方法查看需要清理的本地分支
    git remote prune origin --dry-run
# 或
    git remote prune origin -n

八、代码修改完后如何提交

1.先需要把需要合并的分支,更新到最新
2.把自己写好的分支合并进需要合并的分支
3.git会自动合并代码,如果有冲突需要手动修改冲突。
4.修改完冲突,在自己的分支add和commit一下,并push
5.在git网页中提交pull requset

git checkout development
git pull
git checkout DRS-478_updateTime
git merge development
git submodule update
git status
git add MoonrayUI.pro
git commit -m "resolve confilict"
git push

九、从分支中创建分支

# 创建并切换到分支
git checkout –b 分支名称 
# 从某个commit开始创建分支
git checkout -b 分支名称 commitID

十、项目中修改了子模块

项目需要add子模块目录,把新的commit id上传上去。
QTCreator中打开子模块的文件后,选择git commit就可以上传子模块。
上传好子模块就又新的commit id,然后再主项目中add时增加那个目录的commit id就好了。

十一、git显示一行commitid

git log --pretty=one

十二、一台电脑用两个git

https://blog.csdn.net/ziwuzhulin/article/details/90400789

十三、修改git远程地址

git remote set-url origin git@github.com:aimi-cn/AILearners.git

十四、git查看add后的内容

#是查看暂存的变化
git diff --staged

十五、git是用git lfs上传大文件

git上传最大只有2gb可以上传,否则会生成remote: fatal: pack exceeds maximum allowed size的错误

git lfs install
git lfs track "path/to/large/file"
git add .gitattributes
git add "path/to/large/file"
git commit -m "Add large file: xxxx"
git push origin main

查找文件

find ./ -type f -size +100M -not -name '*.o' -exec git lfs track {} \; -exec git add {} \;
find ./ -type f -size +100M  -name '*.jar' -exec git lfs track {} \; -exec git add -f {} \;
find ./ -type f -size +100M  -name '*.a' -exec git lfs track {} \; -exec git add -f {} \;

find ./ -type f -size -100M -size +50M|grep -v '\/.git'

撤销一次最近的本地提交

git reset HEAD~1

把git本地的commit -m步骤撤销

git reset --soft HEAD^

之查看改动部分的内容,查看uncrack文件

git status -uno

find ./ -type f -size +100M -not -name '*.o'|grep -v '.git'|cut -c 3-
find ./ -type f -size -100M -size +50M|grep -v '\/.git'|cut -c 3-

git的commit一个一个提交脚本

#!/bin/bash

set -e
set -x
cd xxxx-directory

while true;do
        CurrentBranchName=`git rev-parse --abbrev-ref HEAD`
        RecentLogCommit=`git log --oneline origin/${CurrentBranchName}..HEAD|tail -n 1|awk '{print $1}'`
        RecentLogNote=`git log --oneline origin/${CurrentBranchName}..HEAD|tail -n 1| cut -d ' ' -f 2-`

        if [ -z "$RecentLogCommit" ];then
                echo "All local commits have been pushed. Exiting loop."
                break
        fi

        echo "Recent log commit: $RecentLogCommit"
        echo "Recent log note: $RecentLogNote"
        echo "Current branch name: $CurrentBranchName"
        git push origin $RecentLogCommit:$CurrentBranchName || true

        sleep 1
        echo "sleep done"
done
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

习惯就好zz

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

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

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

打赏作者

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

抵扣说明:

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

余额充值