bash git 如何切换目录_【git】命令行与本地仓库/远程仓库
终端里如何复制粘贴
在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】命令行与本地仓库/远程仓库相关推荐
- git命令推送本地到远程分支
目录 git命令推送本地到远程分支 1.从命令行创建一个新的仓库 2.从命令行推送已经创建的仓库 3.删除远程 Git 仓库 fetch -p 修剪远程分支 Git复制已有分支到新分支开发 g ...
- git 修改commit_结合IDEA与命令行,解决常用git操作与特殊情况的最佳实践
本文适合总觉得git操作不够顺滑,被各种分支问题搞得焦头烂额的Java业务开发同学. 如果是git的初学者,建议搜索下git其他入门教程,这方面资料很多,非常推荐git init一个新项目,然后本地操 ...
- IntelliJ IDEA下Git的配置与使用(命令行下)
1. 安装Git并配置好Git 安装与配置参见Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)中的2.在本机安装Git与3.1 配置git. 2. 创建远程仓库 在gitee. ...
- linux如何切换到光盘,怎么刻录cd光盘-Linux切换目录之cd命令详解
请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 在Linux cd(切换目录)命令是最重要和最广泛使用 ...
- git 入门教程之本地和远程仓库的本质
本地仓库和远程仓库在本质上没有太大区别,只不过一个是本地电脑,一个是远程电脑. 远程仓库不一定非得是 github 那种专门的"中央服务器",甚至局域网的另外一台电脑也可以充当&q ...
- 【Gitlab】GIT回滚master分支到指定tag版本 并提交远程仓库
[Gitlab]GIT回滚master分支到指定tag版本 并提交远程仓库 1 查看分支 git branch 2 切换到master分支 git checkout master 3 查看标签 git ...
- git 入门第二节 本地和远程仓库链接
第一步 去远程git仓库上找到仓库路径复制下来 第二步 在git里输入命令符 git clone 路径 这样 远程文件就添加到了你git找到的目录里 从远端-本地 第三步cd 回到你要上传的目录 把 ...
- 【git学习】本地关联远程仓库
目录 一.本地仓库关联远程仓库(新建仓库) 二.拉取远程分支到本地(已有远程仓库) 一.本地仓库关联远程仓库(新建仓库) 本地新建工程,然后关联远程git仓库并向远程仓库提交代码. 1.本地新建工程, ...
- Git 本地与远程仓库同步操作
git fetch 做了些什么 git fetch 完成了仅有的但是很重要的两步: 从远程仓库 下载 本地仓库中缺失的 提交记录 更新远程分支指针(假设为 o/master) git fetch 实际 ...
最新文章
- Android官方模拟器root,在Android模拟器上如何获得root权限?
- 小程序组件 Vant Weapp 安装
- Linux Shell 截取字符串
- python float和int的区别_Python四种数值类型(int,long,float,complex)区别及转换
- GDCM:DICOM文件转储图像标题信息的测试程序
- 解题报告——习题2-5 分数化小数(decimal) 输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。
- 过去式加ed的发音_【思语小课堂】时态二三事:规则动词过去式的发音规则
- 数据清洗代码 寒老师
- 代码还原,IDA中使用的宏
- 浅析JS模块规范:AMD,CMD,CommonJS
- python数值运算函数代码_Python如何计算列表中所有数字的乘积?(代码示例)
- idea 设置author 设置黑色主题
- 本特利电涡流传感器330709-000-060-10-02-00
- 激光钎焊的主要工艺参数
- HTTP 长连接短连接使用场景是什么
- [LeetCode] 300 最长递增子序列 及返回这一子序列
- ThinkPHP 5.0 rewrite规则
- centos android模拟器,centos 7 安装android 模拟器genymotion
- 为了得到一个数的“相反数“,我们将这个数的数字顺序颠倒,然后再加上原先的数得到“相反数“。
- [tool] perforce
热门文章
- OpenCV3.1.0+VS2013测试程序
- Facebook 推机器视觉方案,能轻易读懂图片信息
- 数字后端基本概念介绍——Routing Blockage
- oracle 11g nlslang,常用数学符号的 LaTeX 表示方法
- 2440 6.0BSP 移植过程之显示驱动篇
- ORM框架之Mybatis(三)延迟加载、开启一二级缓存及使用注解增删改查
- linux开启权限继承,linux的一个权限问题(权限继承)
- 转载 2020-02-18 在KVM主机和虚拟机之间共享目录
- 转:Python 主进程被杀死时,如何保证子进程同时退出而不变为孤儿进程
- GDAL工具使用示例(一)