Git学习

在这里插入图片描述

创建git仓库

git init

查看git仓库路径

git rev-parse --show-toplevel

git init --bare

  • 指定某个目录成为中心仓库(裸仓库)
  • 这样的仓库初始化后,其项目目录下就是标准仓库.git目录里的内容,没有工作空间

创建裸仓库

git init --bare

git仓库克隆

git clone [url]
git clone https://github.com/tianqixin/runoob-git-test
git clone --depth=1 depth指克隆深度,为1代表只克隆最近一次commit
git clone --depth=1  https://github.com/ARM-software/arm-trusted-firmware.git 
git clone ssh://git@hostname:port/.../xxx.git
git clone xu.zhang@fae01-sz:/mnt/fileroot/xu.zhang/git_test.git
  • git_test.git是个目录,是个git仓库,在该目录下有.git文件夹

克隆子仓库

git clone --recurse-submodules git@github.com:FreeRTOS/FreeRTOS.git
git submodule update --init --recursive

提交到本地仓库

git commit -s
在提交日志消息的末尾添加由提交者签名的行
git commit -s --amend

使用场景:

  • 提交时不想保留上一次的记录
  • 上一次的commit message的描述有误,这时候你可以使用接下来的这个命令:git commit --amend
  • 不会重新提交记录,会在上一次原有的就内部进行更新

同步远程仓库内容到本地

git pull <远程主机名> <远程分支名>:<本地分支名>
  • 将最新的commit拉取到本地,在暂存区(git add)的不算
git fetch

同步本地仓库内容到远程

git push [REMOTE] [BRANCH]
git push

remote 默认为 origin,如果不填的话就推送到它上面,branch 默认为当前分支

  • 推送后工作区不会自动同步为最新的
    在这里插入图片描述
  • 将远程仓库同步为最新的:git reset --hard

远程仓库相关

查看远程仓库地址:

git remote -v

添加远程仓库

git remote add 【远程仓库别名】 【远程仓库地址】
git remote add review ssh://xu.zhang@scgit.amlogic.com:29418/vendor/amlogic/tv/tvhalcore.git (

删除本地分支

git branch -D bugfix/AMLOGIC-3508-zx002

删除远程分支

git push origin --delete [branch_name]
git push origin --delete bugfix/AMLOGIC-3508-zx002
git push origin --delete bugfix/AMLOGIC-3508-zx003

删除远程仓库

git remote rm 【远程仓库别名】

1. 查看所有提交

查看提交次数

git log --oneline | wc -l
git log

删除提交

2. git 版本回退

在这里插入图片描述
参考文档

命令说明
–mixed重置HEAD到另外一个commit
重置index == HEAD相匹配,但是也到此为止。working copy不会被更改
–soft
–hard

2.1 方案一(不保留以后的版本)

git reset --hard 目标版本号
git reset --hard HEAD^         回退到上个版本
git reset --hard HEAD~3        回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard commit_id     退到/进到 指定commit的sha码
git push origin HEAD -- force 强退至远程
  • 这样就会整个回退至目标版本号对应的状态,在这个版本后的版本提交记录就都没有了
  • git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本
git reset --hard origin/master
  • 忘记当前本地分支上的所有内容,并使其与origin/master完全相同

git reset --hard 【目标版本号】

  • 会改变工作区内容,变为版本号内容
  • git diff没有差异

git reset --soft 【目标版本号】

  • 不会影响工作区内容
  • git diff会显示差异信息

2.2 方案二

 git reset --soft commit_id 
  • –soft后,目标commit ID后面的所有commit ID也会消失
  • 仅仅将HEAD指针指向了commit1,暂存区和工作区还用的是commit2的
git reset HEAD^

git撤销中间的某一次提交

git revert的使用

在这里插入代码片

git status

更改代码后无add

git log

在这里插入图片描述

删除某次提交

在这里插入代码片

文件差异比较

git diff

  • 查看工作区缓冲区的区别
    在这里插入图片描述
  • 第一行表示 a 版本的 new.txt(变动前) 与 b 版本的 new.txt(变动后) 比较
  • 第二行 index 后面两个数字表示两个文件的 hash 值(index 区域的 ae784fb 对象,与工作目录区域的 58ded58对象进行比较)。最后的六位数字是对象的模式(100代表普通文件,644代表权限)
  • "—“表示变动前的版本,”+++"表示变动后的版本
  • 分为两个部分,第一个是-2,3,- 表示修改前,2,3 表示第二行开始的三行,后面的+ 2,4表示修改后文件的第二行开始的四行内容

git diff --cached

  • 对比暂存区(git add 之后)版本库(git commit 之后)

git diff HEAD

  • 对比工作区(未 git add)版本库(git commit 之后)
    在这里插入图片描述

比较当前工作区的package.json和上一次提交的内容有何差异

git diff <commit id> -- <workarea file name>

查看上次提交的文件

git diff HEAD^ HEAD --name-only

打patch

git format-patch -1
git format-patch bad02e32d47a8ea82b2bcb02b5e8950f23f61623 -1 

patch使用

git apply --check test.patch
git apply test.patch

分支操作

git查看本地分支【当前所在分支】:

git branch

git查看远程代码分支:

git branch -r

git查看远程和本地分支:

git branch -a

创建分支

git branch brach_name

创建并切换分支

git checkout -b branch_name

分支切换

git checkout branch_name

删除分支

git branch -d dev20181018

合并分支

git merge

在这里插入图片描述冲突是如何显示的

000
<<<<<<< HEAD
master_000
=======
zx001_000
>>>>>>> zx001

拉取远程分支并创建本次分支

方案一

git checkout -b 本地分支名x origin/远程分支名x
  • 使用该方式会在本地新建分支x,并自动切换到该本地分支x;采用此种方法建立的本地分支会和远程分支建立映射关系

方案二

git fetch origin 远程分支名x:本地分支名x
  • 使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout;采用此种方法建立的本地分支不会和远程分支建立映射关系

方案三

git pull <远程主机名> <远程分支名>:<本地分支名>
  • 如果远程分支是与当前分支合并,则冒号后面的部分可以省略

6. 命令解释

git reset --merge  //

远程git仓库变为下载地址

子仓库操作

添加子仓库

git submodule add [addr](子仓库远程地址)
git fetch origin
git reset --hard origin/master
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值