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(注:该区间指定的是一个前开后闭的区间)。
这里的 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 跟踪中删除,但将其保留在文件系统
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