在Ubuntu使用git
-
- 1.1在本地创建一个名为 YOUR_NAME-learning-git 的目录,并用Git管理目录
- 1.2在目录中创建一个 exercise-1.txt 的文件,在其中添加任意文字,并将添加的文字提交到版本库;
- 1.3分别创建 exercise-2.txt , exercise-3.txt 文件,在其中添加任意文字,并将添加的文字提交到版本库;
- 2.1任意修改 exercise-2.txt 文件,然后使用Git命令撤销修改,注意在过程中使用恰当的Git命令查看状态和比较变化;
- 2.2任意修改 exercise-2.txt 文件,添加到Staging区,然后使用Git命令撤销修改, 注意在过程中使用恰当的Git命令查看状态和比较变化;
- 2.3任意修改 exercise-2.txt 文件,提交修改,然后使用Git命令撤销修改, 注意在过程中使用恰当的Git命令查看状态和比较变化;
- 2.4使用恰当的Git命令,查看各个提交的历史状态,在各个历史提交中反复切换;
- 3.3在本地工作区任意创建三个文件,分别写入任意内容,提交,并推送到GitHub;
- 一般每天早上都干的事
- 3.4给你的 GitHub organization 创建一个 Profile
- 3.5
- 4.1写hello world shell脚本
- 创建自定义命令 。本来输./topc,现在是topc
- 4.2一些命令
- grep 过滤 把匹配的东西取出来
- 4.3传参
- 4.4 折行
- 4.5经典组合
- 4.6快捷键
- 5.1当用户执行todo命令且未提供任何参数时,应输出关于使用方式的提示信息
- 5.2用户在初次使用时,须先执行该命令以进行必要的初始化操作,如:创建保存数据的文件。执行成功后输出Initialized successfully.以下文本以提示用户。
- 如用户忘记在第一次使用前运行该命令,则提示用户Please run 'todo init' before running '' command.`
- 用户通过add命令来向待办清单中添加新的待办任务
1.1在本地创建一个名为 YOUR_NAME-learning-git 的目录,并用Git管理目录
参考了以下文章:
Ubuntu创建Git仓库并上传到GitHub
Ubuntu创建git repository并连接到GitHub
1.本地安装git和在github上注册账号
2.SHH认证及设置用户名和邮箱
ssh-keygen -t rsa
之后在 ~/.ssh/ 目录下可以看到 id_rsa 和 id_rsa.pub 两个文件。
这两个就是 SSH Key 的秘钥对,其中,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥。
在github依次选择“Settings –> SSH and GPG keys –> New SSH key”,填上适当的 Title,并复制 id_rsa.pub 文件的内容粘贴在 Key 文本框里。
执行:
ssh -T [email protected]
成功显示:Hi github! You’ve successfully authenticated, but GitHub does not provide shell access.
3.设置用户名和邮箱为注册Github时的名字
git config --global user.name "name"
git config --global user.email "email"
4.创建本地的repository,后期将其链接至GitHub,需要注意创建的名字等信息。此时注意所在的文件夹(pwd)
git init repository_name
5.下面是如何链接至GitHub上。
在GitHub网页中创建新的repository,name需与repository_name完全一致。(此时需要创建一个全空的repository)在本地刚刚创建的git项目文件路径下。
在此之前还得在github上先生成token,再应用token,看这篇文章:
【解决】remote: Support for password authentication was removed on August 13, 2021
修改现有项目的url
git remote set-url origin https://<your_token>@github.com//.git
将<your_token>换成你自己得到的令牌。是你自己github的用户名,是你的项目名称
因为
我的token是:
Token:ghp_CF4Y9htZ0vc。。。wxQ6dD9kw2gLl4h
项目地址是:
所以链接github仓库的的指令是:
git remote add origin https://ghp_CF4Y9htZ0vc。。。[email protected]/gtb-2022-wang-baixuan/homework-git-101
解除:
git remote rm origin
1.2在目录中创建一个 exercise-1.txt 的文件,在其中添加任意文字,并将添加的文字提交到版本库;
- touch + akk.txt(文件名 )
创建文件akk.txt文件
- ls 查看所有文件
- vi akk.txt
vi为进入vim编辑器命令,意为在vim编辑器中编辑akk.txt文件
可以输入a后,按tab键,可以自动补全a开头的文件
i ,编辑
- :wq
保存并退出
提交到版本库
- 查看暂存区状态
git status
- 把 exercise-1.txt文件加到暂存区
git add exercise-1.txt
- 把暂存区的改动提交到github的云代码库上去
git commit -m"修改内容为wxb2"
4.将本地repository的文件同步至GitHub
git push origin master
如果失败了就试试这个
git push origin main
1.3分别创建 exercise-2.txt , exercise-3.txt 文件,在其中添加任意文字,并将添加的文字提交到版本库;
同上
2.1任意修改 exercise-2.txt 文件,然后使用Git命令撤销修改,注意在过程中使用恰当的Git命令查看状态和比较变化;
清空已经在本地修改但没add的东西,也删掉修改记录
git checkout .
2.2任意修改 exercise-2.txt 文件,添加到Staging区,然后使用Git命令撤销修改, 注意在过程中使用恰当的Git命令查看状态和比较变化;
撤回已经add但没commit的东西,也删掉那条log记录
git reset --hard head^
本质是让head指针指向当前head之前的第一个命令
git指向7d98那条log
2.3任意修改 exercise-2.txt 文件,提交修改,然后使用Git命令撤销修改, 注意在过程中使用恰当的Git命令查看状态和比较变化;
head指向已经commit的某个版本号,但是不会删什么东西
git reset --hard 7d8421acdf638d80cc59f2d51d60800171541c1b
2.4使用恰当的Git命令,查看各个提交的历史状态,在各个历史提交中反复切换;
看以前的提交log用
git reflog
就能找到曾经某个版本号
3.3在本地工作区任意创建三个文件,分别写入任意内容,提交,并推送到GitHub;
- mkdir创建文件,touch创建文档,写入内容
- 创建一个repo,名字与这个文件名字相同
- 创建git文件
git init
- 加入一个远程链接
git remote add origin https://[email protected]/gtb-2022-wang-baixuan/homework-git-101-remote-1
- 推送上去
git push origin master
如果链接加错了可以删除,然后重加
git remote rm origin
一般每天早上都干的事
- git pull --rebase
- (Make some changes)
- git add && git commit
- git pull --rebase
- git push
3.4给你的 GitHub organization 创建一个 Profile
用来介绍主页的
- your organization does not already have a public .github repository, create a public .github repository.创建一个repository叫 .github。
- In your organization’s .github repository, create a README.md file in the profile folder.创建一个文件叫profile,在profile文件离创建README.md介绍。
- Commit the changes to the README.md file. The content of the README.md will appear on your organization’s profile.
3.5
先 让某个文件回归最初状态
git stash -- src/db-connection.ts
还原到刚才状态
git stash pop
4.1写hello world shell脚本
- 先修改文件、目录的权限
chmod +x topc 添加 可执行权限
不然就会报错: Permission denied
- 在topc中第一行写
#!/usr/bin/env bash
#!/bin/bash是指此脚本使用/bin/bash来解释执行。
其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。
bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,…
- 写个hello world
在下面写
echo 'hello world'
- 看看脚本运行结果
命令行cli输入
./topc
创建自定义命令 。本来输./topc,现在是topc
sudo ln -s $PWD/topc /usr/local/bin/
覆盖掉之前的:
sudo ln -sf $PWD/topc /usr/local/bin/
4.2一些命令
- cut
cut -d' ' -f1
以’ ’ 为分隔符,取第一个字段
-sort 排序
sort -n 以数字排序 - uniq -c
排序并 统计数量 - head 打印前10行命令
head -20打印前20 - sed ‘///’ 替换 分隔符可以是其他符号,比如 sed ‘###’
sed ‘///g’ 有g表示这一行所有匹配到的字符串都进行替换。
sed -E ‘s/^sudo //’ 把以sudo开头后面带个空格的替换成无,就是删掉 e是表达式 expression的意思
sed ‘s/|/\n/’ 把|替换成回车
sed ‘s/ *| */\n/’ 处理管道符,变成几行 案例:echo “ps aux | grep shell”|sed ‘s/ *| */\n/’
|sed ‘s/^ +//’\ 把开头空格删掉
sed -i for循环里取变量
grep 过滤 把匹配的东西取出来
grep -E '^echo ′ 把 e c h o 取 出 来 g r e p − E − v ′ e c h o ' 把echo取出来 grep -E -v '^echo ′把echo取出来grep−E−v′echo’把除了echo的取出来
- awk
4.3传参
declare -r INPUT_FILE="${1:?input file is required}"
cat "${INPUT_FILE}" |cut -d' ' -f1|sort|uniq -c|sort -n
- 1:?input file is required 第一个参数,如果为空报出提示信息input file is required
4.4 折行
x像这样,以\结尾 ,管道符开始
#!/usr/bin/env bash
declare -r INPUT_FILE="${1:?input file is required}"
cat "${INPUT_FILE}" \
|sed 's/ *| */\n/'\
|cut -d' ' -f1\
|sort\
|uniq -c\
|sort -n
4.5经典组合
|sort|uniq -c|sort -n
4.6快捷键
ctrl+r 在历史记录里搜索某个命令
5.1当用户执行todo命令且未提供任何参数时,应输出关于使用方式的提示信息
if [[ $# -eq 0 ]] ; then
echo "usage: todo <init|list|add|edit|remove|reset|mark|unmark> [args]"
fi
$# :输入参数的个数
5.2用户在初次使用时,须先执行该命令以进行必要的初始化操作,如:创建保存数据的文件。执行成功后输出Initialized successfully.以下文本以提示用户。
if [[ $1 == 'init' ]] ; then
mkdir -p "$HOME/.todo"
touch "$HOME/.todo/tasks"
echo "Initialized successfully."
fi
mkdir -p 创建多级目录
如用户忘记在第一次使用前运行该命令,则提示用户Please run ‘todo init’ before running ‘’ command.`
if [[ ! -f "$HOME/.todo/tasks" ]] ; then
echo "Please run 'todo init' before running '$1' command."
fi
-f文件存在
用户通过add命令来向待办清单中添加新的待办任务
shift 销毁栈顶参数
grep -o: 只输出匹配的具体字符串,匹配行中其他内容不会输出
wc -l 文件行数