Git命令大全
vscode没有git bash的解决方案
1. [ctrl+,] 打开vscode配置页, 输入 Shell:Windwos
2.修改内容如下
3.修改默认终端
还不行,直接重装 下载之后,无限下一步
安装完git 先设置用户名和邮箱
git config --global user.name "Fhup"
git config --global user.email "xxx@qq.com"
# 查看配置
git config --list
git config --local --list (查看当前仓库的配置)
git config --global --list (查看git全局的配置)
配置别名
git config --global alias.co checkout
git checkout => git co
打开git的文档
git config --help // https://git-scm.com/docs/git-config
创建git本地仓库(进入要管理的文件夹)
git init
查看提交历史
git log
git log --pretty=oneline --graph 多分支提交历史
git reflog (查看所有的提交历史 包括你回退版本之后消失的历史)
版本回退 (head指向最后一次提交的快照,相当于指针)
ssh密钥进行验证
# git bash中使用这个命令,生成公钥和私钥
ssh-keygen -t rsa -b 2048 -C "your email" rsa格式
ssh-keygen -t ed25519 -C "your email"
# 生成的.pub文件中的字符串就是公钥
查看远程地址
git remote -v
拉取
git pull = git fetch(先从远程获取代码库) + git merge(在合并)
合并
git merge (将远程仓库相同的分支进行合并)
git merge dev (在当前所在分支合并dev分支) --有可能导致冲突
添加远程地址 (注意远程分支的形式为: origin/xxx)
git remote add '别名(origin)' https://gitee.com/Fhup/test-git.git
git remote -v 查看远程地址
#注意: 添加完远程分支要指定上游分支,git不知道你本地的分支要连接远程仓库的那个分支
git pull 不知道要拉取那个分支的代码
1.git pull origin(别名) master
2.git branch --set-upstream-to=origin/master 设置上游分支(跟踪分支)
git pull 然后进行拉取
#上面二种方式还是会报错
fatal: refusing to merge unrelated histories(拒绝合并未关联的历史)
#解决方案: 允许合并
git pull --allow-unrelated-histories
#解决本地master分支push到远程main分支
#方案1:
假如本地为master分支,远程仓库为main分支,设置完上游分支main.进行git push时报错,因为git push的默认
行为是simple,会push到远程仓库的master分支中,但远程仓库为main分支,找不到master分支,所以会报错.将
git push的默认行为改为upstream,就会push到上游分支main中.
tips: 设置git push的默认行为: git config push.default upstream
#方案2:
git checkout --track origin/main 默认给本地创建一个新的main分支,跟踪远程的main分支
上传
git push (git push在config中配置了默认行为)
- simple: 本地当前分支push到远程相同名字的分支,没有就报错(默认行为)
- current: 本地当前分支push到远程相同名字的分支,没有就创建.
- upstream: 上游分支,设置上游分支: git branch --set-upstream-to=origin/master
设置git push的默认行为: git config push.default upstream (没有--global,针对当前仓库)
git config --local --list 查看当前仓库的配置
git push origin head:main (head头默认指向master,作用与下一行一致)
git push origin master:main (意思是:把本地的master分支push到远程的main分支)
git push origin master (把本地的master分支push到远程的master分支)
使用最多的命令
git add .
git commit -m 'Fhup'
git pull
git push
git commit -a -m 'Fhup' (替代: git add . + git commit)
标签tag (切换到tag时不能进行修改,要修改创建分支)
打标签
git tag (查看标签)
git tag v1.0.0 (打标签)
#标注标签
git tag -a v1.1.0 -m '升级数据库'
git show v1.1.0 查看标签信息
将标签上传到远程服务器
git push origin v1.1.0 (某一个)
git push origin --tags (所有的标签)
删除tag
#本地tag
git tag -d v1.0.0
#远程tag
git push origin -d v1.1.0
切换tag(检出)
git checkout v1.1.0
git reset 23edd…… 回退到某个版本 或者 git checkout master 切换回主分支
分支
创建分支
git branch dev (创建一个dev分支,指向最后一次提交)
切换分支
git checkout testing
创建分支并切换分支
git checkout -b prod = (git branch prod + git checkout prod)
移除本地仓库某个分支
git branch -d prod (在主分支移除某个分支)
本地有prod,远程没有prod
git push origin prod 给远程创建一个prod分支
git push --set-upstream origin prod 设置上游分支进行git push
跟踪某个分支
git checkout --track origin/xxx 跟踪远程仓库的xxx分支,并给本地创建xxx分支
简写如下:
git checkout xxx 检测远程仓库有无xxx分支,有xxx给本地仓库创建xxx,并跟踪远程仓库的xxx分支
删除远程分支
git push origin -d prod
git的rebase理解
feature分支中,bbb是其base. feature分支中执行git rebase master, foo就作为其base.
切换到master分支,执行 git merge feature.就会变为线性.(master和feature指向最新记录)