Git命令大全

217 阅读4分钟

Git命令大全

vscode没有git bash的解决方案

1. [ctrl+,] 打开vscode配置页, 输入 Shell:Windwos

image.png

2.修改内容如下

image.png

3.修改默认终端

image.png

还不行,直接重装 下载之后,无限下一步

安装完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指向最后一次提交的快照,相当于指针)

image.png

ssh密钥进行验证

# git bash中使用这个命令,生成公钥和私钥
ssh-keygen -t rsa -b 2048 -C "your email"  rsa格式
ssh-keygen -t ed25519 -C "your email"
# 生成的.pub文件中的字符串就是公钥

image.png

查看远程地址

git remote -v

image.png

拉取

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分支

可以看这个解除困惑

image.png

上传

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

image.png

创建分支并切换分支

git checkout -b prod = (git branch prod + git checkout prod)

image.png

移除本地仓库某个分支

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理解

image.png

feature分支中,bbb是其base. feature分支中执行git rebase master, foo就作为其base.

image.png

切换到master分支,执行 git merge feature.就会变为线性.(master和feature指向最新记录)

image.png

注意: 永远不要在主分支上使用rebase,log记录变得错综复杂不好维护.

git flow (工作流)

二种常见的git flow

image.png

image.png

最后,附上速查表 A5B82A00DE71A0F92EF23E79FD2911F6.png

image.png