1.创建版本库,版本提交以及回退

  1. git init (创建版本库)
  2. git add (后面可以添加需要添加的文件具体名称)
  3. git add . (提交所有的文件)
  4. git commit -m '描述信息'
  5. git diff (查看文件的代码那些是新增加的)
  6. git ssh-keygen -t rsa -C "邮箱" // 配置ssh公钥
git log (查看自己的每一次修改的版本方便回退到对应的版本)

image.png

git reset --hard HEAD^ //回到上一个文件commit前的版本
git reflog // 回流(也可以查看版本的信息)

image.png

git reset --hard 93d16eb(然后就可以通过这个命令添加指定的参数来回退到指定版本的信息)

2.工作区,版本库,暂存区,撤销修改

image.png

git ls-files (列出暂存区内的文件)
当commit以后提交到master分支中,暂存区内还是保存的一份(而不是清空)

image.png

git checkout -- file.txt // 写了代码我们并没有提交到工作区但是想要回退之前的版本
// 当我们修改了代码并且提交到工作区后,想要回退到之前的版本,
git restore --staged file.txt  // 这样就会提示我们需要提交(add)到工作区
//然后再调用checkout就可以回到之前的版本

image.png

//当我们一个文件提交到版本库时,然后删除了想要恢复
git checkout --file3.txt //可以恢复文件(低版本)
git restore file3.txt // 也可以恢复文件

image.png

3.添加远程仓库,从远程仓库克隆

git remote add origin +仓库网址
git push -u origin master // 将本地代码推送到远程仓库中
git remote -v // 查看远程仓库和本地文件夹的联系是否建立

4.分支

git checkout -b (+分支名称)// 创建分支 并且切换到当前分支  (老版本)
git switch -c (+分支名称)// 创建分支 并且切换到当前分支   (新版本)
git branch (+分支名称) //只会创建分支,并不会切换
git branch    // 查看分支
git checkout master  // 切换到master分支(老版本)
git switch (+分支名称)

当我们使用默认主分支master时,使用commit2次提交功能后,当前的指针指向master,然后当我们切换分支后,添加了功能然后commit提交后,这个时候指针指向dev分支的第三次commit上image.png
而当我们切换分支到master时,master的状态指向第二次commit上,这个时候如果需要让master分支与dev分支的内容同步,我们需要合并分支

git checkout master // 先切换到master分支
git merge dev // 合并分支
git branch -d (+分支名称) // 删除分支 (可同时删除多个分支)

分支冲突
当我们使用master分支然后切换到dev分支,然后修改了一部分功能,然后切换到masetr分支后,内容也会回到master分支,此时当我们在master分支的基础上又添加了一部分新的功能,然后commit提交,然后去merge合并dev分支,就会引发分支冲突,此时需要我们手动的去在代码中修改冲突的部分然后在commit提交。

git merge dev  //这种合并分支的方式比较简陋当使用log去检测的时候没有对应的记录
git merge --no--ff dev // 合并分支会存在合并记录

image.png

git stash // 保存当前分支的进度
git stash list // 查看刚才保存的记录
git stash clear // 删除存档

image.png

git branch -D dev // 如果分支没有合并,则需要-D删除分支

假设一个项目在github,小A将代码拉取下来,然后创建了dev分支,然后在dev分支上开发并且推送到github,然后小B也将代码拉下,也需要在dev分支上开发,但是默认情况下小B只会看见master分支,此时需要创建dev分支并且与github中的dev分支进行关联同步

git checkout -b dev origin/dev 设置本地dev分支并且和远程仓库dev分支建立关联保持同步

然后小B将代码开发了之后往向远程仓库提交,然后小A同学又在dev的分支上进行代码的开发,增加功能或者膝改什么的,然后小A同学commit之后想要将代码推送到远程仓库,此时就会出现问题 image.png
因为此时仓库dev分支中最后的代码是小B的,小A需要将远程仓库的代码合并更新到自己文件的当前分支上

git pull // 将来自远程存储库的更改合并到当前分支中。

如果出现问题按照提示写,这样小A和小B在分别开发时,每次想要提交代码时,只需要分别pull一下然后再进行
提交即可
image.png
**当提交遇到这个问题的时候是因为README.md是在github建的,而不是在本地建的,当我们在本地修改md文件时候,就会无法推送,需要将代码进行合并

git pull --rebase origin master
git push origin master // 然后再进行提交
 git rebase master // 重新定义master分支的指针

详细查看 => 关于git rebase详解

git tag v1.0 // 为这次提交打上表示
git tag // 查看标识
git log // 会拿到每一份存在id的历史记录
git tag v0.9 (+id值) // 可以为过往的提交记录也打上标识

image.png

git tag -a v0.8 -m '描述信息' (+id值) // 添加描述信息
git tag -d (+标识号) // 删除对应的版本号
git push origin v1.0 // 将v1.0的版本号推送到远程仓库
git push origin master // 但是也得先把分支推到远程仓库

远程仓库代码比较新,需要将远程仓库代码更新到本地

git pull --rebase origin master