Lesson30_Git

GitHub

一、下载git

下载地址:git下载地址

二、安装步骤

  1. 双击下载以后的安装程序
    • 在这里插入图片描述
  2. 阅读安装协议(直接点击next进入下一步)
    • Lesson30_Git_第1张图片
  3. 选择安装位置,选择好以后或者默认,然后点击next
    • Lesson30_Git_第2张图片
  4. 选择要安装的组件
    • Lesson30_Git_第3张图片

    • Additional icons 附加图标

      On the Desktop 在桌面上(在桌面安装快捷图标)

    • Windows Explorer integration Windows资源管理器集成鼠标右键菜单(默认选中)

      Git Bash Here

      Git GUI Here
      Lesson30_Git_第4张图片

    • Git LFS (Large File Support)(默认选中)
      大文件支持

    • Associate .git* configuration files with the default text editor(默认选中)
      将 .git 配置文件与默认文本编辑器相关联

    • Associate .sh files to be run with Bash(默认选中)
      将.sh文件关联到Bash运行

    • Use a TrueType font in all console windows(可选中)
      在所有控制台窗口中使用TrueType字体

    • Check daily for Git for Windows updates(可选中)
      每天检查Git是否有Windows更新

  5. 选择在开始菜单创建目录(默认即可)
    img
  6. 选择默认的编辑器
    • img
    • 18年以后GitHub被微软收购,新增功能
    • img
    • win默认选中notepad++即可,也是推荐的
  7. 设置默认分支名称
    Lesson30_Git_第5张图片
  8. 设置环境,选择使用什么样儿的命令行工具,一般情况我们使用默认配置**(在path中自动配置环境变量)**
    • Git自带:使用Git自带的Git Bash命令行工具
    • 系统自带CMD:使用windows系统的命令行工具
    • 二者都有:上面二者同时配置,但是注意,这样会将windows中的find.exe和sort.exe工具覆盖,如果不懂这些尽量不要选择
    • Lesson30_Git_第6张图片
  9. 选择Https后端传输(默认选中SSL即可)
    • Lesson30_Git_第7张图片
    • Use the OpenSSL library
      使用 OpenSSL 库
      Server certificates will be validated using the ca-bundle.crt file.
      服务器证书将使用ca-bundle.crt文件进行验证。
      Use the native Windows Secure Channel library
      使用本地 Windows 安全通道库
      Server certificates will be validated using Windows Certificate Stores.This option also allows you to use your company’s internal Root CA certificates distributed e.g. via Active Directory Domain Services.
      服务器证书将使用Windows证书存储验证。此选项还允许您使用公司的内部根CA证书,例如, 通过Active Directory Domain Services
  10. 选择换行格式
  • 让Git能够自动转换文件中的换行符:签出到本地时转换为Windows下的换行符,提交到服务器时转换为Unix下的换行符
  • 让Git在签出到本地时不做转换,保留原始文件的换行符;提交到服务器时转换为Unix下的换行符
  • 让Git在签出到本地时和提交到服务器时都不做转换
  • Lesson30_Git_第8张图片
  1. 配置终端模拟器以与 Git Bash 一起使用

    • Lesson30_Git_第9张图片
    • 使用MinTTY终端
      • Git Bash将使用MinTTY作为终端模拟器,该模拟器具有可调整大小的窗口,非矩形选区和Unicode字体。 Windows控制台程序(如交互式Python)必须通过’winpty’启动才能在MinTTY中运行。
    • 使用Windows默认的命令
      • Git将使用Windows的默认控制台窗口(“cmd.exe”),该窗口可以与Win32控制台程序(如交互式Python或node.js)一起使用,但默认的回滚非常有限,需要配置为使用unicode 字体以正确显示非ASCII字符,并且在Windows 10之前,其窗口不能自由调整大小,并且只允许矩形文本选择
  2. 选择git pull的行为
    Lesson30_Git_第10张图片

  3. 配置凭证管理
    Lesson30_Git_第11张图片

  4. 性能配置,是否启用文件系统缓存

    • Lesson30_Git_第12张图片
    • Enable file system caching
      • 启用文件系统缓存
      • 文件系统数据将被批量读取并缓存在内存中用于某些操作(“core.fscache”设置为“true”)。 这提供了显着的性能提升
    • Enable Git Credential Manager
      • 启用Git凭证管理器
      • Windows的Git凭证管理器为Windows提供安全的Git凭证存储,最显着的是对Visual Studio Team Services和GitHub的多因素身份验证支持。 (需要.NET Framework v4.5.1或更高版本)。
    • Enable symbolic links
      • 启用符号链接
      • 启用符号链接(需要SeCreateSymbolicLink权限)。请注意,现有存储库不受此设置的影响
  5. 配置实验选项
    Lesson30_Git_第13张图片

  6. 额外配置,一律默认,点击Install

  7. 等待安装,完成以后点击Finish
    img

  8. 安装完成以后可去环境变量查看环境配置,path中是否又git的配置,正常情况都已经是自动配置好了的,然后打开命令窗口输入git命令或者git --version查看是否安装成功

