Git learning

菜鸟教程学习记录

Git 配置

git config 命令专门用来配置或读取相应的工作环境变量。环境变量分为三种,分别存在三个地方:

  • 所有用户:/etc/gitconfig
  • 个人用户:~/.gitconfig
  • 项目环境:当前项目工作目录中的 .git/config 文件

git config --list可以查看已有的配置信息,vim ~/.gitconfig也行。

Git 工作流程

Git 工作区、暂存区和版本库

三个概念:工作区、暂存区/缓存区(英文名叫index或stage)、版本库。
master那一般也被叫做仓库。
在这里插入图片描述
慎重使用checkout 命令,会用版本库中的index或者master覆盖掉工作区的内容。

Git基本操作

  • git init
  • git clone [url]
  • git add
    • git add README.md hello.php 后面可以跟多个文件
  • git commit
    • git commit -m "第一次提交" -m 提交时候添加评论
    • git commit -a" -a 跳过git add 到缓存区,直接提交到仓库。可以 -am一起用
  • git status
    • `git status -s -s 参数,以获得简短的结果输出,如果没加该参数会详细输出内容
    • “AM” 状态的意思是,这个文件在我们将它添加到缓存之后又有改动。
    • " M" 状态的意思是,本地发生改动
    • "M " 状态的意思是,缓存区发生改动
  • git diff
    • git diff 尚未缓存的改动
    • git diff --cached 查看已缓存的改动
    • git diff HEAD 查看已缓存的与未缓存的所有改动
    • git diff --stat 显示摘要而非整个 diff
  • git reset HEAD 命令用于取消之前 git add 添加到缓存的内容
  • git mv
    • git mv 命令用于移动或重命名一个文件、目录、软连接。只是执行mv,只会更改本地的名字,缓存区中的名字不会改,
    • 执行git mv后,git status -s查看状态会出现"R ",表示文件被重命名
  • git rm
    • git rm <file> 只删除本地
    • git rm -f <file> 删除本地和缓存区
    • git rm --cached <file> 只删除缓存区

通常配置好git之后,进入一个工程下,从初始化开始一般的操作流程包括:

git init
git add *.py # 只想git *.py文件
git commit -m 'commit content'
git status -s # 查看当前状态

如果没有配置好git,先通过如下进行配置:

git config --global yourname "yourname"
git config --global youremail "youremail"
# 不行就试试
git config --global user.name "yourname"
git config --global user.email "youremail"

tips:

  1. Git 修改已提交的commit注释
    常用命令:git commit --amend

Git 分支管理

  • git branch
    • git branch 列出本地的分支
    • git branch newtest 手动创建一个分支
  • git checkout
    • git checkout newtest 切换分支
    • git checkout -b newtest 创建新分支并立即切换到该分支下

Git 查看提交历史

  • git log
    • git log --oneline --oneline 选项来查看历史记录的简洁的版本
    • git log --pretty=oneline 查看历史记录的简洁的版本
    • --reverse 逆向显示所有日志
    • git log --author=Linus --oneline -5 找指定用户的提交日志
    • 还可以指定日期等,更详细参考:
  • git blame <file> # 以列表形式查看指定文件的历史修改记录

Git 标签

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。

  • git tag
    • git tag查看所有标签
    • git tag -a v1.0 -a 选项意为"创建一个带注解的标签"(执行完,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。)。 git log --decorate可以看到标签
    • git tag -a v0.9 85fc7e7忘记了打标签也可以补上

Git 远程仓库(Github)

参考 菜鸟教程

  1. 先把密钥给加上
    1.1 本地执行:ssh-keygen -t rsa -C "youremail@example.com"
    1.2 github上ssh配置上加入

  2. 再创建或者clone一个远程git
    2.1 创建 需要两步:

    • github上图形界面创建
    • 用下面的命令把本地的仓库绑定到远程的仓库上
      git remote add origin xxx.git # 还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,可以使用如下命令添加
      git push origin master # 把本地的推上去
      

      可以指定一个简单的名字,以便将来引用,命令格式如下
      git remote add [shortname] [url]
      git push <远程主机名> <本地分支名>:<远程分支名>

    2.2 clone:

git checkout master 
git  merge dev  # 将dev分支的合并到master分支
git status -s
git push origin master # master分支的内容推送到origin上

其他实用操作

git commit之后想撤销"commit"

参考:

  1. https://blog.csdn.net/w958796636/article/details/53611133
  2. https://blog.csdn.net/tsq292978891/article/details/78965693

分为三种mixedsofthard:

  1. mixedgit reset --mixed HEAD^,不删除工作空间改动代码,撤销commit,并且撤销git add . 操作。这个为默认参数,git reset --mixed HEAD^git reset HEAD^效果是一样的。

    HEAD^的意思是上一个版本,也可以写成HEAD~1
    如果你进行了2次commit,想都撤回,可以使用HEAD~2

  2. softgit reset --soft HEAD^,不删除工作空间改动代码,撤销commit,不撤销git add .

  3. hardgit reset --hard HEAD^删除工作空间改动代码,撤销commit,撤销git add .。注意完成这个操作后,就恢复到了上一次的commit状态。

通常使用时,用git reflog找到要回退的版本的commit id,接着回退版本:git reset --hard a7e1d279

远程分支回滚相关操作【todo】

git从别的分支拷贝到本分支

git checkout cur_branch
git checkout master -- utils # 拷贝master分支的utils文件到本分支

git 分支文件比较

git diff branch1 branch2 --stat   # 显示出所有有差异的文件列表
git diff branch1 branch2 文件名(带路径)   # 显示指定文件的详细差异
git diff branch1 branch2                   # 显示出所有有差异的文件的详细差异

删除分支

git branch -d <BranchName>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值