课程目标
- 知道 GitHub 和 Git分别是什么,有什么作用
- 熟悉Git 的基本使用,能使用 Git 向 GitHub 提交代码
命令行与Git
1. 什么是命令行
- GUI(Graphical user interface)图形界面,例如QQ登录界面
- Cli(Command-line)命令行,例如windows开机代码界面
- Windows回车用两个字符表示(文本上移10+换行13)-next line + return
- Windows V.S. Linux
相同点:都是用Command-line来与系统进行交互
不同点:命令基本都不一样
Windows:cmd(默认)、PowerShell
Linux:Terminal、iTerm(Mac)
2.常用命令
- pwd 当前所处目录(当前路径的全称)。
- ls 当前目录下的所有文件都被打开(列出)。
-
ls -a 相较于ls会多出以
.
开头的文件,./ ../
。.
开头的文件可做隐藏文件。
./即当前目录;../即上一层目录。/可以省略
ls ./ 把当前目录的列表打开
ls ../ 把上一层目录的列表打开 -
ls -l 当前目录下所有文件的具体信息
drwxr-xr-x 1 hahadekuai 197121 3528024 十二 15 03:56 12306Bypass_1.10.74/
d 目录
rwx 管理员对它的权限
xr-x 用户组对它的权限
xr-x 当前用户对它的权限
hahadekuai 谁拥有它
35028024 它的大小,352多k
十二 15 03:56 时间
12306Bypass_1.10.74 文件名 -
cd 切换目录
~ 表示当前用户的根目录
cd .. 切换到上一层目录
cd+文件名前缀+tab自动补全文件名+回车。跳转到自动补全的目录 -
mkdir 创建目录。
madir+ 文件夹名 创建文件夹
touch+ 文件名 创建文件 -
mkdir -p 同时创建多个文档
mkdir -p a/b/c 同时创建a、b、c三个文档 -
rm
rm+ 文件名 删除文件
rm -rf+ 文件夹名 删除文件夹 -
mv 重命名
mv frank frank2
1.mkdir frank
mv frank frank2 移动frank文件到frank2
2.mkdir frank;mv frank frank2 创建frank文件,将frank重命名为frank2
mkdir frank && mv frank frank2
; 与 && 间区别:
; 是一个命令一个命令去执行,即使前面的命令错误,后面的命令一样会生成
&& 是前面的命令必须要成功,后面的命令才能运行 -
cp 复制
cp a b 把a复制成b -
echo
echo 1 > test.txt 把1的内容打到test.txt文件中 -
cat
cat test.txt 把test.txt文件中内容显示出来
浏览方法可用cat test.txt | less 用J K操作上下;按Q退出
| 管道,前面的命令传给后面的命令 -
head 显示命令的前几行
head -n 3 test.txt 显示test.txt.文本中前三行 - tail 显示命令的尾几行,用法同head
- du -sh 显示目录大小(多少k)
-
man xxx man阅读xxx手册
man ls 阅读ls的手册(与 -h; --help相同) - xxx -h 不是总被接受
-
xxx help
ls --help | less 阅读ls的帮助文档 -
path 告诉命令行去哪找命令(特殊使用方法,在计算机高级设置path环境变量中,在/user/bin后面+;文件名)
which ls 告知ls在哪里 - 命令行的使用规则:
命令行 子命令 -p --param --param2=xxx
参数里有空格加引号
大小写敏感(Windows不区分) -
vi与vim
输入:i(进入可编辑模式)
退出:ESC:qw 或 ESC ZZ
新手最常见的问题:怎么退出vim?输入:,write保存;再输入:quit。缩写:wq。
小技巧:
- alt+. 重复输入过的参数
- !! 重复上一层命令
- . 当前目录
- .. 上一层目录
- “ ” 告知是一个整体,参数中有空格是加引号
- ~ 当前所处目录
-
- 回到上一层目录,同..
cd - 同 cd .. 返回上一层目录
- 复制与粘贴 可用鼠标中键
Git命令
1.本地仓库(本地操作)
- git中红色表示不能被提交,绿色表示可以被提交。
-
git add .
添加所有.
开头的文件
git add *
添加所有除了.
开头的文件
add
文件是add
本次状态与上次状态之间的差别(变动);两次add
显示的是第二次add的状态
add
的是文件的改动,add
也会有开启文件跟踪的效果 -
commit
提交;把add过的变动提交到本地仓库中 -
git commit -m "本次提交内容的叙述"
一次提交多个add过的文件,- m "xxx"
可跳过vi编辑界面。 -
git commit -v
-v
会列出所有变更
git commit -v --amend
-
commit
后文件会被存储到head
的.git
本地仓库 -
git checkout -- readme.txt
丢弃工作区修改(撤销命令) -
git checkout -b dev
切换dev
分支 -
git diff readme.txt
查看的是readme.txt上一次add后,对其修改的内容;如修改后add到暂存区,则不会显示修改内容。 -
git log --pretty=oneline
查看提交记录(简短的) -
git reflog 十六进制编码
查看命令记录,寻找commit id
,用于恢复记录。 -
git reset --hard 十六进编码
回退版本 git reset HEAD readme.txt 把暂存区(add过的文本)的修改撤销,重放回工作区 之后用git checkout -- readme.txt,丢弃工作区修改
git checkout -- readme.txt 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态; 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。 总之,就是让这个文件回到最近一次git commit或git add时的状态。 --存在是为撤销修改,不填写--则为切换分支
- 删除文件的两种情形:
一、一般情况下,直接在文件管理器中把没用的文件删了,或者用rm命令删了。从版本库中删除文件分三步: 1.rm test.txt 2.git rm test.txt 3.git commit -m "remove test.txt"
二、删错了,想要恢复版本库的文件: git checkout -- test.txt
2.远程仓库(推送改动)
Git远程单人操作:
方法一:
1.empty repo(github上) 2.git clone 3.touch README.me 4.git add 5.git commit 6.git push
-
git clone +(https or ssh)
将远程仓库克隆到本地 git status 查看当前目录文件状态 git status -s (同git status --short) 简短查看 git status -b 显示在哪个分支上 git status -sb 以上两步的简写(绿色是本地分支,红色是远程分支)
-
origin 默认远程仓库仓库名
master 默认默认分支名
本地的分支名和对应远程的分支名可以不同
git remote add origin+git@github.com:fantasy-hub/test2.git
添加远程仓库 -
git push origin master:master
本地的master(前)分支push到远程的master(后)分支 origin仓库中
方法二:
1.mkdir test2 2.git init 3.touch README.md (vi README.md ) (cat README.md) 4.git add . 5.git commit . 6.git push --set-upsteam origin master (git push -u origin master 本地的master(前)分支push到远程的master(后)分支 origin仓库中 加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分 支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。)
Git远程多人操作
1.git push 2.UU README.md 这个文件冲突了 3.解决冲突:==== <<<< >>>> 4.git add . 5.git commit . 6.git push
git reset --hard HEAD
-
git pull
把GitHub的代码下载到Git上 -
git status -sb
运行提示UU
为冲突
解决冲突的方法:
1.vi README.me
去搜索====
2.往上找<<<<
本地冲突的部分,往下找>>>>
远程冲突的部分
之间的内容为本地和远程的冲突 -
git pull
与git fetch
区别:git fetch只同步仓库内容,对index中内容不做处理
优点:可以不关心冲突 -
git merge origin/master
把远程的master分支合并到当前
总结:
1.git clone 2.git pull 3.解决冲突 4.git push
解决冲突后又回到单人操作
1.git init 2.git add . 3.git commit . 4.git push( -u origin master)
新建远程分支
1.git branch feature1 新建feature1分支 git branch 查看分支,出现: feature1 *master *表示当前所在分支 2.git checkout feature1 切换到feature1分支 git branch 查看分支 3.git push origin feature1:feature1 把本地的feature1(前)push到远程的(feature1) 或 git push -u origin feature1 合并分支 4.git checkout master 切换到主分支 5.git merge feature1 合并分支 删除分支-本地分支 6.git branch -d feature1 删除分支 强制删除用D 7.git brach -a 可以查看所有的包括远程的分支(绿色是本地分支,橙色是远程分支) 删除分支-远程分支 8.git push origin :feature1 本地不写分支名,把空分支推送到feature1
重置
-
git reset
只要commit过,就不会丢失。即使reset --hard过 -
git reflog
恢复
3.GitHub
- GitHub是负责托管Git的远程仓库
GitHub生成SSH key的方法
- 创建仓库,如果要使用
Use SSH
,需要上传ssh public key
。
方法:
1.点击右上角头像,选中Settings
2.左边出现一列选项,选中SSH and SSH keys
3.右上角点击New SSH key (可利用谷歌搜索:coding.net 生成 ssh key。选中搜索结果第一个—SSH公钥配置 - Coding)
4.在生成工钥栏中,复制代码ssh-keygen -t rsa -b 4096 -C "your_email@example.com",添加到git中,连敲三个回车
5.在代码Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub.行中,选中后半部分复制。在git中输入:cat /c/Users/Administrator/.ssh/id_rsa.pub 回车
6.出现ssh-rsa引导的很长的代码——复制到github的key文本框中
全流程: