Git操作全过程,从建库到团队协作。(不完整,持续完善)

负责人篇

情况一:本地已有Project

本地已经创建好了项目,想把本地的仓库链接到远程仓库。

操作步骤:

1.远端建库操作(码云为例)

在这里插入图片描述

2.本地上传操作
  • 打开项目所在文件夹。 git bash here
  • 初始化本地仓库。 git init
  • 添加远程仓库地址。 git remote add origin 远程仓库地址
  • 重要步骤:拉取远端仓库的代码 git pull origin master
  • 选择上传的文件。 git add . 表示要上传所有项目文件到本地仓库
  • 提交到本地。 git commit -m “提交内容的解释” 向本地仓库提交代码
  • 将本地库提交到远程仓库(只在此使用一次)。 git push -u origin master
    这里的origin表示远程仓库的名称,是git默认起的。 -u的意思是把本仓库的master分支内容推送到远程仓库的master分支,并将二者联系起来,在以后的推送或拉取时就可以简化命令。 git push origin master
3.常见问题汇总
问题一:为什么第四步要拉一下远端仓库代码。

解答:我们创建好远端仓库后,git会为我们生成ReadMe文件,如果我们本地没有这个文件,往远程仓库推送代码是,是会被拒绝的。所在我们在 git add .之前,务必要先拉一下(网上大多数教程没有这一步)
在这里插入图片描述

问题二:推送被拒绝的解决措施,对应问题一

解答:三种处理方式。优先方式一,方式二,不推荐方式三。

方式一:变基操作,高级,不推荐

  • 本地生成ReadMe文件 git pull --rebase origin master
  • 然后再 git push -u origin master

方式二:推荐,但不一定解决

  • 删除项目中的.git文件(git init 时生成的那个文件)
  • 重新打开git bash here , 再重头进行一次操作。

方式三:额,怎么说呢,建议不要使用,毕竟是覆盖

  • 强制上传覆盖远程文件 git push -f origin master
  • (这个命令在团队开发的时候最好不要用,否则…)

在这里插入图片描述

情况二:本地无Project

本地上传操作

Git基本操作指令

  1. git init 初始化本地仓库(生成.git文件)
  2. git add 文件名 (选择要准备提交到本地仓库的文件)
  3. git commit -m “content” 将(git add .)的文件提交到本地仓库
  4. git status 查看当前仓库的状态(如果我们修改了文件,通过这个指令可以查看哪些修改还没有提交)
  5. git diff 查看哪些地方进行了修改(git status可以看出哪些做了修改,但是具体修改了哪些内容,可以使用这个指令)
  6. git log 查看历史提交的版本
  7. git reflog 查看操作指令历史
  8. git reset --hard HEAD^ 版本回退(一个^回退一个版本)
  9. git reset --hard 2ea23 重回版本(2ea23为版本号,可以通过git log 或者 git reflog 进行查看)
  10. git checkout - - 文件名 可以让你的代码回退到最近的git add. 或 git commit 上
  11. git reset HEAD tiankong.txt 将已经放入暂存区的修改撤销掉,重新放回工作区

Git status的骚操作

  1. 不进行任何文件修改

在这里插入图片描述
在master分支,没有需要提交的修改

扫描二维码关注公众号,回复: 12839550 查看本文章
  1. 文件修改
    在这里插入图片描述

lightbright.txt文件被修改了,但还没有准备提交修改(爆红)

  1. 查看修改的内容 git diff
    在这里插入图片描述
    我们可以看到,我们在文件中添加了123456789123456789

  2. 选择要提交的文件 git add lightbright.txt
    再使用gitstatus,我们发现修改的文件名称(爆绿)
    在这里插入图片描述

  3. 我们进行提交 git commit -m “content”
    此时我们再查看文件状态(变白,没有修改未提交的文件)
    在这里插入图片描述

小结:
查看工作区的状态:git status
查看修改的内容: git diff

Git版本回退

当我们修改文件到一定程度时,我们可以点一个保存,就算之后写的文件丢失,我们最坏也可以到达本次保存的这一步骤。
我们称这个操作为快照,在git中,通过commit实现。即 一次 git commit -m “content” 就是一个快照。

  1. git log 查看我们都在仓库中进行了哪些操作
    在这里插入图片描述
    我们可以看到,我们将两个版本的内容进行了提交,一个是添加文件,一个是更新文件。
  2. git log --pretty=oneline 简化日志
    在这里插入图片描述
    黄色的内容,是git的版本号。
    使用图形化界面,我们可以看到操作历史线
    在这里插入图片描述
  3. git reset --hard HEAD^ 版本回退
    我们当前所在的版本是 update lightbright.txt这个版本,我们回退到add 这个版本(HEAD 所在的版本为当前的版本)
    一个^回退一个版本,可以两个甚至更多个
    在这里插入图片描述
    回退两个(前提是我得有三个commit,这里是我又新建了一个)
    在这里插入图片描述

