github使用详解(机器学习初识)

github详解

git提交状态

示例


在这里插入图片描述

本地搭建

  1. 本地创建并操作

git init:初始化本地仓库
git add .:添加文件
git commit -m “说明”:提交文件

  1. 状态查看

git diff:查看文件差异
git status:查看本地仓库现阶段状态
git log :查看本分支的提交历史

  1. 提交参数说明

git add -A :包含所有阶段(新建、修改和删除)
git add . :包括新建、修改 但不包含删除
git add -u :包括修改、删除 但不包含新建

  1. 差异参数说明

git diff :比较工作区域暂存区
git diff. --cached:比较暂存区域本地版本库
git diff HEAD:比较工作区域本地版本库
git diff commit-id:比较工作区与commit-id的差异
git diff --cached commit -id:比较暂存区与指定
commit-id的差异
git diff commit -id commit -id:比较两个commit-id的差异
上面的命令都可以使用 “>文件名”的形式打补丁

  1. 版本回退

git reset --hard commit_id:回退到某个版本
git reset --hard head^:回退到上个版本
git reset --hard head~2/font>:回退了两次提交

远程搭建

  1. git clone 初步(没有本地仓库)重点

远程操作的第一步,通常是从远程主机克隆一个版本库,这时叫用到git clone命令

$ git clone <版本库的网址>

该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果需要指定不同的目录名则可以使用下面命令

$ git clone <版本库的网址><本地目录名>

相当于git remote add <shortname> <url> + git pull <shortname>

git clone 默认会把远程仓库整个给clone下来,但只会在本地创建一个master分支。如果远程还有其他的分支,此时需要用到以下操作:

查看所有分支

$ git branch -a 

取回分支

$ git checkout -t origin/dev (建立与远程相同的分支)
或
$ git checkout -b dev origin/dev(他可以为分支重命名)
  1. git clone 深入(扩展)

可以使用git clone直接下载某分支如下:

$ git clone -b 分支名  --single-branch 仓库URL 

如果没有–single-branch 则此命令与 git clone 仓库URL 完全相同

可以结合 --depth num 来获取最近num次的提交

$ git clone --depth 10 仓库URL
$ git clone -b 分支名 --single-branch --depth 10 仓库URL 
  1. git remote(有本地仓库)

查看远程仓库信息

#查看关联的远程仓库的名称
git remote

#查看关联的远程仓库的详细信息
git remote -v

添加远程仓库关联

$ git remote add origin URL

删除远程仓库的关联

$ git remote remove <name>

如果需要修改远程仓库的名称推荐使用默认名称origin,如果需要修改可以修改项目目录下的.git目录中的config配置文件

基本操作

  1. checkout 详解

起作用主要分为两个
1)切换或新建分支
2)将暂存区或者指定commit内容复制到工作区

切换或者新建分支

$ git branch newBar
$ git checkout newBar

将暂存区内容复制到工作区

$ git checkout 文件名

用指定commit提交的内容覆盖工作区

#将某个版本的内容覆盖工作区内容
$ git checkout commit_id
#将上个版本的内容覆盖工作区内容
git checkout head ^  文件名

将其他分支提交的内容覆盖本地工作区

$ git checkout 分支名 文件名
  1. reset详解

对版本区的操作如下:

错误commit后,仅撤销commit;缓存区、工作区内容不变

git reset --soft commit_id

错误commit后,仅撤销commit 和 add ;工作区内容不变

#其与不带参数效果相同
git reset --mixed commit_id

错误commit后,仅撤销commit 、add和工作区都变化

git reset --hard commit_id

git + 文件名 不会对版本区进行更改只会对索引区进行更改(不使用参数)

#将索引区回退到上个版本
$ git reset 文件名 
#将索引区回退到指定版本
$ git reset commit_id 文件名
  1. 修该最后提交的信息

$ git commit --amend -m "more changes -now correct"
  1. 删除文件

删除还没添加到索引的文件

 rm 文件即可

删除添加到索引但还没有提交的文件

#将文件从索引中恢复
git reset 文件名 
#将文件删除
rm 文件名

删除已提交的文件

#删除文件
rm 文件名
#提交删除操作
git add  -A . 
git commit -m "删除文件"
  1. 恢复文件

恢复尚未add的文件

git clean -f

恢复一个已经add 但是没有commit的文件

#恢复暂存区的状态
$ git reset --hard HEAD
#或者可以采用以下方法
#1)暂存区版本回滚
$ git reset HEAD file1
#2)检出版本
$ git check out file1

分支操作

  • git fetch
  1. 将远程主机的更新,全部取回本地。默认情况下会取回所有分支的更新(所有本地分支默认与远程主机的同名分支建立追踪关系

     git fetch <远程主机名>
    
  2. 取回分支

     git fetch <远程主机><分支名>
     #示例:
     git fetch origin master
    
  3. 所有取回的更新,在本地主机上要用"远程主机名/分支名形式读取"

     #示例:
     git checkout -b newBranch origin/master
     git merge origin/master
     git rebase origin/master
    
  • git pull
  1. 格式

    git pull  <远程主机> <远程分支>:<本地分支>
     #将origin库的master分支合并到本地的my_test分支上
     git pull origin master:my_test
    

    相当于 git fetch 远程主机 远程分支 + git merge

  2. 省略参数

     #远程分支与当前分支合并,则可以将后面的部分省略
     git pull origin next
     #本地的当前分支自动与对应的origin主机"追踪分支"进行合并
     git pull origin
     #当前分支自动与唯一一个追踪分支合并
     git pull 
    
  3. 手动构建追踪关系

     git branch --set-upstream master origin/next
    
  • git push
  1. 格式

     git push <远程主机名> <本地分支名>:<远程分支名>
    
  2. 省略形式

     #将本地分支推送与之存在追送关系的远程分支,如果该分支不存在,则会被创建。
     git push origin master
     
     #如果省略本地分支则标识删除指定的远程分支,因为其等同于推送了一个空的本地分支到远程
     git push origin :master
    
     #如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略
     git push origin
    
     #如果当前分支只有一个追踪分支,则主机名可以省略
     git push
    
  • git merge

      	#将develop分支合并到feature分支
      	git check feature
      	git merge develop
      	#将develop 分支合并到feature分支
      	git merge develop feature
    
  • git rebase

      	#将develop分支合并到feature分支
      	git check feature
      	git rebase develop
      	#将develop 分支合并到feature分支
      	git rebase develop feature
    

    #注 使用merge与rebase的结果基本相同,但尽量不使用rebase

标签操作

  • 本地打标签(不会推送至远程)

      $ git tag v1.0 在本地打上标签,并不会自动推送至远程
    
  • 创建带说明的标签

      $ git tag -a v0.1 -m "version 0.1 released" 1094adb
    
  • 删除标签

      $git tag -d v0.1
    
  • 推送标签到远程

      $ git push origin v1.0
    
  • 一次性推送所有未推送的标签

      $ git push origin --tags
    

7、删除远程标签

	$ git tag -d v0.9
	$ git push origin :refs/tags/v0.9

猜你喜欢

转载自blog.csdn.net/weixin_42150936/article/details/86592318
今日推荐