终端里如何复制粘贴

在cmder里

  • 粘贴是鼠标右键
  • 粘贴时shift+Insert
  • 复制是用鼠标选中即自动复制

在Git Bash里

  • 粘贴是鼠标中键
  • 粘贴时shift+Insert
  • 复制是用鼠标选中,然后右键,选中copy
  • 复制是用鼠标选中,然后按ctrl+Insert

命令缩写

  • 程序员把动词缩写,就变成了命令

易错点

  • 少写了空格
  • 多写了空格
  • 用了中文符号
  • 进错了目录
  • 用的不是Bash而是CMD

救命快捷键 ctrl+c用于中断一个命令

增删改查(文件)

查:查看文件或目录

查看当前目录绝对路径

pwd

查看当前目录内容

ls

查看指定目录内容

ls路径

查看文件内容

cat 路径
head 路径
tail 路径
less 路径

增:创建文件

创建 1.txt

touch  1.txt
echo  hi>1.txt
echo hihi>>1.txt
echo -e "1n2" >1.txt

创建目录

mkdir a
mkdir -p a/b/c

同时创建多个文件

touch 1.txtm2.txt

同时创建多个目录

mkdir -p a/b/c a/d/c

增:创建文件

复制文件

cp   1.txt 2.txt

复制目录

 cp -r a b

删:删除文件

  • 删除 1.txt
  • 删除目录 a/
  • 删除有内容的目录 a/
  • 不是什么文件都可以删,系统文件绝不可以删,除非你想重装系统

cd~ 进入命令行的第一件事

改:修改文件或目录

修改文件内容

追加文件内容

清空文件

移动文件/目录

重命名文件/目录(同上)

修改文件最后更新时间

把命令变成文件

步骤

  • 创建一个文件,后缀无所谓,可以没有
  • 添加执行权限(windows没有这个概念,跳过)
  • 把你要执行的命令写到文件里
  • 运行【sh正确路径】即可执行

这个文件,叫做脚本文件

学的是bash,所以是bash脚本文件

文件就是命令,命令就是文件(前提是加了PATH,且有执行权限)

本地仓库

git就是开启GitHub的钥匙

所有软件都是要先配置的

git的6行配置

请粘贴到命令行里运行

git config --global user.name 你的英文名
git config --global user.email 你的邮箱
git config --global push.default simple
git config --global core.quotepath false
git config --global core.editor "code --wati"
git config --global core.autocrlf input

注意

  • 上面的英文名和邮箱跟GitHub没有关系可以跟GitHub的用户名和邮箱保持一致,也可以不一致
  • 你需要保证code是可以直接在命令行执行的,如果不能执行,你需要安装VS Code并配置PATH。

运行完这六行,你才能开始用git,git就是一个命令而已,Bash命令行里有很多命令

git 解决了什么问题?

一个只有程序员会遇到的问题:版本控制

考虑场景1

老板:给我做一个页面

程序员:花了一天时间,做出来了,请过目

老板:不够醒目,再改改

程序员:好嘞

程序员:又花了一天时间,请过目

老板:还是之前的好看,改回去

程序员:好的(MMP,不早说,我现在已经没法撤销了)

每次给老板看之前复制以下不就好了

有效的土办法

git 可以让你的代码有版本

你可以随时回退到某个版本,当然git还有其他更强大的功能

git init(初始化)

git init会创建.git目录

git add 路径

选择哪些变动是要提交的,路径可以是绝对路径,相对路径 , .和*

.gitignore

描述哪些变动是不需要提交的,常见的有 nodemodules ,.DS_Store, .idea , .vscode

git commit -m 字符串

提交,并说明提交理由,字符串里如有空格,就用引号包起来

git commit -v

建议学习这种习惯,它能帮你回顾你刚刚改了什么东西,而且会迫使你把提交理由写的更详细一点

已经创建了一个拷贝

可以通过git log查看

多提交几次

git add .
git commit -v

每次重复这两个操作即可

不要少写.

不要少写空格

git reset --hard xxxxxx

xxxxxx是提交号的前6位

请一定确保你已经把所有代码commit了,因为这个操作会使没有commit过的变动消失

gitit log z只会显示之前的提交

使用git reflog 可以查看所有提交

然后用git reset --hard xxxxxx回去

总结

  • git add 选择要提交的内容
  • .gitignore 文件描述不提交的内容
  • git commit -v用来提交
  • git log 用来查看历史
  • git reset --hard xxxxx用来切换版本
  • git reflog 用来查看所有历史

考虑场景2

老板:给我做一个页面

程序员:请过目

老板:不够醒目,再改改

老板娘:我举得挺好,要是能做五彩斑斓的黑就好

程序员:好嘞,我做两份你们对比下(MMP,你两就不能统一意见)

如何同时做两条线开发?

