GitHub简述+git配置+git命令操作

学习git的网站推荐

Pro Git 中文版(第二版)

概述:代码交流平台。【版本控制和协作的代码托管平台】

说明:国外github,国内gitee,某些公司内部gitlab(自己搭建服务器独立使用,私网、某些银行为gitlab)

项目放在GitHub上步骤:【理解】

1.创建仓库

页面右上角 “+”下拉选择 New repository(新建仓库)
输入项目名称: ep:hello_world
输入项目描述:第一个练习仓库
选择仓库可见性:一般Public
选择Initialize this repository with a README(使用自述文件初始化此仓库)———介绍项目内容
确认Create repository(创建仓库)

2.更改内容并提交

每次提交相当于文件某个时间点的快照(可理解为版本记录)
步骤:在仓库的文件列表中 需改README.md文件
Edit file/修改——》预览/Preview changes——》Commit changes/提交信息【修改的文件描述】——》提交新分支[主分支少操作]——》Propose file change/提议文件更改

3.关注作者、项目   【新更提醒】

某人个人资料头像下 Follow/关注作者
仓库顶部Watch/关注项目或仓库

需要了解的概念

1.仓库: 

    本地:自 己电脑上文件夹
    远程:互联网服务器内的文件夹(一般讲master主仓库、你本地对应的远程仓库2个)
2.【分布式】版本控制系统 本地对比SVN:前者无中央服务器,每台电脑为一个完整版本库
    配备两个仓库:自己电脑上本地仓库、远程服务器上一个远程仓库
    提交文件时,先到本地仓库——》再到网络上的远程仓库  {本地到远程}
3.Git
    分布式版本控制系统
4.GitHub常用词
    watch:持续收到项目动态
    fork:复制项目到自己仓库
    star:点赞数,越多该项目越火
    clone:项目下载到本地
    follow:关注作者,收到他们的动态

https://blog.csdn.net/as480133937/article/details/105611577 (转自

Z小旋 参考文档带图

GitHub搜索功能

location:china 匹配用户填写地址在China
language:java    匹配开发语言为java的开发者
followers:>=100 匹配过100名关注者的开发者
jack in:fullname    匹配用户实名为jack开发者
forks:》=20        匹配分支数量多于20项目
ep:举例查询boot项目
    in:name boot 名称含boot
    in:description XX 描述含XX
    in:readme XX 介绍文档含XX
    boot stars:>5000 点赞多于5000的boot项目
    boot stars:80..100 forks:100..200 boot项目点赞81到100,下载或复制数100到200
    size:>=数字  (100代表100kb,单位为kb)
    pushed:>2020-01-02 boot 最后上传日期大于  boot项目
    created:>YYYY-MM-DD boot 创建日期大于  boot项目
    user:小米 language:Python 小米老师的python开源项目
    awesome python 搜索优秀的项目包括框架、教程等

license 项目授权协议

不可商用的,下载且使用,会有麻烦上门
几个友好协议:BSD、MPL(Mozilla)、Apache、MIT
ep:咱们要找协议是最为宽松的 Apache License 2 的代码,
    license:apache-2.0 Spring Boot


git配置(安装后的操作)

用户信息

【自我认识:用户名和邮箱作为一个标识,git知道谁的提交】

当安装完 Git ,必须设置你的用户名称与邮件地址。【因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改】:

1. 配置

git config --global user.name "xxxxxx":设置用户名。

git config --global user.email "xxxxxx":设置邮箱。
注意:local 当前仓库有效,global 该账户对所有仓库有效,system 对系统所有用户有效

2.查看:

git config user.name        查看用户名。
git config user.email        查看邮箱
git config --list --global    查看全部(用户+邮箱)

#清除配置 git config --unset --global [user.name](http://user.name)  【取消配置账户、或代理 认识即可

