git 总结
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git bash
git cmd
git gui
$ git config --global user.name "youlishu"
$ git config --global user.email "xxxxxxxxxxxxxxxxxxxxxxxx"
git config --list
q
:退出配置 VSCode 为 git bash
项目的两种情况
初始化一个git仓库:git init
将当前目录的所有东西加入到git暂缓区:git add .
将所有文件提交到本地仓库里面:git commit -m "初始化项目"
查看提交的信息:git log
git clone 地址
在实际开发中,需要将某些文件交由这个Git仓库来管理。
并且我们之后会修改文件的内容,当达成某一个目标时,想要记录下来这次操作,就会将它提交到仓库中。
需要对文件来划分不同的状态,以确定这个文件是否已经归于Git仓库的管理。
对文件状态进行划分:
Untracked
未跟踪的文件
git add 文件名
使得该文件被追踪tracked
:已跟踪的文件staged
:暂存区(索引区)中的文件状态,已经在跟踪了
git commit -m "提交信息"
将文件提交到缓存(本地仓库)中git commit -a -m ""
git rm --cached 文件名
unmodified
commit
命令,可以将staged
中文件提交到 Git 仓库modified
:修改了某个文件后,会处于 Modified 状态,暂时没有进行缓存,需要重新 commitgit status
添加到暂缓区:git add js/nba.js
提交:git commit -m "修改了nba文件"
查看更加简洁的信息
git status -s
git status --short
git add aaa.js
git add .
git status
看所需要文件是否暂存起来了git commit -m "提交信息"
git ls-files
git reset --soft
git commit --amend -m ""
git log
git log --pretty=oneline --graph
git log --pretty=oneline
space
查看下一条git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard~1000
git reset --hard [commit id]
后面的commit id
通过git reflog
命令查看
commit id
:校验和,可选择前面七/八位git tab v1.0
git tag -a v1.2.0 -m "附注标签"
git push origin --tags
git push origin v1.0
git push origin -d v1.0.0
# 选择以下其中一种
ssh-keygen -t ed25519 -C "your email"
ssh-keygen -t rsa -b 2048 -C "your email"
.ssh
中可以找到ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJnhey0vDCpD4FS+Flv530fNTu09YYSHGeb [email protected]
git remote
git remote add origin(名字) 远程仓库地址
git pull
fetch+merge
git clone 地址
git push
:将本地仓库的代码推送到远程仓库中
push
到 origin远程仓库 :git push origin master
git fetch
从远程仓库中获取代码
origin远程仓库
中获取代码:git fetch origin master
git merge
:通过merge
来合并当前的代码
git merge origin/master
git pull:从远程仓库中pull
代码
git fetch + git merge(rebase)
git remote add origin xxxxx
git pull origin master --allow-unrelated-histories
git push --set-upstream origin master
git add .
提交后编译成二进制文件git cat-file -t f178
查看是什么文件git cat-file -p f178
查看文件内容commit
对象,通过parent
属性连接在一起commit
对象形成的工作流是在整个分支里面完成的,这个分支是默认情况下git帮我们创建的分支master
master分支
每次提交时自动移动本质
git branch testing
git checkout testing
git checkout -b dev
git branch
为什么要使用分支?
前边的版本出现了bug,而又在开发新的功能,需要以下步骤
git checkout v1.0.1
git checkout -b hotfix
git tag v1.0.2
git checkout master
git merge hotfix
Git上分支的使用的便捷性,产生了很多Git的工作流:在整个项目开发周期的不同阶段,可以同时拥有多个开放的分支,定期地把某些主题分支合并入其他分支中。
不仅仅是产生bug才创建分支
大多数是存在很多分支
gitGraph
commit
branch develop
commit
commit
commit
commit
branch topic
commit
commit
checkout main
commit
commit
(mermaid 语法显示不出来…)
git branch
git branch 分支名称
git checkout 分支名称
git checkout -b 分支名称
# B合并到A,需要切换到A分支
git merge 被合并分支
# 查看已经合并的分支
git branch --merged
# 查看未合并的分支
git branch --no-merged
# 如果分支为未合并状态,则不允许删除
git branch -d 分支名称
# 强制删除
git branch -D 分支名称
git remote add origin xxxxx(到下方a)
git fetch origin main
:在本地中拿到 origin/main 分支
git branch --set-upstream-to=origin/main main
:给当前分支设置上游分支,master开始跟踪它
git merge
:默认合并上游分支,但是要有共同祖先,改成:git merge --allow-unrelated histories
git config push.default upstream
:用上游分支
git push
git checkout --track origin/main
:准备跟踪远程分支,就有main分支了git branch -d master
git push origin dev:dev
dev
分支git branch --set-upstream-to=origin/dev
git push origin develop
:直接将本地分支推到远程git branch --set-upstream-to = origin/develop
:创建上游分支git checkout --track origin/develop
(简写:git checkout develop)
git branch -d feature
改变当前分支base
变成线性结构,通过git log--pretty=online
查看为线性结构
git checkout feature
git rebase master
git checkout master
:切换到master分支
git merge feature:master会往后面移动
整个历史记录变得非常整洁
master
后面feature
分支:git rebase master
master
分支进行merge
rebase
:简化历史记录merge
:记录所有的历史
merge
:将两者合并成一个新的提交对象.gitignore
文件git clone xxxxxxxx
git add .
git commit -m "xxxx"
git pull ->(git fetch + git merge)
git push
git checkout develop
# 1.检查服务器是否有origin/develop这个分支
# 2.创建一个本地的develop分支
# 3.让本地的develop分支自动跟踪origin/develop
# 4.切换到develop分支
git add .
git commit -m ""
git pull
git push
git tag
git checkout -b develop
git push origin develop
git merge develop
git rebase
Learning Git Branch