git命令

remote

1
2
3
4
5
6
7
❯ git remote -v
origin https://gitlab.ui.k8s.cn/sre/test.git (fetch)
origin https://gitlab.ui.k8s.cn/sre/test.git (push)
#添加
❯git remote add origin ssh://git@gitlab.ui.k8s.cn:2224/sre/test.git
#移除
❯ git remote remove origin

checkout

单个文件回滚

1
2
3
4
5
6
7
8
#获取版本commit SHA-1 标识符前8位
git log

#回滚到指定版本
git checkout 0ebdd2639e8 _config.yml

#撤消此更改并还原文件的最新版
git checkout HEAD index.html

如果有其他分支,不会clone到本地

1
2
3
4
5
git branch -a

git checkout -b src origin/src

git pull origin src

log

查看提交历史,其中包含每个提交的详细信息,包括提交消息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
❯ git log -n2
commit cb2c4d369dc59d0cb93d3042cf17e309da849a6b (HEAD -> main)
Author: cs <cs876321722@outlook.com>
Date: Tue Feb 13 14:01:52 2024 +0800

up main

commit cda0cdddd2de6b03346a12fe477a076ebfeb068e
Author: cs <cs876321722@outlook.com>
Date: Tue Feb 13 11:53:44 2024 +0800

up ci.yml
❯ git log --format="%h %s" -n2
cb2c4d3 up main
cda0cdd up ci.yml

%h: 提交的缩短哈希值。
%H: 提交的完整哈希值。
%s: 提交消息的主题(第一行)。
%b: 提交消息的正文部分(除去主题部分)。
%an: 作者的名称。
%ae: 作者的电子邮件地址。
%ad: 作者日期(默认格式)。
%ar: 相对日期(例如,“2 weeks ago”)。
%cn: 提交者的名称。
%ce: 提交者的电子邮件地址。
%cd: 提交日期(默认格式)。
%cr: 相对日期(例如,“2 weeks ago”)。

rebase

git rebase -i [startpoint] [endpoint]指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。

1
git rebase -i HEAD~3

这里的 HEAD~3 表示合并最近三次的提交修改

将第3行的 pick 改为 s, “s” 为 “squash” 的缩写,“squash” 的意思是将这个提交压缩为最后一次提交:wq

如果是个人分支 git rebase -i 最后一次commitID, s屏蔽其他,只保留一个

当出现Successfully rebased and updated refs/heads/xxx.表示合并成功了

merge

合并分支(开发分支dev合并到主分支master)

1、首先切换到master分支上
git checkout master
2、确保master代码是最新的代码
git pull origin master
3、然后我们把dev分支的代码合并到master上
git merge dev
4、然后查看状态及执行提交命令
git status

cached

文件从 Git 跟踪中删除,但将其保留在文件系统

1
git rm --cached <file>

git rm #将文件从 Git 仓库和文件系统中完全删除

show

1
2
3
4
5
#查看已添加到 Git 索引的文件内容
git show :_config.yml

# <commit> 是要查看的提交的 SHA-1 标识符
git show <commit>:<path>

pull

稀疏检出sparse checkout

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/bash

print_help() {
cat <<EOF
use params
-h , --help 说明 不支持分支
-u , --url *必须,下载文件的链接(如https:://github.io/xx/tree/master/a/b ,下载b)
EOF
}

function src(){
if [[ "$1" =~ "github.com" ]] || [[ "$1" =~ "gitee.com" ]];then
echo "downloadUrl--> $1"
else
echo "不支持"
exit 1
fi
}

while [ $# -ge 0 ]; do
case $1 in
-h|--help)
print_help
exit 1
;;
-u|--url)
src $2
break
;;
* )
echo "use param -h or --help !"
exit 1
;;
esac
done
function type(){
uri=$(echo $1 | grep "/tree/master/" | grep -v grep)
echo "---$uri"
if [[ $uri != "" ]];then
echo "-------/tree/master"
uri=${url%/tree/master*}".git"
down=${url#*/tree/master/}
else
echo "-------/blob/master"
uri=$(echo $1 |grep -v grep | grep "/blob/master/")
if [[ $uri != "" ]];then
uri=${url%/blob/master*}".git"
down=${url#*/blob/master/}
else
echo "只支持拉取master文件下载"
exit 1
fi
fi
}

url=$2

file=${url##*/}

uri=
down=
type $2


if [ ! -f "$file" ];then
mkdir $file
fi
cd $file

git init
echo "==================添加 源==================="
git remote add -f origin $uri
#稀疏检出
git config core.sparsecheckout true
#拉取文件
echo "$down">>.git/info/sparse-checkout
echo "==================开始拉取==================="
git pull origin master

rm -rf .git
mv $file/* . && rm -r $file

echo "==================$PWD==================="

利用git稀疏检出拉取部分文件

js实现下载

kinolien gitzip

点击打赏
文章目录
  1. 1. remote
  2. 2. checkout
  3. 3. log
  4. 4. rebase
  5. 5. merge
    1. 5.1. cached
  6. 6. show
  7. 7. pull
  8. 8. js实现下载
载入天数...载入时分秒... ,