三、基本信息设置

  1. 登录到GitHub官网注册用户
  2. 打开win命令窗口或者git的命令窗口,设置用户名和邮箱
    • 输入命令:git config --global user.name “username”
    • 输入命令:git config --global user.email “useremail”
  3. 查看设置的用户名跟邮箱
    • 输入命令:git config --global --list
  4. global可以为local或者system,都是设置用户名跟邮箱,只是作用范围不:
    • local表示当前仓库的设置,在当前参考.git文件夹下的config文件中的设置,只对当前仓库有效
    • global表示当前用户下的的所以仓库的设置,在当前系统用户下有.config文件夹的设置,对当前用户下的所以仓库有效
    • system表示所以用户下的所以仓库有是有效的
      一般习惯设置global,如有特殊仓库需要设置则重新设置local即可,其优先级local大于global大于system
  5. 初始化一个代码仓库(ex-f:git-container/studyContainer)
    • 用cd 命令找到目标文件
      输入:cd f:git-container/studyContainer
    • git init 命令将文件初始化为仓库
      输入:git init
      若提示信息为:***Initialized empty Git repository in F:/git-container/studyContainer/.git/***表示创建成功
      此时可以看到它在仓库下创建了一个.git文件,但是这个文件默认是隐藏状态的,存储一些基本的配置信息
    • 此时路径已切换到仓库路径,且提示用户为master用户,即默认的主用户
    • 直接创建文件夹并设置为仓库
      git init newdir
      ex-git init test(自动创建test文件夹并设置为仓库)
    • 克隆GitHub上面的仓库命令用clone
      git clone [url]
      ex-git clone https://github.com/username/containername.git

四、常用命令

Linux命令及git常用命令
  • mkdir:新建文件夹
  • cd dir:进入文件夹
  • cd -:进入上次所在的目录(横线-)
  • cd :回到后目录(波浪线
  • mkdir mydir && cd mydir:创建并进入mydir文件夹
  • rmdir mydir:删除dir文件夹
  • rm -rf mydir:强制递归删除mydir文件夹
  • touch newFile:新建文件
  • git rm file:删除文件
  • vi/vim newFile:新建并编辑文件
  • echo ‘text’ > file:新建file文件并将text写入(echo表示回显,就是将内容显示到终端,“>”表示重定向,指将内容重定向到文件中)
  • echo “text” > file:用text替换掉file文件中的内容
  • cat file:显示file内容
  • tac file:倒叙显示文件内容
  • which “命令”:命令来自什么地方
  • Ctrl+A/Home:跳到命令头部
  • Ctrl+E/End:跳到命令尾部
  • vi file–>i(insert)–>esc–>:wq:编辑文件
  • vi file–>esc–>Shift+A:首行末且进入编辑模式
  • vi编辑器在命令模式下输入set nu显示行号
  • dd删除当前光标所在的行
  • git status:查看当前仓库状态
  • git add file:将file文件提交到暂存区
  • git add -u:将工作区中修改过的文件全部添加到暂存区中
  • git add .:将工作区中所有的文件都加入到暂存区中,也可以用空格将两个文件隔开
  • git rm --cached file:回退到工作区,即将暂存区的file文件删除(首次使用add以后,实际是删除掉暂存区的文件)
  • git reset HEAD file/git restore --staged file:回退到工作区(修改暂存区),即将暂存区的file文件删除(非首次使用add,即对工作区中的文件修改以后,实际是用仓库中的文件替换掉暂存区的文件)
  • git checkout – file/git restore file:回退到工作区文件修改以前的版本(修改工作区),放弃对工作区文件的修改,实际是用暂存区的文件覆盖掉工作区中的文件
  • git rm file:删除文件,同时删除工作区中的文件并加入到暂存区,即将工作区和暂存区中的文件都删除
  • rm file:删除文件,只删除工作区中的文件,暂存区中的文件并没有删除
  • git mv file newFile:修改文件名,同样的是修改工作区中的文件并添加到暂存区
  • mv file newFile:修改文件,只修改工作区中的文件
log(日志信息)
  • git log:查看当前分支的版本日志信息
    • 按空格到最后一条记录
    • 摁Q退出
    • 摁Ctrl+F向下
    • 摁Ctrl+B向上
  • git log --all:查看所有分支的版本日志信息
  • git log --gtaph:图形化查询提交历史
  • git log --all --graph:以历史关系的格式显示各个分支的版本日志信息
  • git log --oneline:简洁显示日志信息
  • git log --abbreviation-commit:简写提交id,可组合使用
  • git log --pretty=oneline:同上
  • git log --pretty=format:“%h-%an,%ar-%s”
  • git log -nnum (–oneline):显示最近num次的日志信息
  • git help (–web)log:(浏览器)查看log的所以命令与作业
  • git reflog:查看操作日志,包括回退等等
  • gitk:以图形化的形式查看历史
commit(提交)
  • git commit:提交暂存区(stage/index)中的文件,跳到信息页输入提交信息即可
  • git commit -m’commit message’:提交暂存区中的文件并同时填写提交信息
  • git commit -amend -m’commit message’:修改最后一次的提交信息为新的提交信息
  • git commit -am ‘commit message’:直接从工作区(working)将文件添加到暂存区并且提交
.gitignore
  • .gitignore:添加不需要监管的文件,在.git文件当前目录创建.gitignore文件,并将需要忽略的文件名添加到该文件中。然后将该文件提交即可,该文件内容支持正则表达式与通配符等。一般该文件放置在项目根目录下
  • .gitignore文件中的几种配置:
    • *.txt:所有.txt结尾的文件
    • !Demo.txt:Demo.txt文件不需要被忽略
    • /TODO:忽略到根目录下的TODO文件,但不包括subdir/TODO
    • build/:忽略build下的所以文件
    • doc/*.txt:忽略掉如doc/notes.txt但不会忽略doc/service/notes.txt
    • doc/* /*.txt:忽略doc以及子目录下的所以的.txt文件
    • doc/* * /*.txt:忽略doc下所以层的所以的.txt文件
branch(分支)
  • 分支是git中及其重要的一个内容,一般初始化一个仓库以后默认且唯一的一个分支就是master分支,往往在开发中master分支只复制代码的最终发布,所有master分支上的代码是可以随时发布的代码,那么在需要开发代码或者修改代码的时候就要创建不同的分支,一般dev分支是用来开发的,即development分支,而BUG修改分支也是bug分支
  • git branch:显示所有分支,并标记到当前分支
  • git branch -v:查看当前分支最后一次提交信息
  • git branch -av:查看有多少分支
  • git branch -a:查看本地所有分支,包括本地与远程对应的分支
  • git branch newBranch:创建一个新的分支,是基于当前分支创建的分支,这个分支创建之后HEAD会跟当前分支指向同一个提交
  • git checkout -b name commit_ID:基于一次commit创建name的分支,这个分支创建之后HEAD会指导该次提交
  • git checkout -m branchName branchNewName:将branchName分支改名为branchNewName
  • git checkout name:选择到name分支下
  • git checkout commit_ID:指针直接到该次提交上
  • git checkout -b newBranch:创建并切换到newBranch分支下
  • git branch -d branchName:删除与主分支相同提交的分支
  • git branch -D branchName:强制删除分支
  • git merge branchName:将branchName分支合并到当前分支上
  • 当用到git merge合并分支出现冲突是用到手动合并,此时重新修改冲突文件,调用git add file命令,告诉git已经处理好分支,然后调用git commit命令,不用写提交信息,将会合并成功,然后可以去被合并分支在进行合并,此时自动合并
  • git mergt --no-ff branchName:禁用ff即fast-forward快进,即分支合并后会保留合并分支的提交,不常用
  • git开发中常用的开发模型一般有gitflow,但是该流程模型过于繁琐,对开发人员要求较高,且对于运维人员不是很友好,所以经常会用到基于git分支的开发模型
  • 基于git分支的开发模型
    • develop分支:该分支主要供开发人员提交新的开发代码,所以频繁变化
    • test分支:该分支主要供测试人员或者产品经理测试项目使用,变化不是特别频繁
    • master分支:该分支主要用于产品的发布,变化不频繁,基本就是一次发布到下一次发布
    • bugfix/hotfix分支:该分支主要用于在生产系统中出现紧急bug,紧急修复使用
临时保存
  • 临时保存工作现场,比如当在某一分支上进行代码的开发或者修改,但是处于未完成状态是,此时是不可以提交的,那么这时候如果需要到另外一个分支去开发是系统不会支持分支切换,此时就需要临时保存工作现场
  • git stash:临时保存分支的修改、即保存现场
  • git stash save “message”:临时保存分支修改,save为信息,结果同上
  • git stash list:显示临时保存列表信息
  • git stash pop:回复最近一次保存现场并删除保存信息
  • git stash apply:恢复最后一次保存现场,但是保留保存信息
  • git stash apply stash@{n}:恢复到特定的保存现场
  • git stash drop stash@{n}:手动删除掉特定的保存
Back(回退)
  • git reset --hard HEAD^:回退一个版本,后面几个符号就回退几个版本
  • git reset --hard HEAD~n:回退n个版本,波浪线后面跟的是几就是几个版本
  • git reset --hard commit_id:后面直接跟commit的一个id号,直接到对应提交id的版本
标签,标记
  • 标签为开发到某个阶段或者某个里程牌或者发布的版本时创建,它不与某一分支挂钩,是属于整个版本控制系统的,同时当需要将代码推送到远程仓库是需要将标签手动推送到远程仓库,因为标签不会随着代码自动推送到远程仓库,需要手动推送
  • git tag v1.0.0:创建一个轻量级标签(只有一个标签名)
  • git tag -a v1.0.1 -m’release version’:创建一个重量级标签(还有标签相关信息)
  • git tag:查看版本库中的标签
  • git tag -l ‘message’:模糊查找或者精确查找标签,message可使用通配符,如v*,则查询所有v开头的标签
  • git tag -d tag_name:删除一个标签
diff(差异)
  • git blame file:显示该文件最后的修改者以及修改内容
  • diff file1 file2:系统命令,比较两个文件之间的差异
  • diff -u file1 file2:以某种格式显示比较的结果,效果同上
  • git diff:比较工作区与暂存区文件的差异
  • git diff HEAD/commit_Id:比较工作区与最新一次提交或commit_id提交文件的差异
  • git diff --cached [commit_id]:比较暂存区与最新一次的提交或commit_id提交文件的差异commit_id不写表示最新一次提交
push(远程仓库推送)
  • git remote add origin https://github.github-hubgit.git:在推送前配置,之后就用origin代替掉远程仓库地址
  • git push -u origin master:将本地仓库推送到远程仓库,-u是建立一个关联,也就是将本地的master与远程的master建立关联,下次提交则直接用首次提交的分支
  • git remote show:显示所有与之关联的远程仓库
  • git remote show origin:列出与之关联的远程仓库origin的详细信息以及本地与该远程仓库的关系
  • git config --globle push.default simple/matching:修改默认的提交分支关联,simple为git2.0之后的方式,默认提交的分支为拉取时的分支,而matching默认为与远程名字一样的分支
  • 一般对于远程仓库或者是公司远程仓库多数使用ssh方式,或者是https,很少使用http,但是ssh需要用到公钥与私钥的匹配才可以使用,所以要在本机生成公钥与私钥,以下是首次使用ssh方式的步骤:
    1. 在新建远程仓库时使用ssh方式,复制其地址信息
    2. git remote add origin URL(在本地添加远程仓库)
    3. git remote show origin (查询远程仓库详细信息)
    4. yes(之后会在用户的.ssh文件中生成相应的信息)
    5. ssh-keygen (在本地生成一对公钥与私钥,可以用which ssh-keygen查看命令,如果系统无法使用该命令,可以百度下载putty,该程序可以使用完整的一套ssh命令)
    6. 之后提示生成该命令的文件路径,一般是在用户目录下的.ssh文件中,直接回车确认,之后是输入密码,可以直接回车,然后是确认密码,继续回车
    7. 之后秘钥生成,可以去相应的文件夹下查看,id_rsa为私钥文件,id_rsa.pub为公钥文件
    8. 之后复制公钥到远程仓库,setting修改中找到deploy key,点击之后将复制的公钥添加,同时勾选可推送权限即可
    9. 用git remote show origin查看
    10. 用git push -u origin master提交即可
  • git push --set-upstream origin branchName:将本地的branchName分支推送到远程仓库,并且在远程仓库创建一个branchName分支与之对应,之后用git push则正常推送,也可以使用git push -u origin newBranch,效果一样
  • 执行上一步操作以后到其他用户用pull拉取之后则提示本地有两个对应远程的分支,但是本地分支只有连个,这时候就要基于本地的远程分支创建一个本地分支,如git checkout -b newBranch origin/newBranch,这个命令就是基于本地的远程分支origin/newBranch创建本地分支newBranch分支并且切换到该分支,也可以使用git checkout --track origin/newBranch,效果相同
  • 错误:
    • git pull --rebase origin master:出现failed to push some refs to git错误,原因是github中的README.md文件不在本地代码目录中
    • 控制面板->账号管理->凭据管理->Windows凭据,删除重新配置,原因是配置的远程仓库的用户名或密码错误。
pull(拉取==fetch+merge)
  • git clone url:在当前目录克隆该地址下的远程仓库,且本地项目名是以远程仓库名来命名
  • git clone url fileName:效果同上,但是本地项目名是以fileName为名
  • git pull:拉取远程仓库,类似理解为将远程仓库合并到本地仓库上
  • git fetch:将远程仓库中拉取到本地(四五合起来与三结果相同,三是将四五两个命令合起来的结果)
  • git merger origin/master:将拉取到本地的远程仓库与本地仓库合并
gitk git gui
  • gitk:在git仓库中输入该命令,打开gitk工具,如果出现异常,是由于版本不兼容导致的,需要下载新的版本或者更新版本即可解决,一般下载git时自带的安装包中的版本即可,不会出错
  • git gui:git的图形化界面,打开方式同上
  • GitHub desktop:GitHub的桌面图形化工具,可以单独下载使用
git命令起别名
  • git config --global alias.ar branch:命令指用br代替branch,修改的范围是global,同样可以用local与system
  • git config --global alias.unstage ‘reset HEAD’:用unstage替换reset HEAD,此时可以用git unstage file替换git reset HEAD file,用来清除缓存区的修改
  • git config --global alias.ui ‘!gitk’:指用字符串ui代替外部命令gitk,此时要打开界面可以输入git ui而不是gitk
其他

你可能感兴趣的:(git,git,windows)