【学习笔记】git 笔记、gclient笔记、VS code git 相关插件

git

在这里插入图片描述

  • Workspace:工作区

  • Index / Stage:暂存区

  • Repository:仓库区(或本地仓库)

  • Remote:远程仓库
    在这里插入图片描述

git branch -vv
git rebase
git push

VS code 插件

  • gitlens 可以实时看每行、每个文件是谁修改的。可以根据commit 哈希值来查找对应,显示效果也很棒
    • 配置 git config --global core.editor "code --wait" 可以图形化处理冲突、处理rebase
  • Git History:图形化很棒,可以选择两个commit来比?
  • clang-format 可以按照Google 格式 格式化自己的代码,更好看更标准了
  • Remote - SSH、Remote Development 远程开发利器

提取远程仓库

  • git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写

    • git pull origin master:brantest :将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
  • git fetch [alias] 告诉 Git 去获取它有你没有的数据;(更新本地的远程分支)

  • 执行 git merge [alias]/[branch] 以将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支。

// 获取服务器最新数据
git fetch origin
// 将其合并到当前分支
git merge origin/master
  • git fetch更新本地仓库的两种用法:
# 方法一
$ git fetch origin master                #从远程的origin仓库的master分支下载代码到本地的origin maste
$ git log -p master.. origin/master      #比较本地的仓库和远程参考的区别
$ git merge origin/master                #把远程下载下来的代码合并到本地仓库,远程的和本地的合并
# 方法二
$ git fetch origin master:temp           #从远程的origin仓库的master分支下载到本地并新建一个分支temp
$ git diff temp                          #比较master分支和temp分支的不同
$ git merge temp                         #合并temp分支到master分支
$ git branch -d temp                     #删除temp

https://www.runoob.com/git/git-remote-repo.html
在这里插入图片描述

  • 执行 git fetch origin master 时,它的意思是从名为 origin 的远程上拉取名为 master 的分支到本地分支 origin/master 中。既然是拉取代码,当然需要同时指定远程名与分支名,所以分开写。
  • 执行 git merge origin/master 时,它的意思是合并名为 origin/master 的分支到当前所在分支。既然是分支的合并,当然就与远程名没有直接的关系,所以没有出现远程名。需要指定的是被合并的分支。
  • 执行 git push origin master 时,它的意思是推送本地的 master 分支到远程 origin,涉及到远程以及分支,得分开写了

推送到远程仓库

git push [alias] [branch]

  • add: 内容写进暂存区
  • commit: 暂存区内容添加到本地仓库
  • push:将本地的分支版本上传到远程并合并。
//git add
git add . //目录下所有文件 
git add readme.md
// 然后可以更新远端,再查看远端和本地的区别
git fetch origin
git diff HEAD FETCH_HEAD

//git commit 
git commit -m 'update readme'

