git常用命令

 Git 工作区、暂存区和版本库的概念

工作区:就是你在电脑里能看到的目录。
暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

 图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage, index),标记为 “master” 的是 master 分支所代表的目录树。

当对工作区修改(或新增)的文件执行 “git add” 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
 

git拉取代码基本的命令:

下载代码
git clone https://github.com/ultralytics/yolov5

设置用户名,邮箱
git config --global user.email "simple.sheng@aiwinn.com"
git config --global user.name "simple.sheng"

查看远程仓库的地址
git remote -v
修改远程仓库的地址
git remote set-url origin http://192.168.1.1/3rdpartys/opencv_4.5.2.git

创建并切换分支
git checkout -b v0.9rc1

切换分支
git checkout master

更新代码到本地
git pull

查看代码的状态
git status .

查看当前使用分支
git branch

查看所有分支
git branch -a

将暂存区的单个文件去掉,就是将绿的变红
git reset HEAD <file>

将暂存区中添加所有文件去掉,就是将绿的变红
git reset HEAD	

放弃本地修改,直接覆盖
git reset --hard

退回到某个指定的版本
git reset bb2b53300f --hard 

撤销对某个文件的修改
文件在工作区的改坏了,可以用该命令进行还原
git checkout -- 文件名

git新建分支并上传分支的代码:

#查看当前分支
git branch  

#查看所有的分支
git branch -a   

例如我要建一个名称为nolog的分支
新建并切换到nolog的分支
git checkout -b nolog

若已有nolog的分支,切换到nolog的分支
git checkout nolog

将nolog分支下,要上传的代码提交,第三步在origin后面跟上当前分支的名称
git add .
git commit -m "nolog branch"
git push origin nolog

查看本地分支
git branch

查看远程分支
git branch -r

删除本地未合并的分支
git branch -D 分支名

删除本地已合并的分支
git branch -d 分支名

删除远程分支
git push origin –delete nolog    #删除远程分支
git branch -d nolog            #删除本地分支

submodule相关的命令:

下载子项目
git submodule init        # 初始化本地配置文件
git submodule update    # 从该项目中抓取所有数据并检出父项目中列出的合适的提交。

添加子模块:
git submodule add http://192.168.1.100:3000/simple.sheng/image.git
然后 将.gitmodule 和 image 提交到git中

删除子模块:
rm -rf 子模块目录 删除子模块目录及源码
vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目
vi .git/config 删除配置项中子模块相关条目
rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可

在使用https git拉取代码时,每次git pull的时候都会让输入用户名和密码

进入项目目录
git config --global credential.helper store

如果要清除用户名和密码
运行一下命令缓存输入的用户名和密码
git config --global credential.helper wincred

清除掉缓存在git中的用户名和密码
git credential-manager uninstall

git pull 提示 git branch --set-upstream-to=origin xxx

当前分支与远程分支并未建立联系,需要执行一下 git branch --set-upstream-to=origin/ 操作 

若当前是main的分支,输入命令:

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

该命令让当前分支和远程分支建立联系之后,就可以进行git pull,git push的操作了。

git commit后,如何撤销本地commit的代码

 例如:

git add test.txt

git commit -m "update"

执行完commit后,还没有执行push,若想要撤销这次的commit,可以使用git reset --soft HEAD^,使用git reset --hard HEAD^,这样连暂存区的文件也撤销了

命令解释:

HEAD^ 表示上一个版本,即上一次的commit,几个^代表几次提交,如果回滚两次就是HEAD^^
也可以写成HEAD~1,如果进行两次的commit,想要都撤回,可以使用HEAD~2

--soft
不删除工作空间的改动代码 ,撤销commit,不撤销add

--hard
删除工作空间的改动代码,撤销commit且撤销add

如果commit后面的注释写错了,可以运行git commit --amend 
进入vim编辑模式,修改完保存即可

撤回历史的提交记录

若想撤回上一次的提交记录,即回到上上个版本

git rebase -i 版本的id号

然后弹出一个交互的命令行,将前几行的pick改回drop,然后按esc,:wq进行保存,即删除了最近的提交记录。

.gitignore文件用法及配置

语法规范

#    注释该行

*    匹配零个或多个字符
     *.a表示忽略.a文件
     *.[oa]表示忽略所有以.a和.o结尾的文件,*~忽略所有以~结尾的文件
     []用来用来匹配括号内的任一字符,如[abc],也可以在括号内加连接符,如[0-9]匹配0至9的数
     ?用来匹配单个字符

!    用来否定忽略
     比如前面用了*.txt,然后使用!*a.txt,则这个a.txt不会被忽略

/    正斜杠在前:匹配项目跟目录;如/bin表示忽略根目录下的bin文件,/bsp表示忽略根目录下的bsp文件 
     夹,但不忽略子目录里的user/bsp文件夹
     正斜杠在后:匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;如bsp/表示忽略bsp文件夹里 
     的所有文件

**   匹配多级目录,可在开始,中间,结束

忽略优先级

1.忽略bin文件
    #忽略所有的.bin文件
    *.bin

2.否定忽略link.bin
    #不忽略目录下的link.bin
    !link.bin
    #不忽略obj目录下的link.bin
    !/obj/link.bin

3.忽略某目录的.txt,不包括其子目录的.txt
    #忽略doc/notes.txt, 不包括doc/server/arch.txt
    doc/*.txt

4.忽略某目录内所有的.pdf文件
    #忽略所有的 .pdf 文件在doc的任意子目录下的
    doc/**/*.pdf

5.忽略当前目录.c,不忽略子目录.c
    #忽略cat.c,不忽略 build/cat.c
    /*.c

6.忽略当前路径下的Proj文件夹,该文件夹下的所有内容都会被忽略
    #忽略当前路径下的Proj文件夹,该文件夹下的所有内容都会被忽略
    Proj/

7.忽略Proj文件夹子目录文件夹
    #忽略Proj文件夹子目录Obj文件夹里的所有文件
    Proj/Obj/

8.忽略根目录下的某文件
    #忽略根目录下的bin文件
    /bin

9.忽略/foo, a/foo, a/b/foo等
    #忽略/foo, a/foo, a/b/foo等
    **/foo

10.忽略a/b, a/x/b, a/x/y/b等
    #忽略a/b, a/x/b, a/x/y/b等
    a/**/b

11.忽略当前路径的某文件
    #忽略当前路径的config.php文件
    config.php

git上传文件夹,但不上传里面的内容

例如results的文件夹

.gitignore中下面一行,不会保证了不会上传results里面的内容
results/

在results的文件夹中添加.gitkeep的空文件,然后使用以下命令,将该文件推送到git的远程仓库
git add -f resullts/.gitkeep

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值