一些命令 git bash

bash基本命令

命令 说明
cd (change directory) 更改当前所在的目录
pwd (print work directory) 显示当前所在的目录
ls (list) 展示当前或者指定目录中的所有内容信息 -a显示所有内容,-l详细信息列表
touch 新建文件
mkdir 新建文件夹
rm (remove) 删除文件,加上-r可以用来删除文件夹
rmdir 删除空文件夹
cp (copy) 复制文件或者 文件夹-r
mv (move) 移动文件或者 文件夹
cat 查看文件内容
less 分页查看文件内容
clear 清空屏幕 ( command + k )
reset 清空屏幕
open . 打开当前命令所指的文件目录
echo 输出内容到屏幕
> 重定向指令 覆盖
>> 重定向指令 追加

tab: 自动补全

上下方向键 命令历史

vi编辑器

如同Windows下的记事本,vi编辑器是Linux下的标配,通过它我们可以创建、编辑文件。它是一个随系统一起安装的文本编辑软件。

三种模式

  • 普通模式 ---- 普通模式下无法进行内容编辑,每个按键都会对相应自己的命令
    1. 删除功能
    `dd`  删除光标所在的一整行
    `dw`  删除光标所在的后面的一个单词

    2. 撤销
    `u` 撤销

    3. 开一个新行
    `o` 在光标所在的行下面开一个新行
    `O` 在光标所在的行上面开一个新行

    4. 复制
    `yy` 复制光标所在的行    yank
    `yw` 复制一个单词

    5. 粘贴
    `p`  粘贴               paste

    6. 光标的移动指令
        1. 方向键(不推荐使用)
        2. h j k l
        3. w e b 

    7. 重复命令
    数字+命令
  • 插入模式 ---- 我们可以像使用正常的编辑器一样,去编辑内容
  • 命令模式 ---- 可以输入不同的命令,来实现不同的功能

