下载安装
git官网下载链接:https://git-scm.com/downloads,点击右侧电脑上的Download for Windows进行下载,按照就是傻瓜式按照,下一步即可
配置
右击鼠标打开git命令窗口,配置,这一步相当于后期管理代码的一个标识,标识某人操作
git config --global user.name "xxxx"
git config --global user.email "xxx@xxx.xxx"
使用git
查看当前仓库的状态 : 新建一个文件夹test ,命令进入test文件夹,git status
,可以看到test不在git仓库内。
git status
初始化仓库:初始化仓库会在test文件夹中出现一个隐藏的.git
文件夹(看不到要设置文件的隐藏文件可见)
git init。
文件状态
文件状态:分为未跟踪和已跟踪
已跟踪又分为:暂存、未修改、修改
未跟踪:文件没被git管理
暂存:文件修改已保存,尚未提交到git仓库
未修改:磁盘文件和git仓库文件相同,没有修改
刚添加到项目中的文件处于未跟踪状态,比如我在test文件中新建了一个1.txt,内容也添加完这时候1.txt处于未跟踪状态
- 未跟踪 → 暂存
git add <filename> 将文件切换到暂存的状态
git add * 将所有已修改(未跟踪)的文件暂存
- 暂存 → 未修改
git commit -m "xxxx" 将暂存的文件存储到仓库中
git commit -a -m "xxxx" 提交所有已修改的文件(未跟踪的文件不会提交)
- 未修改 → 修改
修改代码后,文件会变为修改状态
常用命令
把文件重置
git restore <filename>
git restore * 把所有文件重置
git restore --staged <filename> 从暂存状态取消
删除文件
git rm <filename>
git rm <filename> -f 强制删除文件
分支
在用git时,可以创建多个分支,分支与分支质检相互独立,在一个分支上修改不影响其它分支
在vscode中,右侧分支图形化工具安装 gitlens --Git supercharged
查看当前分支,默认有个一个分支master
git branch
创建分支 test
git branch <branch name>
切换分支 test
git switch <branch name>
创建分支并切到该分支
git switch -c <branch name>
删除test分支
git branch -d <branch name>
在平时工作中,第一次拉取完项目,第一步就是创建自己的开发分支
合并分支:下切换到master主分支,然后合并
git switch master
git merge <branch name>
如过要合并的分支和 master分支中有个文件,我修改了,其它人也修改了,那么合并会提示这个文件要以那种形式合并
在vscode中找到这个文件会在最上面看到几种要合并的形式,点击要合并的形式即可
笨的方法是手动把代码整理完再次commit
合并之后分支演示
变基
在开发中除了通过merge来合并分支外,还可以通过变基来完成分支的合并。
我们通过merge合并分支时,在提交记录中会将所有的分支创建和分支合并的过程全部都显示出来,这样当项目比较复杂,开发过程比较波折时,我必须要反复的创建、合并、删除分支。这样一来将会使得我们代码的提交记录变得极为混乱。
原理(变基时发生了什么):
- 当我们发起变基时,git会首先找到两条分支的最近的共同祖先
- 对比当前分支相对于祖先的历史提交,并且将它们提取出来存储到一个临时文件中
- 将当前部分指向目标的基底
- 以当前基底开始,重新执行历史操作
变基和merge对于合并分支来说最终的结果是一样的!但是变基会使得代码的提交记录更整洁更清晰!注意!大部分情况下合并和变基是可以互换的,但是如果分支已经提交给了远程仓库,那么这时尽量不要变基。
示例:一个update分支 和一个master分支、update分支要合并到master一个分支上
git switch update //切到update分支
git rebase master //变基到master
此时也会提示冲突,冲突跟merge 合并时候的提示一样,如图去掉冲突
此时变基完成,但是合并分支还没有合并到一起,master分支在update后边
git switch master //切到主分支
git merge update //合并分支 这里算是变基合并结束,
git branch -d update //删除分支
变基之前
变基之后分支演示