安装参考 Git官网
//查看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