模式切换

  1. 普通->插入
    i a
  2. 插入->普通
    esc ctrl+[
  3. 普通->命令
    :
  4. 命令->普通
    esc esc 或者删掉 :
  • 插入模式和命令模式不能直接切换,需要先切换到普通模式中!

保存

进入命令模式

  • :w -- 保存
  • :q -- 退出
  • :wq -- 退出并保存
  • :q! -- 修改之后,不想保存,就想退出
如果编辑器非正常退出,比如直接点击了窗口的关闭按钮,那么下次进入编辑器编辑刚才的文件的时候,会出现报错,解决方法就是,直接将,生成的.xxx.swp文件删除重新打开编辑器就可以了!!

版本控制工具

VCS Version control system

记录所有的修改历史,方便日后恢复到指定的修改的版本!!

版本控制工具还可很方便实现代码共享,以及合并!

分类

  • 本地版本控制工具

  • 集中式版本控制工具 (代表:SVM)

  • 分布式的版本控制工具 (代表:Git)

本地式只适合单人开发

集中式和分布式都可以适用于多人协作开发,但是不同点在于:

  1. 集中式版本库是存放在服务器上,所有人开发都要从服务器获取源代码,并且修改之后需要提交给服务器!

  2. 分布式的版本库是存放在本地,当需要共享代码的时候,通过源代码共享服务器进行共享即可!!

git

git的基本使用

  1. 配置 (一台电脑只需要配置一次,可以修改,修改就是直接重复命令,会把原来的信息给覆盖掉)
git config --global user.name "yonghuming"  (配置用户名)
git config --global user.email "用户邮箱"  (配置用户邮箱)
  1. 初始化仓库
cd 当前项目文件夹
git init
git init 命令,实际就是在当前项目中创建了一个`.git`的隐藏文件夹,这个文件夹中就是用来保存所有的版本信息的内容
  1. 添加文件到暂存区
git add 文件名 (可以添加单个文件,也可以一次性添加多个文件)
git add * 
git add .
git add -A
  1. 将文件从暂存区保存到版本库,生成新的版本
git commit -m "说明信息"
  1. 查看当前目录下问价的状态信息
git status
  1. 查看提交的版本历史记录
git log
  1. 将文件从暂存区恢复到工作目录
git checkout 文件名
  1. 将文件从版本库中指定的版本恢复到工作目录
git reset --hard 版本号
  1. 查看所有操作流水
git log --graph --oneline --decorate --all
  1. 查看某个log(版本)的修改提交记录
git show 版本号
  1. 克隆某个分支
git clone -b 分支名 远程地址 文件夹名
  1. 拉取远程代码到本地
git pull
git pull --rebase   // 会使commit看起来很自然。https://www.cnblogs.com/wangiqngpei557/p/6056624.html
  1. 清除所有的提交历史记录
1.Checkout
git checkout --orphan latest_branch

2. Add all the files
git add -A

3. Commit the changes
git commit -am "commit message"

4. Delete the branch
git branch -D master

5.Rename the current branch to master
git branch -m master

6.Finally, force update your repository
git push -f origin master
  1. git rebase 合并commit
合并提交记录
1. git rebase -i <要合并到哪个版本号>  或  git rebase -i <开始版本号> <结束版本号>
2. 除了第一行记录  其余的改成 s 然后保存退出
3. 编辑commit 记录 然后保存退出
  1. git rebase merge分支 (让提交记录变得清晰 不会出现 执行 git merge 指令 而产生merge的commit 节点)
git checkout dev
git rebase master # 将dev分支和master分支做一次衍合处理
# git提示出现了代码冲突,此处为之前埋下的冲突点,处理完毕后
git add src/index.html # 添加冲突处理后的文件
git rebase --continue # 加上--continue参数让rebase继续处理
git checkout master
git merge dev

git的分区

  1. 工作目录 (指的是项目文件存放的位置)
  2. 暂存区 (用git add就会将文件添加到这个暂存区)
  3. 版本库 (存放版本历史信息的位置)
git add 是将工作目录中的文件内容添加到了暂存区
git commit 是将暂存区中的内容在版本库中生成一条新的版本记录
git checkout 是将暂存区中的内容获取出来放到了工作目录
git reset --hard 是将版本库中指定版本的内容获取出来放到工作目录

一句话总结: git 其实就是将文件在各个区之间进行流转!!

分支

oper command
创建分支 git branch 分支名 git checkout -b 分支名
切换分支 git checkout 分支名
删除本地分支 git branch -D 分支名称
合并分支 A分支 执行命令 git merge BB合并到了A
查看所有分支 git branch git branch -a
查看本地分支与远程的关联 git branch -vv
删除远程分支 git push origin --delete <BranchName>
创建并关联远程一个新分支 git checkout 分支名, 成功后 用 git branch -vv 看一下关联
同步远程分支到本地 (远程可能删掉了某些分支,本地同步一下) git pull --prune git pull -p

冲突问题

分支A中创建了文件xx.txt, 分支B中也创建了个xx.txt,那么git就会发现,有两个同名的文件,这时候,就是冲突产生了,冲突产生之后,合并会失败,需要先解决冲突,然后再次提交,才能正常的合并。

解决冲突

冲突产生之后,git会告知哪个文件冲突了,然后在文件中,会用 >>>> ==== <<< 这样的方式将冲突的内容标记出来,我们只需要将标记删除,然后将代码改成自己想要的结果,再次add commit即可!!

分支的使用原则

只要有新的任务,就开辟一个新的分支去做,做完之后,将分支合并回去就可以了!!

master分支

这个分支,是git默认自动创建的!!

创建的时机,并不是在git init之后就会有,而是,在第一次提交完成之后,才会默认的创建出来这个分支!!

分支切换要注意的事项

必须先将所有的更改,做一次提交之后,再切换分支!!!

回滚操作/恢复操作

  • 如果用 git reset --hard 版本号 从版本库里面恢复了某一个版本,那么以前的所有历史版本也就不存在了,回滚操作就是一粒后悔药,如果短时间后悔恢复此版本,而且还想恢复另外一个版本,就可以用这个方法
  1. 查看所有的操作日志
git log -g
  1. 创建新的分支,将要恢复到的版本号作为最后一个参数
git branch 分支名 版本号
  1. git pull时出现冲突 放弃本地修改,使远程库内容强制覆盖本地代码
git fetch --all                 //只是下载代码到本地,不进行合并操作
git reset --hard origin/master  //把HEAD指向最新下载的版本

  1. git push 本地强制覆盖远程
 git push ...... -f      -f命令

远程仓库

git

git 是一个分布式的 版本控制工具,特点,就是版本库存放在本地!!!

远程仓库的作用

就是共享版本库!!! 共享代码!!!

远程仓库的创建

远程仓库其实就是一个裸仓库

裸仓库

创建裸仓库

git init --bare

裸仓库创建完成之后,就不需要做任何操作了,在裸仓库中不能进行任何的开发操作

远程仓库的操作命令

  1. 给远程仓库推送内容
git push 远程仓库地址 本地分支名称:远程分支名称

如果本地分支名称和远程分支名称相同,那么可以缩写如下:
git push xxx.xxx.git master:master
git push xxx.xxx.git master

  1. 获取远程仓库中 所有 的内容
git clone 远程仓库地址 文件夹名称

文件夹名称也可以不用写,默认使用的就是远程仓库的文件夹名称!!

克隆不需要密码验证 push需要 因为防止别人也能随便往你项目中推送东西

如果是克隆的远程仓库中的所有内容,那么意味着,项目中的所有分支中的内容都被clone下来了,但是在git bash命令行中使用git branch命令看不到所有分支的名字,但是分支确实已经存在了,这个时候如果想要看某一个分支里面的内容,我们需要看远程仓库中的分支名称,然后在bash命令中用git checkout "分支名",切换到了这个分支之后,再用git branch查看分支名称,就可以看到了
  1. 获取远程仓库中更新了的内容
git pull 远程仓库地址 分支名称
  • 如果在本地删除了一个文件之后,想在远程仓库下载恢复此文件,下载之前,要重新add commit一下本地的项目文件。目的是让远程的仓库和本地的版本库中的数据做一下对比,有差别,才能用pull获得此文件。

注意

只有在远程仓库中从未推送过任何内容的时候,我们才能随意向里面推送任何内容

但是,一旦已经推送过一次内容了,那么之后就不能随便的向远程仓库推送内容了,能推送的,只能是和第一次推送相关的修改的内容!!

每次在向远程仓库中推送新内容的时候,必须先进行一次获取更新内容的操作(pull),否则可能推送失败!!!

远程仓库

远程仓库地址别名

因为远程仓库地址的连接过长,不容易记忆,所以每次在向服务器提交新内容的时候,都需要重新去查看一次远程仓库的地址,非常麻烦!!

我们可以为每个远程仓库地址,设置一个简单的别名

设置远程地址的别名

git remote add 别名 远程仓库地址

查看所有的远程地址别名

git remote

删除别名

git remote remove 别名

重命名别名

git remote rename 旧别名 新别名 

查看别名对应的地址

git remote get-url 别名

设置别名对应的地址

git remote set-url 别名

origin别名

如果是直接通过 git init 创建的仓库,那么这个仓库中是不会有origin的别名的!!!

如果仓库是通过 git clone 从远程仓库中获取的内容,那么这个仓库中会自动添加一个 origin 的别名,指向的地址其实就是当时 clone 的远程仓库的地址

git安装问题 踩坑

ssh

概念

用作客户端和服务器通信的时候的一个安全的协议,全称是 Secure Shell,一般用作服务器的远程管理

ssh工具

在linux系统下,提供了一个工具,ssh,这个工具可以通过ssh协议连接服务器并对服务器进行远程的管理

使用示例

ssh root@riksy.love

ssh协议的格式

用户名@服务器的地址

公钥以及私钥的生成

  1. 通过ssh-keygen命令就可以生成公钥和私钥
ssh-keygen -t rsa

敲完这个命令之后,一定要一路敲回车,知道看到冒泡泡为止!!!!

服务器免密登录的设置步骤

  1. 生成公钥以及私钥
  2. 在服务器的 ~/.ssh/autorized_keys中将生成公钥中的所有的内容追加到里面去
  3. 再次登录服务器就不需要密码了!!

github免密

github

提供了两种推送和获取代码的协议

  1. https -- 地址:https://github.com/liuxinya/firstP.git
  2. ssh -- 地址:git@github.com:liuxinya/firstP.git

免密设置步骤

  1. 如果从未生成过秘钥
    需要执行 ssh-keygen -t rsa 生成秘钥文件,输入此命令之后一路回车即可(在用户根目录下.ssh目录中,有个id_rsa.pub文件)

  2. 打开github,点击个人头像,选择下面的settings

  3. 点击左边栏中的 SSH and GPG keys

  4. 点击页面右上方的New SSH Key

  5. 打开自己的公钥文件(用户根目录下.ssh目录中,有个id_rsa.pub文件)复制文件中的所有的内容

  6. 将复制好的内容粘贴到 key 文本框中

  7. 点击Add SSH key 按钮

  8. 以后在本机使用github的时候,直接使用ssh协议的连接,就可以实现免密功能了!!!

只有使用ssh协议的连接,才能够实现免密的push,pull

静态页面托管

github给每个账号提供了一个项目作为静态页面托管的机会!

我们可以将自己写好的静态页面全部放到github上去,通过指定的连接就能够访问到页面效果!!

步骤

  1. 创建新的项目

  2. 项目名称必须是 : 用户名.github.io

  3. 将自己的写好的项目直接推送到这个github仓库中

  4. 通过 用户名.github.io 地址 就可以直接访问页面了!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,414评论 9 163
  • 本文为 Git教程的学习笔记,教程源自廖雪峰的博客。这是一个由浅入深,学完后能立刻上手的Git教程。另,附上另一本...
    七弦桐语阅读 6,167评论 5 47
  • 随着年味的渐渐逝去,相比孩提时的春节来说,如今的春节还是有些无趣的,不过能和家人坐在一起包饺子,看电视,聊聊...
    季迦勒阅读 372评论 0 0
  • 今天天气很好,不冷不热,风吹在人身上,凉凉的,很舒服; 今天打扮的很好,虽然没有化妆,但穿了自己很早就想穿的牛仔背...
    轻鸽阅读 133评论 0 0
  • 我还能不能撑开一个更大更好的世界呢
    瑾珠阅读 345评论 0 0