git常用

git

用来和github等进行交互,将code推向云端

一般使用流程

  1. 使用git add 将code放入缓存区
git add -a
git add slam/*
git add slam/example.cc
  1. 使用git status查看状态

  2. 使用git commit 添加注释,用一句话解释该次提交的作用,输入git commit后会进入vim编辑器

  3. 使用 git push将提交的代码push到云端 git push 将代码提交到云端,第一次提交或者提交到别的分支具体写法有修改

其余常用指令

git diff 比较当前和之前提交的差别

新建分支并同步到远端

git checkout -b "brunchname" 新建分支,比如,可写作

git checkout -b GX_encoder

新建分支后将新分支传到远端

git push --set-upstream origin branch_name 

暂存当前分支修改

git stash

返回当前分支后获取之前的修改

git pop

对于从分支branch_o上拉出来的分支branch_a,在主分支修改后要将修改同步到branch_a, 而branch_a做的修改保留,操作如下:

# 将云端的代码拉到本地,但是不做合并
git fetch
# 将拉下来的代码中的待合并分支合并到当前分支
git merge origin/branch_o

# 将当前分支的内容发到云端
git push

使用别人维护的子模块儿,可以直接拉下来,而不维护

git submodule init
git submodule update

ssh和http

使用ssh下载需要配置密钥,而使用http下载需要输入密码

normal orders

# working directory -> Stage
git add files
# Stage -> History
git commit
# History -> Stage
git reset
# 撤销最后一次提交
git reset --files
# 撤销所有提交
git reset
# 把文件从暂存区域赋值到工作目录,丢弃本地修改
# “--”不能丢弃,不然就变成了分支指令
git checkout --filename
# 撤销readme.md 文件在工作区的全部修改,将其回复到缓存区的状态
git checkout --readme.md

git tag

# 给最新一次提交打上“V1.0”的标签
# "-a"是为这个标签注解,告诉git标签的时间和作者
git tag -a V1.0
# 给提交85fc7e7注标签
git tag -a v0.9 85fc7e7
# 查看所有标签
git tag
# 指定标签信息命令
git tag -a <tagname> -m "XXX"
# 查看此版本的修改
git show V1.0
# 删除标签
git tag -d v1.1

git log

# 列出历史记录
git log
# 历史记录的简介版本
git log --oneline
# graph,查看分支,合并出现的时间,拓扑图
git log --oneline --decorate --graph
# 逆向显示
git log --reverse
# 寻找指定用户的日志
git log --author=efan
# 指定日期
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges

git branch /git merge

# 删除分支
git branch -d (branchname)
# 删除远端分支
git push --delete origin (branchname)
# git merge 后要修改冲突, 合并指定分支到当前分支
git merge
# git pull = git fetch + git merge
git pull
# 切换分支
git switch master
# 创建并切换到新分支dev
git switch -c dev

git rm

# 从git中移除某个文件,单纯的执行rm file只会在工作区删除,执行下列指令才会删除版本库中的文件
git rm <file>
# 强制删除
git rm -r <file>
# 仅从缓存区删除,但留着工作目录
git rm --cached <file>

git reset ->版本回退

# HEAD表示当前版本,HEAD^上一个版本,HEAD^^上上个版本,HEAD~100上一百个版本
# 回退到上个版本
git reset --hard HEAD^
# 此时git log已经不显示最新的commit,可以用最新的commit id(已经不显示)再前进到最新版本
git reset --hard <commit id>
# 为了找到这个commit id有命令,git reflog
# 该命令记录了我们的每一次操作记录,从中可以找到我们想要的 commit id
git reflog

同步某个分支B的某些文件(file1, file2)到当前分支A

# 切到A分支
git checkout -o A
# 新建一个临时分支
git checkout -b suanz
# 在临时分支合并B,此时临时分支的file1和file2是A和B分支合并的结果
git merge B
# 切回A分支
git checkout -o A
# git checkout 可以直接把对应分支的对应文件拿过来强制覆盖当前分支
git checkout suanz file1 file2

bug

git时显示 fatal: unable to access ‘http://XXX.git/’: Empty reply from server

  • 可能是设置了代理,需查看
  • stackoverflow 解释可以考虑使用指令git fetch origin --prune 尝试

(我的解决方式是第一种,我中设置里面设置了全局代理,disable掉就可以了,第二种方式记录一下)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值