Git 工作流:
image.png
Git管理代码案例 - 图2

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库

命令大全:
Git管理代码案例 - 图3
Git 工作原理:
Git管理代码案例 - 图4

1、git init & git clone

Git 有3种可以创建本地仓库的方式:

  1. git init — 直接初始化仓库
  2. git clone + 远程仓库地址 — 拷贝一份远程仓库,也就是下载一个项目
  3. 直接使用IDEA等代码编辑器克隆代码到本地
    1. #初始化仓库(初始化本地某个文件夹为本地仓库)
    2. git init
    3. #克隆远程仓库代码到本地(等同于拷贝一个远程仓库到本地,并且拷贝前不用初始化这个文件夹)
    4. git clone 【远程仓库地址】

    git init 方式

    创建一个空文件夹,进入到文件夹里面,右键打开Bash窗口,执行 gitinit命令,
    image.png
    初始化完成之后会新增一个 .git文件夹,这个 .git文件夹是干嘛的呢?
    举个例子:
    git add 告诉.git文件夹什么可以被拉出,例如一只穿着燕尾服并拿着手杖的兔子(或网站上的单个文件或整个菜单栏)。
    .git 目录:
    image.png
    .git 包含版本控制所需的所有信息。如果要克隆你的仓库,复制.git就足够了。
    4个子目录:
  • hooks /:示例脚本
  • info /:exclude用于忽略模式的文件
  • 对象/:所有“对象”
  • refs /:提交对象的指针

4个文件:

  • HEAD:当前分支
  • config:配置选项
  • 描述
  • 索引:暂存区

这里的“对象”包括:

  • Blob(文件)
  • 树木(目录)
  • 提交(对树,父提交等的引用)

git clone 方式

创建一个空文件夹,进入该文件夹并打开Bash窗口 ,执行 git clone 【你的远程仓库地址】
image.png

IDEA克隆方式

打开IDEA,选择 Get from Version Control
image.png
填写 远程仓库地址、本地仓库地址,点击clone按钮等待代码拉取完成
image.png
代码克隆完成后,会自动初始化项目,下载依赖等
image.png
上面填写的本地存储位置就是你的本地仓库
image.png

2、git pull

git pull—- 从远程获取代码并合并本地的版本

  1. git pull <远程主机名> <远程分支名>:<本地分支名>

并且,git pull等同于 git fetch + git merge的操作效果

git pull = git fetch + git merge 【fetch_head】

注意: git pull 操作常用于开发前与开发完成后,提交前检查远程库与当前本地库的代码差异,避免提交时产生冲突。

举个例子:
将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并:
git pull origin master:brantest
如果远程分支是与当前分支合并,则冒号后面的部分可以省略:
git pull origin master

案例:以上述第三种IDEA方式创建本地库为例子
假设远程库已经有更改,更改如下:
image.png

在IDEA中执行pull操作:
image.png
执行pull操作这里分两种情况:

  1. 你的代码没有任何更改,这时会直接更新远程仓库最新的代码到本地;

下图更新的部分就是别人提交过的最新代码:
image.png

  1. 你的代码有修改,直接pull会报错;

image.png
推荐解决方案:https://www.cnblogs.com/PythonOrg/p/16050218.html
直接 pull 报错说明:
Your local changes would be overwritten by merge. Commit, stash or revert them to proceed.
意思是:如果 Pull 成功会把我之前修改的代码覆盖。
image.png
解决方案:
假设在此之前别人提交过新的修改:
image.png

  1. 暂存自己的代码修改:stash changes

image.png

  1. pull 代码

更新了别人提交过的修改:
image.png

  1. 取出暂存的修改,合并、提交

unstash changes取出我们的修改,merge合并,commit&push提交:
image.png
取出暂存的自己的修改:unstash changes
image.png
执行commit:
image.png
执行push:
image.png
远程仓库查看是否提交成功:
image.png

3、git commit

git commit— 命令将暂存区内容添加到本地仓库中。
格式:

  1. git commit -m [message]

案例:

假设别人有新的修改已经提交到远程仓库,而我自己本地有修改,未pull就直接commit操作,会发生什么呢?

别人的提交修改:
image.png
本地你自己的修改:
image.png
未pull,直接commit操作:
image.png
本地库确实有提交,并且IDEA没有报错和警告:
image.png
直接push会怎么样呢?
image.png
就报错警告咯!
解决办法就是在push前要pull操作更新本地库。
强制push会覆盖掉别人提交的修改:
image.png
怎么回退到覆盖之前的版本,百度一下即可(推荐:https://zhuanlan.zhihu.com/p/473636013)

4、git push

git push — 从将本地的分支版本上传到远程并合并
命令格式如下:
git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>

5、新建分支并合并master提交

推荐文章:
https://blog.csdn.net/lixpjita39/article/details/109394564

6、提交代码有冲突