目录

2638264600 的个人博客

记录精彩的程序人生

git基础知识

git相关命令

先推一个网址:https://learngitbranching.js.org

第一章 明确状态及概念

git库所在的文件夹中的文件大致有4种状态

Untracked:未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改,而变为Modified. 如果使用git ``rm``移出版本库, 则成为Untracked文件

Modified:文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态,使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改

Staged:暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态.

说明: 执行git reset HEAD filename取消暂存, 文件状态为Modified

Git 状态 untracked 和 not staged的区别

1)untrack 表示是新文件,没有被add过,是为跟踪的意思。

2)not staged 表示add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意思


iedea注册码:
http://idea.lanyus.com/注册码

gitk:可视化查看提交日志命令

第二章 命令

linux安装git

#直接安装git,或者使用yum install git
sudo apt-get install git
#增加个用户git专门做git相关操作
sudo adduser git
#收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
#先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
git init --bare sample.git 
chown -R git:git sample.git
git clone git@server:/srv/sample.git

#可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x :1001:1001:,,,:/home/git:/bin/bash 
改为(上下两行中均无空格,:x:会被误解所以用空格隔开了):
git:x :1001:1001:,,,:/home/git:/usr/bin/git-shell 
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户
指定的git-shell每次一登录就自动退出。
*   要方便管理公钥,用[Gitosis](https://github.com/sitaramc/gitolite);
*   要像SVN那样变态地控制权限,用[Gitolite](https://github.com/sitaramc/gitolite)。

git本地工作

》》》初始化和日志
#初始化本地仓库
git init 
#增加一个文件到暂存区
git add readme.txt 
#把当前目录统统增加到暂存区
git add .
#强制添加到GIT,跳过忽略文件的配置
git add -f readme.txt
#移动/重命名一个文件
git mv readme.txt readme.txt1
#工作区中删除readme.txt,还需要git commit才能到暂存区
git rm readme.txt
#cached为软删除,即不物理删除;不加该参数就物理删除,
#提交的时候会提交一个deleted
git rm --cached test.txt
#查看本地库最新状态
git status
#查看两个文件版本的不同
git diff readme.txt 
#查看master两个分支的不同,(如指定文件参数则对比两个分支的指定文件readme.txt)
git diff master..dev readme.txt
git diff HEAD -- readme.txt
#提交到本地库/分支并增加注释
git commit -m 'test'
#救一下commit的注释
git commit --amend -m "修改的内容"

#查看最新提交日志
git log --pretty=oneline
#把日志显示为一行,显示每条日志的分支信息,显示全部信息,
#显示作者为wyz的提交,显示前5行记录,显示包含注释串readme的提交,
git log --oneline --decorate --all --author='wyz' -5 --grep='readme' 
#显示20200303之前的提交,显示3天前的提交,显示图形效果
git log --before='2020-03-03' --before='3 days' --graph
#命令可以看到分支合并图
git log --graph --pretty=oneline --abbrev-commit
#用来记录你的每一次命令
git reflog
#恢复指定(提交ID)的提交,即撤销该次提交
git revert 提交ID
#HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^
#head指向master,master指向最新提交
#回退到上个版本,三个选项:
#hard(恢复工作区和暂存区),mixed(只影响暂存区),soft(不影响工作区和暂存区)
git reset --hard HEAD^
#控制指针位置,回退到指定版本commit_id,如1094a
git reset --hard 1094a
#丢弃工作区的修改,让这个文件回到最近一次git commit或git add时的状态
#类似git reset HEAD <file>,但是reset是把暂存区的修改撤销
git checkout -- readme.txt
#恢复到最近一次提交前的状态
git checkout HEAD^ -- readme.txt
#创建分支-b参数表示创建并切换git branch dev+git checkout dev
git checkout -b dev
#创建远程origin的dev分支到本地的dev分支,前提是远程必须要有dev分支
git checkout -b dev origin/dev
#git恢复指定文件到某版本
git checkout hashcode filename
#强制创建新的分支,不管是否有重名分支
git checkout -B dev origin/del
#基于某次提交来创建新的分支,如commit的id为352c***
git branch dev 352c
#同上,也是基于某个提交来创建新的分支
git checkout -b dev 352c
#切换到分支的游离状态,默认以该分支下的最后一次提交ID
git checkout --datch dev
#基于当前分支创建一个干净的没有提交日志的分支,基础版本就是当前分支
git checkout --orphan dev
#把当前分支的修改内容一起打包带到新分支上,并使用软合并。俩问题:易冲突且当前分支修改内容丢失
git checkout --merge dev
#比较两个分支的差异内容
git checkout -p dev
#切换分支为master
git checkout master

》》》分支
#把dev分支的内容合并到当前分支上
git merge dev
#查看当前所有分支,当前分支前标一个*号,--list,-a显示所有分支
git branch -a
#查看本地和远程的关联分支信息,cat .git/config也可以看
git branch -vv
#查看remote 分支
git branch -r 
#更新远程分支列表
git remote update origin -p
git remote prune 移除这个分支
#删除分支
git branch -d dev
#重命名dev分支为dev,
git branch -m dev dev1
#强制删除分支
git branch -D feature-vulcan 
#合并分支时有冲突要手动解决掉然后再add和commit一次
#准备合并dev分支,--no-ff参数,表示禁用Fast forward,加上-m参数,把commit描述写进去
git merge --no-ff -m "merge with no-ff" dev

》》》本地储藏状态:
#把当前工作现场“储藏”起来,等以后恢复现场后继续工作
#先执行stash,然后切换到要改bug的分支,创建分支、add、commit、合并分支、删除分支
#再切回到当前开发分支,即执行stash命令的分支上
git stash
#查看当前分支所有储藏起来的现场 
git stash list
#显示
git stash show -p
#恢复的同时stash内容并不删除,需用git stash drop再来删除,
#如果list中有多个,则可以指定恢复stash@{0}
git stash apply stash@{0}
#删除stash@{0}现场
git stash drop stash@{0}
#恢复的同时把stash内容stash@{0}也删了:
git stash pop stash@{0}

》》》多个commit合并提交
#合并多个commit提交,先找到要开始合并的commit的id
git log --oneline
#重设基线到前两个提交,
git rebase -i d8b3f48
#或者合并前两个提交`git rebase -i HEAD~[NUMBER OF COMMITS]`
#参数i表示interactive的方式
git rebase -i HEAD~2
#--amend只能修复最后commit的log message。
git commit --amend
#然后正常push即可
git push
#删除远程分支
git push origin --delete [branch_name]
#如果中途出现问题,使用**git rebase --abort**恢复成未合并之前的状态
git rebase --abort
#把所有提交合并为一个提交(待验证)
git rebase -i --root
#如果已经push到远端了,则需要使用命令**git push origin '分支名' -f** 
#强制推送到远端,如果存在冲突则需要解决冲突
git push origin '分支名' -f

git远程交互

#查看远程详细信息
git remote -v 
#显示远程分支和本地分支的信息,以及映射关系
git remote show origin
#移除远端分支
git remote rm origin 
#给远程增加一个分支
git remote add origin git@github.com:michaelliao/learngit.git
#该选项可以合并两个独立启动仓库的历史,解决本地仓库和远程仓库实际上是
#独立的两个仓库导致报错fatal: refusing to merge unrelated histories的问题
git pull origin master --allow-unrelated-histories
#把本地master分支推送到远程origin分支上,-u参数不但推送分支到远程且把本地和远程分支关联起来
#首次推送加-u 以后就不用加了,-u等价于--set-upstream
git push -u origin master 
#把当前分支提交到远程仓库的orgin的dev分支上
git push --set-upstream origin dev
#把本地的master分支推送到远程的origin分支上
git push origin master
#强制推送本地到远程,覆盖掉远程,慎重使用
git push origin master -f 
#从远程克隆一个本地库到git_local
git clone git@github.com:michaelliao/gitskills.git git_local
# clone时如果发现:git clone error fatal: working tree ‘/data‘ already exists.
# 则要clone前先执行:unset GIT_WORK_TREE,再clone
unset GIT_WORK_TREE
#depth用于指定克隆深度,为1即表示只克隆最近一次commit
#适合你只是想clone最新版本来使用或学习,而不是参与整个项目的开发工作**
git clone --depth=1 https://gitee.com/dl88250/solo.git
#从远程强制抓取一个本地库
git fetch git@github.com:michaelliao/gitskills.git
#获取远程仓库的最新代码,但是不做任何操作
git fetch --all
#根据提示设置dev和origin/dev的链接 
#指定本地dev分支与远程origin/dev分支的链接,
git branch --set-upstream-to=origin/dev dev
#指定链接的另一种方式
git branch --set-upstream-to dev origin/dev。
#把本地的dev分支和远程的dev分支进行关联
git branch --set-upstream dev origin/dev
#抓取最新的远程库修改到本地库的当前分支,必须指定当前分支和远程分支的关联,
#根据提示如果没有指定链接就需要执行--set-upstream-to来设置dev和origin/dev的链接 
git pull
#变基,重设基线
#rebase操作可以把本地未push的分叉提交历史整理成直线
#使得我们在查看历史提交的变化时更容易
git rebase

》》》强更
#强制更新本地分支
git fetch --all
#转换为master分支
git checkout master;
#重设基线
git reset --hard origin/master
git reset --hard dev;
#重新拉一下代码
git push --force origin master

git标签

#标签默认是打到最新的提交上的
#可以查看所有标签,标签不是按时间顺序列出,而是按字母排序的。
git tag
#给当前分支打个标签,默认为HEAD
git tag v1.0 
#给某次commit id(如f52c633)打个标签
git tag v0.9 f52c633 
#查看某个标签的详细信息
git show v0.9 
#-a指定标签名,-m指定说明文字,默认不用出现这俩参数
git tag -a v0.1 -m "version 0.1 released" 1094adb 
#删除标签,如果要删除远程标签则先删除本地的再提交push到远程
git tag -d v0.9 
#只推送删除了的v0.9标签
git push origin :refs/tags/v0.9 
#推送标签到远程
git push origin v1.0 
#一次性推送所有标签
git push origin --tags

git忽略和全局

创建一个特殊的.gitignore文件,添加内容:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
#检查.gitignore写得是否有问题
git check-ignore
#检查App.class的配置规则是哪个且有啥问题
git check-ignore -v App.class
#设定全局变量别名
git config --global alias.st status以后st就表示status:git st = git status
#设定全局命令别名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset 
-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
每个仓库的Git配置文件都放在.git/config文件中
当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
#Git会适当地显示不同的颜色,比如git status
git config --global color.ui true

第三章 常用命令

git常用命令

1.创建仓库

  • a.当前目录创建仓库,即把当前目录的文件开始用git管理,该命令会在当前目录下创建一个.git目录
    git init
  • b.指定目录创建仓库   
    git init 目录名

2.设置配置

  • a.全局配置,用户名和邮箱-必须
    git config --global user.name woniu
    git config --global user.email woniu@163.com
    cat ~/.gitconfig 查看配置文件
  • b.设置本地仓库配置
    git config --local user.name woniu
    git config --local user.email woniu@163.com
  • c.查看配置信息
    git config --global --list

3.工作区文件新增到暂存区

  • a.提交指定文件
         git add a.cpp
  • b.提交当前目录所有文件
         git add .
  • c.把提交过暂存区,已经发生改变的文件再次提交到暂存区
         git add -u

4.暂存区文件提交到版本库

git commit -m "初始版本"

5.查看git提交日志

  • a.全部日志
    git log
  • b.简化日志
    git log —oneline 官网是git log —pretty=oneline 可以试下
    git log —stat 简略日志
  • c.查看前5个日志
    git log -n5 --oneline
  • d.查看所有日志
    git log --all
  • e.图像化查看所有日志
    git log --all --graph

6.查看上次提交后是否有修改
git status

7.查看差异

  • a.查看工作区与暂存区差异
    git diff
  • b.查看暂存区与仓库之间的差异
         git diff --cached
  • c.比较不同commit的差异
    git diff HEAD1 HEAD2

8.清空暂存区,工作区修改
   git reset --hard

  1. 删除工作区和暂存区文件
       git rm 文件名

10.重命名文件
其实相当前于mv 文件 文件名 、git rm、 git add3个步骤
git mv a.cpp b.cpp

11.版本回滚

  • a.恢复暂存区和HEAD一致
         git reset HEAD
  • b.恢复暂存区指定文件与HEAD一致
         git reset HEAD -- 文件名
  • c.恢复工作区与暂存区一致
         git checkout -- 文件名
    *d.回退到指定commit,会清楚之后提交的commit
         git reset --hard HEAD

分支管理

1.创建分支

  • a.直接创建
    git branch dev(分支名)
  • b.基于某个历史版本创建分支
    git branch dev HEAD

2.查看分支
git branch -av

3.删除分支
git branch -d dev(分支名)

4.切换分支
git checkout dev

5.查看分支差异

  • a.查看分支差异
    git diff dev master
  • b.查看分支指定文件差异
    git diff dev master -- index

6.本地仓库推送到远端仓库

  • a.Git代码托管平台创建仓库
    http地址:https://gitee.com/woniu/git-test.git
  • b.本地仓库与远端仓库关联
    git remote add originhttps://gitee.com/woniu/git-test.git
  • c.如果远端仓库是空的
    git push -u origin master
    一般远端仓库都会有readme文件,解决方案
    git pull --rebase origin master
  • d.提交到远程仓库
    git push origin master

7.拉取远程分支

第四章 Git常见命令速查表

  • 2019-01-01
  • Git
  • 预计阅读 7 分钟

Git常见命令速查表
名词

  • master: 默认开发分支
  • origin: 默认远程版本库
  • Index / Stage:暂存区
  • Workspace:工作区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

一、新建代码库

  1. 在当前目录新建一个Git代码库
    git init
  2. 新建一个目录,将其初始化为Git代码库
    git init [project-name]
  3. 下载一个项目和它的整个代码历史
    git clone [url]
  4. 查看本地库状态
    git status

二、配置

Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。

  1. 显示当前的Git配置
    git config --list
  2. 编辑Git配置文件
    git config -e [--global]
  3. 设置提交代码时的用户信息
    git config [--global] user.name "[name]"
    git config [--global] user.email "[email address]"

三、增加/删除/修改文件

  1. 查看状态
    git status
  2. 查看变更内容
    git diff
  3. 添加指定文件到暂存区
    git add [file1] [file2] ...
  4. 添加指定目录到暂存区,包括子目录
    git add [dir]
  5. 添加当前目录的所有文件到暂存区
    git add .
  6. 添加每个变化前,都会要求确认(对于同一个文件的多处变化,可以实现分次提交)
    git add -p
  7. 删除工作区文件,并且将这次删除放入暂存区
    git rm [file1] [file2] ...
  8. 停止追踪指定文件,但该文件会保留在工作区
    git rm --cached [file] 停止追踪目录 git rm -r --cached logs/ temp/
  9. 改名文件,并且将这个改名放入暂存区
    git mv [file-original] [file-renamed]

四、代码提交

  1. 提交暂存区到仓库区
    git commit -m [message]
  2. 提交暂存区的指定文件到仓库区
    git commit [file1] [file2] ... -m [message]
  3. 提交工作区自上次commit之后的变化,直接到仓库区
    git commit -a
  4. 提交时显示所有diff信息
    git commit -v
  5. 使用一次新的commit,替代上一次提交(如果代码没有任何新变化,则用来改写上一次commit的提交信息)
    git commit --amend -m [message]
  6. 重做上一次commit,并包括指定文件的新变化
    git commit --amend [file1] [file2] ...
  7. 提交并push
    git commit -m "提交信息" && git push

五、分支

  1. 显示所有本地分支
    git branch
  2. 出所有远程分支
    git branch -r
    git branch -v
  3. 出所有本地分支和远程分支
    git branch -a
  4. 新建一个分支,但依然停留在当前分支
    git branch [branch-name]
  5. 新建一个分支,与指定的远程分支建立追踪关系
    git branch --track [branch] [remote-branch]
  6. 删除分支
    git branch -d [branch-name]
  7. 删除远程分支
    git push origin --delete [branch-name]
    git branch -dr [remote/branch]
    git push :
  8. 新建一个分支,并切换到该分支
    git checkout -b [branch]
  9. 切换到指定分支,并更新工作区
    git checkout [branch-name]
  10. 切换到上一个分支
    git checkout -
  11. 建立追踪关系,在现有分支与指定的远程分支之间
    git branch --set-upstream [branch] [remote-branch]
  12. 合并指定分支到当前分支
    git merge [branch]
  13. 衍合指定分支到当前分支
    git rebase
  14. 选择一个commit,合并进当前分支
    git cherry-pick [commit]

六、标签

  1. 列出所有本地tag
    git tag
  2. 基于最新提交创建tag
    git tag
  3. 删除本地tag
    git tag -d
  4. 删除远程tag
    git push :
    git push origin :refs/tags/[tag-name]
  5. 查看tag信息
    git show [tag]
  6. 提交指定tag
    git push [remote] [tag]
  7. 提交所有tag
    git push [remote] --tags
  8. 新建一个分支,指向某个tag
    git checkout -b [branch] [tag]

七、查看信息

  1. 显示有变更的文件
    git status
  2. 显示当前分支的commit历史
    git log
  3. 显示当前分支的commit历史 ,以及每次commit发生变更的文件
    git log -stat
    git log 查看版本详细信息
  4. 搜索commit历史,根据关键词
    git log -S [keyword]
  5. 显示某个commit之后的所有 提交说明,每个 commit说明占据一行
    git log HEAD --pretty=format:%s
  6. 显示某个文件的版本历史,包括文件改名
    git log --follow [file]
    git whatchanged [file]
  7. 显示指定文件相关的每一次diff
    git log -p [file]
  8. 显示过去5次提交
    git log -5 --pretty --oneline
  9. 显示所有提交过的用户,按提交次数排序
    git shortlog -sn
  10. 显示指定文件是什么人在什么时间修改过
    git blame [file]
  11. 显示暂存区和工作区的差异
    git diff
  12. 显示暂存区和上一个commit的差异
    git diff --cached [file]
  13. 显示工作区与当前分支最新commit之间的差异
    git diff HEAD
  14. 显示两次提交之间的差异
    git diff [first-branch]...[second-branch]
  15. 显示今天你写了多少行代码
    git diff --shortstat "@{0 day ago}"
  16. 显示某次提交的元数据和内容变化
    git show [commit]
  17. 显示某次提交发生变化的文件
    git show --name-only [commit]
  18. 显示某次提交时,某个文件的内容
    git show [commit]:[file]
  19. 显示当前分支的最近几次提交,查看版本信息
    git reflog

八、远程操作

  1. 下载远程仓库的所有变动
    git fetch [remote]
  2. 取回远程仓库的变化,并与本地分支合并
    git pull [remote] [branch]
  3. 显示所有远程仓库
    git remote -v
  4. 显示某个远程仓库的信息
    git remote show [remote]
  5. 增加一个新的远程仓库,并命名
    git remote add [shortname] [url]
    git remote add 别名 远程地址
  6. 上传本地指定分支到远程仓库
    git push [remote] [branch]
    git push 别名 分支
  7. 强行推送当前分支到远程仓库,即使有冲突
    git push [remote] --force
  8. 推送所有分支到远程仓库
    git push [remote] --all
  9. 删除远程分支或标签
    git push :<branch/tag-name>

九、撤销

  1. 撤销工作目录中所有未提交文件的修改内容
    git reset --hard HEAD
    git reset --hard 版本号
  2. 撤销指定的未提交文件的修改内容
    git checkout HEAD
  3. 撤销指定的提交
    git revert
  4. 退回到之前1天的版本
    git log --before="1 days"
  5. 恢复暂存区的指定文件到工作区
    git checkout [file]
  6. 恢复某个commit的指定文件到暂存区和工作区
    git checkout [commit] [file]
  7. 恢复暂存区的所有文件到工作区
    git checkout .
  8. 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
    git reset [file]
  9. 重置暂存区与工作区,与上一次commit保持一致
    git reset --hard
  10. 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
    git reset [commit]
  11. 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
    git reset --hard [commit]
  12. 重置当前HEAD为指定commit,但保持暂存区和工作区不变
    git reset --keep [commit]
  13. 新建一个commit,用来撤销指定commit ( 后者的所有变化都将被前者抵消,并且应用到当前分支 )
    git revert [commit]

十、储藏

  1. 暂时将未提交的变更储藏
    git stash
  2. 查看现有的储藏
    git stash list
  3. 应用最近的储藏
    git stash apply
  4. 应用某储藏
    git stash --index
  5. 应用某储藏并删除该储藏
    git stash pop
  6. 移除某储藏
    git stash drop ${stash-name}

十一、其他

生成一个可供发布的压缩包
git archive

二、过滤规则

  • 一行只能出现一个语句。
  • 规则的执行顺序是从上到下。
  • 所有空行或者以# 开头的行都会被 Git 忽略。
  • 匹配模式如果是末尾跟“/”则表示过滤目录。
  • *匹配多个字符。
  • 模式前使用“!”表示忽略模式以外的文件或目录。
  • ?匹配单个字符。
  • "[]"匹配放括中的任一字符
  • #清空缓存
    git rm -r –cached
    例子:
    #过滤项目下的有所.c文件
    *.c

#过滤整个项目文件
/*

#过滤目录/filename/
/filename/

#过滤/目录下的所有.cpp文件,无法过滤/filename/name.cpp
/*.cpp

#保留所有的.cpp文件
!*.cpp

#保留/filename/目录及其下所有文件
!/filename/

#保留/目录下所有.c和.o文件
!/*.[co]

#过滤/目录下所有文件,但只保留.cpp文件
/*
!/*.cpp

#语句执行顺序从上到下,下面那条语句的执行结果将使上面那条语句无效。整个项目的文件都将被过滤。
!/.cpp
/

#注意:这里单独介绍一种特殊情况,
#过滤/~/文件下的所有目录,但是保留/~/目录下的所有.cpp文件
//
!//.cpp
#如果你还想保留/~/~/目录下的所有.cpp文件,那么这么写就是错误的
#要先保留目录级小的文件,再保留目录级别较大的。
///*
!///*.cpp

#如下是正确写法
///*
!///.cpp
/
/*
!//.cpp
#下面这条语句将无效,因为一行只能出现一个语句。
*.c #注释内容

#在用多语句规格时应该注意上下语句的目录等级应该一致。
#正确语句,上下都是三级目录
/filename1/filename2/*
!/filename1/filename2/*.cpp

#错误语句,上面二级目录,下面是三级目录
/filename1/filename2/
!/filename1/filename2/*.cpp

#错误语句,上面是二级目录,下面是三级目录
/filename1/*
!/filename1/filename2/*.cpp

#过滤/a1/b/,/a2/b/,/b/等等目录下所有文件
b/*

#过滤/b/下的所有目录
/b/*

#次修改完.gitignore文件后,运行以下命令执行更改
git rm -r --cached .
git add .
git commit -m "描述性语句"
git push

比如可以代表一切的字符串,可以是0个也可以是任意多个字符。[abc]表示匹配方括号当中的任何一个字符,?表示匹配任何一个字符。[0-9]表示匹配0-9当中任意一个数字,两个号表示任何中间目录,比如src/**/build,可以匹配到src/test/build,也可以匹配到src/current/build。
在使用.gitignore文件后如何删除远程仓库中以前上传的此类文件而保留本地文件

在使用git和github的时候,之前没有写.gitignore文件,就上传了一些没有必要的文件,在添加了.gitignore文件后,就想删除远程仓库中的文件却想保存本地的文件。这时候不可以直接使用"git rm directory",这样会删除本地仓库的文件。可以使用"git rm -r –cached directory"来删除缓冲,然后进行"commit"和"push",这样会发现远程仓库中的不必要文件就被删除了,以后可以直接使用"git add -A"来添加修改的内容,上传的文件就会受到.gitignore文件的内容约束。

第五章 可能出现的问题

  • 问题:# SSL_read: Connection was reset, errno 10054

  • 方案: git config --global http.sslVerify "false"

  • git rm -r --cached logs/ temp/ **
  • git** commit -m "Remove logs and temp from tracking" **
  • git** push origin main # 推送到远程

标题:git基础知识
作者:三学一心
地址:http://bk.isseeker.com/articles/2019/04/25/1556153997771.html