土办法是复制一份,变成两个目录

git branch x

可以创造平行时间线x ,术语叫分支

git branch x

git checkout x

l两个时间线交替进行

总结

  • git branch 基于当前commit创建一个新的时间线(分支),我在那个分支提交,代码就出现再那个分支
  • git chekout 用于切换另一个分支,当前目录有没提交的代码,只要跟另一个分支不冲突,就不需要理会,如果冲突了呢?可以使用git stash,也可以合并冲突

考虑场景3

老板:昨天和老板娘达成一致,两个版本都要,我的放上面,老板娘的在下面

程序员:好的,我合并一下

git merge将另一个分支合并到当前分支

可能有冲突,也可能没冲突,要学会解决冲突

解决冲突的办法

发现冲突

你在合并分支的时候,会得到conflict提示

使用git status -sb 查看哪个/哪些文件冲突了

解决冲突

  • 依次打开文件
  • 搜索====四个等于号
  • 在上下两个部分中选择要保留的代码
  • 可以只选上面,也可以只选下面,甚至可以都选
  • 删除不用的代码,删除==== >>>> <<<<这些标记
  • git add对应文件
  • 再次git status -sb,解决下一个文件的冲突
  • 直到没有冲突,运行git commit(注意不需要选项)

总结

分支可以合并

进入要保留的分支,运行git merge x

合并完后删除无用的分支git branch -d x

合并时冲突怎么办

解决冲突即可

然后git commmit,使用默认的commit message

大总结

  • .git目录就是本地仓库
  • 它不会复制相同的文件(优化)
  • 它剋支持多个分支

一些细节

  • git add 处理的是文件变化,而不是文件,比如你删除一个文件后,依然要用git add来添加到待提交区
  • 大部分时候,你只需要知道git add .和git commit -v即可,其他命令很少用到

git 远程仓库GitHub

代码需要存储在云端

比如你需要在公司和家里写代码,比如的你笔记本坏了,比如你运行了rm-rf/

GitHub可以存储你的代码

只需要两行命令

git remote add origin git@ xxxxxx
git push -u origin master

但是我们要先解决一个问题

GitHub怎么知道是你在操作你的代码

SSH Key 验证身份

一些事实

推理

  • 你咋GitHub上有一个账号
  • 你的git仓库在你的电脑上。
  • GitHub怎么会知道这个电脑和这个账号都属于你呢?

答案

  • 每次输入一次密码(HTTPS协议),太不方便
  • 使用ssh key
  • 电脑上放私钥,GitHub账号里留下公钥
  • 上传代码是用私钥加密,GitHub用公钥解密
  • 如果解开了,说明是配对的

如何生成ssh key

生成ssh key

GitHub有帮助文档

运行ssh-keygen -t rsa -b 4096 -C你的邮箱

然后一直回车,直到没有提示

cat ~/.ssh/id_rsa.pub得到公钥内容,粘贴到GitHub

打开GitHub,在设置页面填入公钥

如何测试配对成功了

ssh -T git@github.com

如果问你yes/no,请回答yes并回车

设置了公钥就能上传和下载了

通过git pull/git push/git clone

上传代码

  • 现在可以上传代码了
  • 新建GitHub Repo,复制ssh地址
  • 复制页面里面的代码
git remote add origin git @xxxx
在本地添加远程仓库地址

origin是远程仓库的默认名字,可以换,建议不换

不要使用https://地址,因为每次都需要密码

git push -u origin master
推送本地master分支到远程origin的master分支

  • 如果提示你应该git pull...,你就git pull一下
  • git pull是先把远程分支合并到本地对应的分支
  • 如果远程分支没有更新果,才可以省略git pull

记住这个提示

如果push的时候遇到此提示

运行git pull

再重新运行之前的命令

原理示意图

如何上传其他分支

方法一

git push origin x:x

方法二

git checjout x
git push -u origin x

GitHub用来备份.git /而已

下载别人的代码

如何下载代码

  • git clone git @xxxxx[目标路径]
  • 如果是不同机器,要写上传新的ssh key(一机一key)
  • cd目标路径
  • git add /git commit /[git pull]/git push四连操作

如何下载某个分支

  • 先下载某个仓库,然后git checkout分支名

可以上传到两个远程仓库吗

只需要两句话

git remote add repo2 git@ xxxxxx

git push -u repi2 master

如果提示git pull

说明你新建项目的时候创建了一些文件

你只需要运行git pull之后再运行刚才的命令

国内GitHub的代替品

  • http://coding.net(腾旭战略投资)
  • gitlab.com
  • 码云http://gitee.com(开源中国)

远程仓库

只是本地仓库的备注,所以变化都要先commit到本地仓库,然后push到远程

无法下载部分代码,只能clone整个仓库

git 高级操作