cat lightbright.txt 查看当前文件内容
5. ](https://img-blog.csdnimg.cn/20210216092807471.png)
在这里插入图片描述
此时我们发现,版本已经进行了回退

  1. git log 查看现在版本库的状态
    在这里插入图片描述
    此时我们发现,uodate lightbright.txt 这个commit已经没有了。
    也就是说,我们回到了19世纪,但是回不来了。。。。。。
    那怎么办呢?
  2. git reset -hard 版本号 重新回到20世纪
    只要我们的命令行窗口没有关闭,我们就可以看到之前的版本号。
    在这里插入图片描述
    git reset --hard 2ea23(不用写全)
    在这里插入图片描述
    git log
    此时我们发现,我们又回来了
    在这里插入图片描述
  3. 关闭了命令窗口,找不到commit id 回不去怎么办?
    吃个后悔药吧。
    git reflog记录你的命令。
    通过这个指令我们就可以看到之前的版本号了,进行恢复即可。但是还是要记得commit id 哦,否则提交多了,自己也不知道哪个是想要的版本号。
    在这里插入图片描述

工作区和暂存区

工作区

电脑里面能看到的目录 testgit 就是一个工作区
在这里插入图片描述

版本库(Repository)

工作区有一个隐藏目录 .git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

在这里插入图片描述

  • git add 即将文件添加到了暂存区。
  • git commit 提交更改,就是把暂存区的内容提交到了当前分支。
  • 创建GIT版本库时,git会自动帮我们创建一个master分支,所以当前git commit 提交的是master分支。
    总结: 需要提交的文件修改通通放到暂存区,然后一次性提交所有修改。

例子:
在lightbright.txt中添加数字0-9,并且在当前文件夹下新建一个文件夹tiankong.txt
在这里插入图片描述

  1. git status
    在这里插入图片描述
    lightbright文件做了修改,没有提交。
    新创建的文件显示untracked(开始回升的)

  2. 使用两次git add ,分别将两个文件提交
    在这里插入图片描述
    版本库现状:
    在这里插入图片描述

  3. 提交修改
    在这里插入图片描述
    版本库现状
    在这里插入图片描述
    总结: git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

管理修改

GIt是管理的修改,而非管理的文件。

  • tiankong.txt中添加123456,并且git add .
    在这里插入图片描述

  • tiankong.txt中添加654321,直接commit
    在这里插入图片描述
    此时我们发现,tiankong.txt文件中有修改未提交

  • 分析
    第一次修改——>git add. ——> 第二次修改——> git commit
    由此可见,提交的时候,我们只提交了位于暂存区的修改,第二次修改后没有放入暂存区,所以第二次修改,并没有被提交

  • 再次 git add . 之后commit
    在这里插入图片描述
    此时我们发现,当前不存在没有提交的修改。

总结: 每次修改,如果不用git add 放入暂存区,则就不会加入commit中。

撤销修改

指令:
1.git checkout – tiankong.txt
可以让你的代码回退到最近的git add. 或 git commit 上。
2.git reset HEAD tiankong.txt
将已经放入暂存区的修改撤销掉,重新放回工作区

情况一:修改后还没有添加到暂存区

撤销操作,回到版本库一模一样的状态

  • tiankong.txt 添加 小明
  • 进行撤销操作 git checkout – tiankong.txt
    在这里插入图片描述
    结果:小明被撤销
    在这里插入图片描述

情况二:已经添加到暂存区再修改

撤销操作,回到添加到暂存区后的状态

  • tiankong.txt添加小红,并添加到暂存区 git add .,进行撤销操作 git checkout – tiankong.txt
    在这里插入图片描述
    在这里插入图片描述
    小红还在
  • 添加 小红是小明的女朋友
  • 进行撤销操作(不放入暂存区) git checkout – tiankong.txt

结果:小红是小明的女朋友 被撤销
在这里插入图片描述
小结: git checkout – 文件名 可以让你的代码回退到最近的git add. 或 git commit 上。

情况三:修改的内容已进入暂存区

在这里插入图片描述
git reset HEAD tiankong.txt
将已经放入暂存区的修改撤销掉,重新放回工作区

  • tiankong.txt 中添加小明是个博士生,并进入暂存区 git add.
    在这里插入图片描述
    在这里插入图片描述

  • 进行撤销操作 git reset HEAD tiankong.txt
    在这里插入图片描述
    在这里插入图片描述
    我们通过git status 查看状态可知,目前修改已从暂存区回归到了工作区。现在暂存区是干净的,工作区有修改

总结

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件

情况一:彻底删除某一文件,从版本库中也删除

  • 删除tiankong,txt文件夹,并从版本库删除 git rm 文件名 git commit
    在这里插入图片描述
    在这里插入图片描述

现在,文件就从版本库中被删除了。
此时我进行恢复,我可以通过版本回退,回退到上一个版本,再进行恢复。

情况二:误删某个文件,通过版本库恢复

  • 删除天空这个文件夹
    在这里插入图片描述
  • 恢复天空这个文件夹 git check – tiankong.file
    因为此时我们只是删除了工作目录中的tiankong.file,之前我们把这个文件已经提交到版本库了,所以我们还可以恢复。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhang19903848257/article/details/112800100
今日推荐