Git

277 阅读4分钟

安装参考 Git官网

截屏2021-06-16 下午8.47.29.png

//查看git版本
git --version 

//配置用户信息
git config --global user.name '用户名'
git config --global user.email '邮箱'

$ git config --local //只对某个仓库有效
$ git config --global // 对所有仓库有效
$ git config --system //对系统所有登录的用户有效

//加--list 显示config的配置
$ git config --list --local
$ git config --list --global 
$ git config --list --system 

//拷贝文件
cp ../fileName .

//创建文件夹
mkdir directory

//删除 Untracked files
git clean -f

//在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nf

//删除工作区和暂缓区文件,直接git commit
git rm ss.txt
//需要添加到暂存区 git add . & git commit
rm -rf ss.txt  

//用git修改 修改文件名
git mv movie.mp4 test.mp4 

//修改上次提交的信息
git commit --amend

//查看工作区和暂缓区的变化
git diff
//查看文件内容的变化 暂存区和HEAD
git diff --cached 
//查看不同分支文件内容的变化
git diff temp master --ss.txt 

//拉去远程分支内容
git fetch origin main

//删除所有没有tracked过的文件
git clean -f
//删除所有没有tracked过的文件和文件夹
git clean -df

//拉去代码
git pull origin master --allow-unrelated-histories

本地版本回退

//--soft 指针移动,工作区、暂存区不动,重置本地仓库回到暂存区
git reset --soft HEAD^  // git reset --soft b986a553227ab

// --mixed 为默认可以省略, 指针移动,工作区不动,重置暂存区和本地仓库回到工作区
git reset --mixed HEAD^ // 或 git reset HEAD^

//--hard 指针移动,重置工作区、暂存区不动、本地仓库,Untracked files不会被清除
git reset --hard HEAD^ // git reset --hard HEAD^

//内容从暂存区变为工作区 未commit 清空暂缓区内容,对工作区没影响回到add . 前的状态 ,但文件内容并没有重置 需要执行 git checkout重置工作区
git reset HEAD 
git reset HEAD --ss.txt //指定文件
//内容从暂存区变为工作区 已commit
git reset 'HEAD^' 

git reset HEAD  -- ss.txt //暂缓区清空指定文件
git reset --hard b986a553227ab //退回到指定的提交位置⚠️⚠️⚠️
git reset --hard HEAD^ //工作区和暂存区内容回退 清空本次修改


#=> 取消工作区文件的修改
//指定文件
git checkout -- ss.txt 
//所有文件
git checkout .
git restore

远端版本回退

//方式一: 无法找回回退内容了
git reset --hard 2d9152b
git push -f origin master

查看提交记录

git log  
git log --oneline //只展示提交备注
git log -n2 --oneline//只展示2条提交备注

变基

git rebase -i 4696909dd //基于某个 xw“你commit,修改messagebbbbbbbbbbbbbbbbbbvcq789p['

//切换到test分支
git checkout test
//合并master代码
git rebase master

#=>有冲突先处理冲突,处理完毕
git commit -a -m '处理冲突'
git rebase --continue

//切换回master分支
git checkout test
//合并master代码
git rebase master
//推送到远程分支
git push origin master

贮藏

//将修改的内容贮藏起来
git stash
git stash list //暂存列表
git stash apply //恢复暂存区的内容
git stash pop //恢复暂存区的内容,并删除暂存列表的记录

代码提交到远程仓库

git init
git add . //添加到暂缓区
git commit -m '初始化' //提交到本地的代码仓库
git branch -M main //修改分支名称
git remote //查看远程关联
git remote add origin xxxxxx  //添加远程仓库关联
git push -u origin main //提交代码到远程仓库 -u 以后就可以直接使用git push

多个远程仓库

关联远程仓库
git remote add origin https://gitee.com/author/projectName.git
//默认orgin 远程主机名
git push origin master
git remote -v

//关联另一个远程仓库
git remote add github https://github.com/author/projectName.git
git push github master:main

分支

//创建分支
git branch tangge
git checkout -b yang 651a109 //基于某个commit
git checkout -b hanghang tangge //基于某个分支
//查看本地有多少分支
git branch -v

//创建并切换分支
git checkout -b temp 

//删除分支
git branch -D temp

//推送分支
git push --set-upstream github test

标签

标签可以关联版本号,版本号可以找到对应代码
git tag 查看本地标签
git show v1.0 查看具体的标签
git ls-remote --tags 查看远程标签
git tag -a '0.0.1' -m '打标签'
git push --tags  | git push origin '0.0.1' 标签提交到远程仓库
git tag -d '0.0.2' 删除本地标签
git push origin main :'0.0.2' 删除远程标签
git push origin --delete '0.1.0' 删除远程标签

git-flow

长期分支
  • master
  • devlop
任务分支
  • feature
    分支走向 develop -> feature -> develop
  • release 分支走向 develop -> release -> master / develop
  • hotfix 分支走向 master -> hotfix -> master / develop

克隆时指定用户名和密码

//仓库地址添加username:password
git clone https://username:password@github.com/author/gitTest.git
git常见问题
remote: Support for password authentication was removed on August 13, 2021.
git remote set-url github https://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@github.com/author/projectName.git
git push 403问题 本地缓存了用户名和密码
git remote set-url origin https://tanggev587@github.com/TangGeV587/gitTest.git //重置用户名和密码
Note about fast-forwards
git pull origin master --allow-unrelated-histories
git转义

有时候git url路径中含有特殊字符会报错,比如

Couldn't resolve 'host456@xxx.xxx.com'

url = "https://username:123%40456@xxx.xxx.com/router/conf.git"

字符转义参照表

空格             -   %20
"		-   %22
#		-   %23
%		-   %25
&		-   %26
(		-   %28
)       	-   %29
+       	-   %2B
,		-   %2C
/		-   %2F
:		-   %3A
;		-   %3B
<		-   %3C
=		-   %3D
>		-   %3E
?		-   %3F
@		-   %40
\      		-   %5C
|      		-   %7C
.		-   %2E