3.生成SSH key

   项目处/文件夹/仓库  右键 git bush here——》命令窗口输入  ssh-keygen -t rsa -C "[email protected]"   得到密匙
    查看: cat ~/.ssh/id_rsa.pub  或者默认C盘 【/c/Users/Administrator/.ssh】
    密匙在id_rsa.pub文本中,复制密匙

4.登录github或gitee配置SSH key

    setting——》SSH and GPG keys ——》new SSH key/新增密匙——》粘贴密匙

5.测试通信(可以不测试)

查看主机是否与github网站之间的ssh通信是否连接成功

ssh -T [email protected]

获取git仓库

两种方法:1.是在现有项目或目录下导入所有文件到 Git远程中; 2.是从git里的一个服务器克隆一个xio的 Git 仓库

简单理解:1.本地项目传到远程git中  2.远程git里项目克隆(拉取)到本地文件夹中

针对第一种本地项目

    1.找到文件夹 ep: D:/www/testgit目录下执行  git init 【testgit录变为版本库
    2.添加 testgit目录下创建 readme.txt文件
    git add readme.txt         放置暂存区  你准备提新增或修改的文件/代码了
    git commit -m '描述'       放置本地版本库/本地仓库 告诉大家你改的文件说明
    git status                         查看哪些尚未提交,本地分支文件信息 【文件处于什么状态

    git checkout -- readme.txt    或者 git restore readme.txt 丢弃修改的内容(在git add前操作)放弃工作区修改 注意:修改不是新增
    删除:rm readme.txt 或到目录下直接删除
    重复上述暂存 、提交操作即可

文件状态:git status 查看  【下为信息贴出区分】

干净的/原始状态

$ git status
On branch master
nothing to commit, working directory clean

未跟踪/新建文件        

Untracked files:
 readme.txt
nothing added to commit but untracked files present

跟踪/  git add XX操作

Changes to be committed:
  (use "git reset HEAD ..." to unstage)
    new file:   README   # 新增文件
    modified:   CONTRIBUTING.md  #原来有修改的文件

 针对第二种git上远程项目

$ git clone https://github.com/xxx/xxx mytest
在D盘执行上述命令
# mytest 拉取远程项目到d://mytest// 
# 不加mytest 拉取到D:盘

 git命令操作

git clone http://XXXX    克隆远程仓库代码到本地仓库/文件夹
git pull  更新分支代码
git add .                提交全部到暂存区 注意点号
git commit -m'备注信息'    创建提交 暂存区内容到本地仓库

        取消/撤回 commit:git reset --soft HEAD^ 或git reset --soft HEAD~1

        进行了2次commit,想都撤回,可以使用HEAD~2

        只是想更改注释 :git commit --amend 【进入默认vim编辑器,修改注释完毕后保存就好了】
git push                提交修改的代码到远程仓库
git --version            查询git版本号
git checkout/switch test        切换到test分支(多个分支时,来回切换)
1.1创建并切换到dev分支   ep:git checkout -b 本地名 origin/远程名  ##本地与远程分支有映射关系

1.2  git fetch origin 远程名:本地名    然后 git checkout 本地名 【写法等同于1.1】

        git fetch -p  获取被删减后的远程分支,更新远程最新状态+存储信息

##本地与远程无映射关系


git branch --set-upstream-to=origin/dev dev,建立本地分支和远程分支的关联
#新版git 区分checkout 的创建和撤销  Git switch -c dev创建并切换到dev分支
git branch -a            查看本地和远程分支 Git branch 查看当前分支
git branch dev            创建dev分支
git merge test            test分支合并到当前分支 【 合并后test分支消息看不到在当前分支】
#注意:
如果因冲突导致自动合并失败,此时 status 为mergeing 状态。
需要手动修改后重新提交(commit)

git push origin dev本地:dev远程     推送当前分支到远程分支
git push origin --delete 分支名     删除远程分支
git branch -d dev        删除本地dev分支   git branch -D dev  强制删除

git remote update origin -p 更新远程分支,当一段时间有新分支或删除时,更新最新状态的


