学习在Ubuntu使用git

在Ubuntu使用git

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

保存并退出


提交到版本库

  1. 查看暂存区状态
git status
  1. 把 exercise-1.txt文件加到暂存区
 git add exercise-1.txt
  1. 把暂存区的改动提交到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;

  1. mkdir创建文件,touch创建文档,写入内容
  2. 创建一个repo,名字与这个文件名字相同
    在这里插入图片描述
  3. 创建git文件
git init
  1. 加入一个远程链接
git remote add origin https://[email protected]/gtb-2022-wang-baixuan/homework-git-101-remote-1
  1. 推送上去
git push origin master

如果链接加错了可以删除,然后重加

git remote rm origin

一般每天早上都干的事

  1. git pull --rebase
  2. (Make some changes)
  3. git add && git commit
  4. git pull --rebase
  5. 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 echogrepEvecho’把除了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 文件行数

猜你喜欢

转载自blog.csdn.net/qq_30738155/article/details/124082994