最基础的Git使用简介

最基础的Git使用简介

1、最常用的 git 命令有

#git help
   add        添加文件内容至索引
   bisect     通过二分查找定位引入 bug 的变更
   branch     列出、创建或删除分支
   checkout   检出一个分支或路径到工作区
   clone      克隆一个版本库到一个新目录
   commit     记录变更到版本库
   diff       显示提交之间、提交和工作区之间等的差异
   fetch      从另外一个版本库下载对象和引用
   grep       输出和模式匹配的行
   init       创建一个空的 Git 版本库或重新初始化一个已存在的版本库
   log        显示提交日志
   merge      合并两个或更多开发历史
   mv         移动或重命名一个文件、目录或符号链接
   pull       获取并整合另外的版本库或一个本地分支
   push       更新远程引用和相关的对象
   rebase     本地提交转移至更新后的上游分支中
   reset      重置当前HEAD到指定状态
   rm         从工作区和索引中删除文件
   show       显示各种类型的对象
   status     显示工作区状态
   tag        创建、列出、删除或校验一个GPG签名的 tag 对象

安装: apt-get install git

理解:工作区、暂存区、本地仓库、远程仓库概念

2、基本操作

  • 创建本地仓库
    git init
  • 查看工作区状态
    git status
  • 设置签名
    局部签名设置:
    git config user.name xxx
    git config user.email xxx@email.com
    备注:在工作仓库里查看 cat .git/config
    全局签名设置:
    git config --global user.name xxx
    git config --global user.email xxx@email.com
    备注:在用户目录查看 cat ~/.gitconfig
  • 添加文件到暂存区
    git add <file>.... 可重复使用
    git add -A 提交所有变化
    git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
    git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
  • 删除暂存区文件
    git rm --cached <file>...
  • 将暂存区文件提交到本地仓库
    git commit -m "commit message" -m后面输入的是本次提交的说明
    git commit -s 在vim中添加提交信息(推荐)
    git commit -amend 最近提交的commitid中追加提交(推荐)
    git commit -C hard -a --amend 追加到hard,不参数新的提交记录

3、查看历史记录

  • 查看历史提交
    git log 命令显示从最近到最远的提交日志,
    git log --pretty=oneline 精简输出
    git log --oneline
    git reflog
    git log --stat 查看每条log提交对应的修改(推荐)
    git log --graph 命令可以看到分支合并图
    git log -p 文件名 可查看该文件以前每一次push的修改内容
    git show commit-id filename 只看某次提交中的某个文件变化

4、版本回撤

  • 基于哈希值
    git reset --hard xxxxxxx 备注:git reflog获得哈希值
  • 基于 ^ 符号
    git reset --hard HEARD^ 备注:回撤一个版本,HEARD后一个,回撤两个就有两个
  • 基于~符号
    git reset --hard HEARD~3 备注:回撤3个版本

除了–hard参数外还有–soft与–mixed参数,注意三个参数的区别如下:

  1. git reset --soft
    回退commit信息,把之前的代码回退到暂存区(即git add . 没有git commit -m “”).所以回退完成之后,需要git commit -m ""或者git commit --amend 重新提交就好
  2. git reset --mixed或者 git reset (默认是git reset --mixed)
    回退commit和暂存区(index)信息,即回退完需要重新git add .git commit -m ""或者git commit --amend
  3. git reset --hard
    回退所有,代码是指定分支的,暂存区(index)和工作区的代码都扔弃,慎用!

5、对比操作

  • 对比文件
    git diff file
    备注:可以通过git status查看改都有那些文件
  • 对比文件夹
    git diff -urNa dir1 dir2

6、分支操作

  • 创建分支
    git branch -b new-b
  • 查看项目所有分支
    git branch -v
  • 创建分支
    git branch xxx
  • 切换到xxx分支上
    git checkout xxx
  • 分支合并
    git merge 要合并的分支名称
    1备注:要切换到接收合并的分支上操作合并命令
    2备注:合并如发生冲突,应先解决冲突再执行合并操作

7、远程仓库

远程库可以选择github、码云或其他托管平台,也可以自己搭建一个自己的远程仓库

  • 查看当前远程仓库链接(默认没有链接)
    git remote -v
  • 添加远程链接
    git remote add origin https://xxx/xxx.git
    备注:origin为远程仓库别名
  • 将本地仓库推送到远程仓库上
    git push -u origin master
    备注:一定现有本地仓库才能往远程仓库推送。【第一次要用-u 以后不需要】
    强制推送到远程仓库:git push -f
  • 从远程仓库克隆
    git clone https://xxx/xxx.git
    备注:其他人员往远程仓库推送,需要负责人将其他人员添加到项目工程里,获得权限
  • 取回远程仓库分支更新,再与本地指定分支合并
    a、修改比较简单,确定不会产生合并冲突
    git pull <远程仓库别名> <远程分支名>:<本地分支名>
    例如:git pull origin xxx:master
    备注:如果远程分支要与本地当前分支合并可以省略本地分支名 git pull origin xxx
    b、可能会出现合并冲突
    git fetch <远程仓库别名> <远程分支名>
    备注:拉去远程仓库分支到本地仓库
    git merge <远程分支名>
    备注:从远程仓库拉回的分支与本地分支合并,解决合并时冲突下

8、补丁

  • 获取某次提交的patch
    git format-patch commit_xxx -n
    备注:n指从xxx对应的commit开始算起n个提交
  • 某两次提交之间的所有patch
    git format-patch commit-old..commit-new
  • 创建补丁
    git diff commit_0 commit_1 > 0001-xxx.patch
  • 查看patch的情况
  • git apply --stat 0001-xxx.patch
  • 检查patch是否能正常打入
    git apply --check 0001-xxx.patch
  • 打入补丁
    git apply与git am的区别是:git apply并不会将commit message等打上去,打完patch后需要重新git add和git commit,而git am会直接将patch的所有信息打上去,而且不用重新git add和git commit,author也是patch的author而不是打patch的人
    git apply 0001-xxx.patch
    git am 0001-xxx.patch # 将名字为0001-xxx.patch的patch打上
    git am --signoff 0001-xxx.patch # 添加-s或者–signoff,还可以把自己的名字添加为signed off by信息,作用是注明打patch的人是谁,因为有时打patch的人并不是patch的作者
    git am --abort # 当git am失败时,用以将已经在am过程中打上的patch废弃掉
    git am --resolved #当git am失败,解决完冲突后,这条命令会接着打patch

9、标签

  • 在当前分支创建标签
    git tag <tagname>
    用-a指定标签名,-m指定说明文字; -s用私钥签名一个标签
    git tag -a v0.1 -m "version 0.1 released" commit
  • 查看标签信息
    git show <tagname>
  • 推送一个本地标签
    git push origin <tagname>
    推送全部未推送过的本地标签 git push origin --tags
  • 删除一个本地标签
    git tag -d <tagname>
    删除一个远程标签 git push origin :refs/tags/<tagname>

10、自己分支落后于master,将master合并到自己分支上

  • 切到master分支
    git checkout master
  • 就最新的master获取下来
    git pull
  • 切到自己分支上
    git checkout 自己分支名
  • 将master代码merge到自己新建的分支上
    git merge master
  • 将自己的分支git push到远程上
    git push origin 自己分支名

此时自己的分支就和master上的代码一样了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大 大猫

感谢支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值