git init                  创建或初始化一个现有仓库 就是将所在文件夹变为可管理的仓库
git log [--oneline]  查看当前HEAD及之前版本信息 【git log --graph 图形化显示】
git reflog              查看历史操作记录,重返未来查看最新的提交版本
git status              查看本地哪些文件未提交
git diff  文件名      查看更改了哪些内容
git stash               把当前工作保存、隐藏
git stash list          查看所有保存的文件列表
git stash apply      恢复被隐藏文件,但是内容不删除  ep:git stash apply {stash id}
git stash drop        删除暂存区记录标识
Git stash pop        恢复并删除工作现场
git mv 原文件名     新文件名 修改文件名字
git rm -f 文件名      删除文件
git cherry-pick        分支提交版本号【另一分支某个提交合并到当前分支】
git remote -v           查看远程仓库信息

tag标签 就是给版本起名字(用的没那么多,暂时可不看)

查看所有标签    git tag
把当前分支的最新提交打上标签,标签名字自己起    git tag 标签名
把某个版本号的提交打上标签    git tag 标签名 对应commit版本号
可以用这种方式给标签增加说明,-a对应标签名,-m对应描述信息
git tag -a v0.1 -m “描述信息” 版本号

查看标签具体信息    git show 标签名
删除标签    git tag -d 标签名
###推送标签
推送某个标签到远程    git push origin 标签名

推送所有标签到远程    git push origin --tags

删除远程标签:
先删除本地标签    git tag -d 标签名
然后从远程删除    git push origin: refs/tags/标签名

 远程分支版本回退、撤销

1.本地回退/版本回退


git reflog              查看所有历史版本信息   比git log 查询范围广
git reset --hard XXX     少用因为回退后,回退版本后的修改的代码没了/记录也没有。

ep:分支A上版本号a123,你对read.txt 文件修改/删除操作,然后提交版本号为a124。

你回退git reset --hard a123  结果你没对read.txt做操作,等于你之前做的修改丢失,需要重新写代码(改的内容多时,你就完蛋了!记不住啊)

*******回滚版本/版本回退

    git reset --hard HEAD^ 回滚到上个版本
    git reset --hard HEAD^~2 回滚到前两个版本
    git reset --hard XXX    版本号或版本前几位【自动匹配版本号】

理解hard、soft、mixed区别

本地工作目录内容保留 mixed 默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息  【修改、新增东西不在暂存区】

本地工作目录内容以及暂存区内容保留  soft  还要提交,直接commit即可 【修改、新增的东西已在暂存区中】

本地工作目录内容以及暂存区内容全部回退至某一个版本 hard 【回退的版本之后的版本/修改的代码丢失,一般保持分支干净度使用】 

2.撤销版本,保留该目标版本后面的版本(重做)

ep:第一次提交后版本号a123,新增了文件text1.txt;第二次提交后版本号b123,新增了文件text2.txt,此时不想要text1.txt但是要保留text2.txt.

git revert -n a123  (若有冲突,手动修改冲突文件)

git commit -m "revert add text1.txt" (提交信息表明是)

git push  [此时只有text2.txt文件]
3.强制推送到远程  【尽量少用,确保不会影响他人代码】
git push -f origin 远程分支名

git resetgit revert都是属于重新恢复工作区以及远程提交的方式,但这两种操作不同:

  • git reset是将之前的提交记录全部抹去,将 HEAD 指向自己重置的提交记录,对应的提交记录都不复存在;

  • git revert 操作是将选择的某一次提交记录 重做,若之后又有提交,提交记录还存在,只是将指定提交的代码给清除掉

4. Git restore 文件名

git restore [file]  不在暂存区的文件撤销更改【更改包含增、删、改】
 add暂存区时    git restore --staged 文件名 或 Git reset HEAD文件名
 
    工作区:电脑中目录
    暂存区:.git目录下的index文件 俗称——索引
    版本库:.git目录,git的版本库
####关联  先有本地项目时,关联到远程仓库
    git remote add origin 自己git项目地址

你可能感兴趣的:(git)