使用bash alias 简化命令

gst/ga/gc/gl/gp

#

bash git 如何切换目录_【git】命令行与本地仓库/远程仓库相关推荐

  1. git命令推送本地到远程分支

        目录 git命令推送本地到远程分支 1.从命令行创建一个新的仓库 2.从命令行推送已经创建的仓库 3.删除远程 Git 仓库 fetch -p 修剪远程分支 Git复制已有分支到新分支开发 g ...

  2. git 修改commit_结合IDEA与命令行,解决常用git操作与特殊情况的最佳实践

    本文适合总觉得git操作不够顺滑,被各种分支问题搞得焦头烂额的Java业务开发同学. 如果是git的初学者,建议搜索下git其他入门教程,这方面资料很多,非常推荐git init一个新项目,然后本地操 ...

  3. IntelliJ IDEA下Git的配置与使用(命令行下)

    1. 安装Git并配置好Git 安装与配置参见Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)中的2.在本机安装Git与3.1 配置git. 2. 创建远程仓库 在gitee. ...

  4. linux如何切换到光盘,怎么刻录cd光盘-Linux切换目录之cd命令详解

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 在Linux cd(切换目录)命令是最重要和最广泛使用 ...

  5. git 入门教程之本地和远程仓库的本质

    本地仓库和远程仓库在本质上没有太大区别,只不过一个是本地电脑,一个是远程电脑. 远程仓库不一定非得是 github 那种专门的"中央服务器",甚至局域网的另外一台电脑也可以充当&q ...

  6. 【Gitlab】GIT回滚master分支到指定tag版本 并提交远程仓库

    [Gitlab]GIT回滚master分支到指定tag版本 并提交远程仓库 1 查看分支 git branch 2 切换到master分支 git checkout master 3 查看标签 git ...

  7. git 入门第二节 本地和远程仓库链接

    第一步 去远程git仓库上找到仓库路径复制下来 第二步 在git里输入命令符 git clone 路径 这样 远程文件就添加到了你git找到的目录里  从远端-本地 第三步cd 回到你要上传的目录 把 ...

  8. 【git学习】本地关联远程仓库

    目录 一.本地仓库关联远程仓库(新建仓库) 二.拉取远程分支到本地(已有远程仓库) 一.本地仓库关联远程仓库(新建仓库) 本地新建工程,然后关联远程git仓库并向远程仓库提交代码. 1.本地新建工程, ...

  9. Git 本地与远程仓库同步操作

    git fetch 做了些什么 git fetch 完成了仅有的但是很重要的两步: 从远程仓库 下载 本地仓库中缺失的 提交记录 更新远程分支指针(假设为 o/master) git fetch 实际 ...

最新文章

  1. Android官方模拟器root,在Android模拟器上如何获得root权限?
  2. 小程序组件 Vant Weapp 安装
  3. Linux Shell 截取字符串
  4. python float和int的区别_Python四种数值类型(int,long,float,complex)区别及转换
  5. GDCM:DICOM文件转储图像标题信息的测试程序
  6. 解题报告——习题2-5 分数化小数(decimal) 输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。
  7. 过去式加ed的发音_【思语小课堂】时态二三事:规则动词过去式的发音规则
  8. 数据清洗代码 寒老师
  9. 代码还原,IDA中使用的宏
  10. 浅析JS模块规范:AMD,CMD,CommonJS
  11. python数值运算函数代码_Python如何计算列表中所有数字的乘积?(代码示例)
  12. idea 设置author 设置黑色主题
  13. 本特利电涡流传感器330709-000-060-10-02-00
  14. 激光钎焊的主要工艺参数
  15. HTTP 长连接短连接使用场景是什么
  16. [LeetCode] 300 最长递增子序列 及返回这一子序列
  17. ThinkPHP 5.0 rewrite规则
  18. centos android模拟器,centos 7 安装android 模拟器genymotion
  19. 为了得到一个数的“相反数“,我们将这个数的数字顺序颠倒,然后再加上原先的数得到“相反数“。
  20. [tool] perforce

热门文章

  1. OpenCV3.1.0+VS2013测试程序
  2. Facebook 推机器视觉方案,能轻易读懂图片信息
  3. 数字后端基本概念介绍——Routing Blockage
  4. oracle 11g nlslang,常用数学符号的 LaTeX 表示方法
  5. 2440 6.0BSP 移植过程之显示驱动篇
  6. ORM框架之Mybatis(三)延迟加载、开启一二级缓存及使用注解增删改查
  7. linux开启权限继承,linux的一个权限问题(权限继承)
  8. 转载 2020-02-18 在KVM主机和虚拟机之间共享目录
  9. 转:Python 主进程被杀死时,如何保证子进程同时退出而不变为孤儿进程
  10. GDAL工具使用示例(一)