//push 远程仓库
git push origin master 
//或者 :将本地masterA推送到远端masterB
git push origin masterA:masterB
合并push 了的commit(合并commit)
  • git log
  • git rebase -i HEAD~3 最近三个(看自己最近几个
    • 或者 git rebase -i origin/master rebase 到master (处理完冲突就push就好,有可能要push -f)
  • git push -f origin local:master 之前push 过的commit ,rebase 后需要 push force
还没push的commit
  • 可以直接git reset --soft HEAD~1 恢复1个commit回来,然后合成一个commit 提交

参数

git remote

  • -v 参数(verbose),你还可以看到每个别名的实际链接地址。

git reset [--soft | --mixed | --hard] [HEAD] 回退版本

add && commit && push
$ git add --all # 当前项目下的所有更改
$ git add .  # 当前目录下的所有更改
$ git add xx/xx.py xx/xx2.py  # 添加某几个文件

第三步:git commit,变为已提交状态

git commit -m"<这里写commit的描述>"
git commit --amend -m #使用一次新的commit,替代上一次提交

第四步:git push,变为已推送状态

$ git push -u origin master # 第一次需要关联上
$ git push # 之后再推送就不用指明应该推送的远程分支了
$ git branch # 可以查看本地仓库的分支
  • git diff检查的是工作区与暂存区之间的差异。
$ git diff # 列出所有的修改
$ git diff xx/xx.py xx/xx2.py # 列出某(几)个文件的修改
refs

Git Reference简写为refs
Reference Specification简称refspec

  • 本地分支 的Reference格式:refs/heads/<local_branch_name>
    • 如refs/heads/master,在保证唯一的情况下可以简写为master
  • 远程追踪分支 的Reference格式:refs/remotes/<remote_repository>/<remote_branch_name>
    • 如refs/remotes/origin/master,在保证唯一的情况下可以简写为origin/master
  • tag 的Reference格式:refs/tags/<tag_name>
    • 如refs/tags/v1.0.1,在保证唯一的情况下可以简写为v1.0.1

一些Git保留使用的特殊refs:

  • HEAD,指向当前本地分支的当前commit状态
  • FETCH_HEAD,指向当前本地分支在最近一次fetch操作时得到的commit状态
  • ORIG_HEAD,指向任何merge或rebase之前的刚刚检出时的commit状态
branch

Git 分支 - 分支的新建与合并

git branch //查看本地所有分支 

git branch -r //查看远程所有分支

git branch -a //查看本地和远程的所有分支

git branch <branchname> //新建分支

git branch -d <branchname> //删除本地分支

git branch -d -r <branchname> //删除远程分支,删除后还需推送到服务器
git push origin:<branchname>  //删除后推送至服务器

git branch -m <oldbranch> <newbranch> //重命名本地分支

git branch -vv // 查看本地分支关联(跟踪)的远程分支之间的对应关系
git branch --set-upstream-to=origin/master-remote master-local //将本地分支和远端分支建立关联 or 建立新的连接
远端建立、断开链接、查看远端 url
  • git remote remove origin 断开链接
  • git remote add origin “url” 与“url” 建立连接
  • git branch --set-upstream-to=origin/master-remote master-local //将本地分支和远端分支建立关联 or 建立新的连接
  • git remote -v 查看远端
checkout
  • git checkout <branch、commit、tag> 切换到对应分支、commit、tag
    • 直接切换分支,会处于 detached HEAD 状态,这时候tag 相当于快照,无法修改代码。
  • git checkout -b branch_name tag_name 根据tag 创建新分支并立即切换到该分支下
log
//每次提交的简略统计信息
git log --stat
 
tag
  • git tag -l | xargs git tag -d #删除所有本地分支

  • git fetch origin --prune #从远程拉取所有信息

  • git ls-remote --tags origin #查询远程tags的命令如下:

tag常用git命令:

  • git tag #列出所有tag
    • git tag -l v1.* #列出符合条件的tag(筛选作用)
  • git tag #创建轻量tag(无-m标注信息)
  • git tag -a -m ‘first version’ #创建含标注tag
    • git tag -a f1bb97a(commit id) #为之前提交打tag
    • git push origin --tags #推送所有本地tag到远程
  • git push origin #推送指定本地tag到远程
  • git tag -d #删除本地指定tag
  • git push origin :refs/tags/ #删除远程指定tag
  • git fetch origin #拉取远程指定tag
  • git show #显示指定tag详细信息
patch
  • git diff > ***.patch 生成patch
  • git apply *.patch 打patch
    • git apply -R *.patch 回退patch
stash & status

经常一起用

  • git status
  • git stash 将新的贮藏推送到栈上
  • git stash pop 重新应用 & 移除
    • git stash apply 重新应用
    • git stash drop 移除
  • git stash list
    • git status -s
reset
  • git reset HEAD^ main.cc 回退 main.cc文件的版本到上一个版本
  • git reset HEAD^ 回退所有内容到上一个版本
  • git reset HEAD^3 回退所有内容到上三个版本
    • 默认的参数是--mixed 重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。(即,现在改的,之前commit 的都到暂存区)
    • --soft 修改版本库,保留暂存区,保留工作区(即,现在改的不变,之前commit 的都到staged)
    • --hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
      • 谨慎使用 –hard 参数,它会删除回退点之前的所有信息。
cherry-pick
  • 已经提交的commit, 从一个分支放到另一个分支
  • git cherry-pick <commit id>
  • 切换到需要这个commit 的分支,然后执行,这个commit 就会加到当前分支的commit 中

本地仓 clone 、复制一份本地仓库

  • git clone <source> <dir> 拷贝source 到 dir, dir是不存在的目录,拷贝时自动创建的。

gclient

  • 跨平台的代码仓库管理工具,用于管理由多个代码仓库组成的项目;
    • 核心功能是根据一个Solution的DEPS文件所定义的规则将多个git仓库拉取到指定目录。例如,chromium就是由80多个独立仓库组成。

Using depot_tools
https://keyou.github.io/blog/2017/11/02/gclient/

  • gclient sync 该命令用来同步solution

    • 所依赖的是根目录下的DEPS 文件,记录了依赖url 等。
  • Hooks: gclient中的术语,当gclient拉完代码之后执行的额外脚本;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值