浅谈git

为君一笑 提交于 2019-12-02 05:40:09

浅谈git

1、要了解什么是工作区,暂存区,本地仓库和远程仓库
(1)工作区:就是我们将文件存储的目录

(2)暂存区:用于储存工作区中的变更(增删改等改动)的文件的地方.操作时使用git add会将本地所有的变更提交到暂存区中,我们平时使用的git add 就是将本地代码提交到暂存区

(3)本地仓库:用于储存工作区和暂存区中提交上来的文件,使用git commit -m '提交内容的描述’,所以我们平时使用git commit就是将文件提交到本地仓库

(4)远程仓库:远程仓库:当进行到这里的时候即一个人的开发完毕的时,需要将自己开发的功能合并到著主项目中去,但因为是多人开发,要保管好主项目中存储的代码和文件的话,就需要放在搭建好的远程git仓库中,即远程仓库.具体操作:git push origin 远程分支名即可.
在这里插入图片描述

2、版本库:就是一个目录,版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”
在一个目录下面,使用git init命令,就可以将这个目录作为一个仓库了,也就是版本库
3、git add :将本地文件提交到暂存区
git commit -m “对这一次的提交做一下标记”

4、git status:可以查看当前仓库的状态,是否有修改等
git diff:如果有修改的话,可以通过这个命令看到有哪些修改
如果同时有几个文件都修改了,都可以直接显示出来的
提示信息:nothing to commit, working tree clean:表示仓库中是干净的,没有什么可以提交的了

5、git log :可以查看所有的提交记录
git log —pretty=oneline:也是用于查看所有的提交记录的,但是显示的信息更加简化
在显示的记录中,会有每次提交的版本号,这个很重要

6、版本回退
git reset - -hard head^:表示回退到head所指分支提交的上一个版本
Git reset —hard head^^:表示回退到head所指分支提交的上上个版本
git reset —heard head~n:表示回退到head所指分支提交的n个版本
注意:使用这个版本回退会导致使用git log时,直接找不到回退后的提交
如果已经回退到某一个版本,那么后面提交的版本就都没有记录了
要想知道后面提交的版本
使用命令:git reset —head 你要去的版本的版本号,如果你在回退前使用了git log ,同时这个界面还没有关闭的话,可以返回上面去找一下版本id
git reflog:用于记录每一次的命令,如果不知道要回退版本的版本id,可以通过这个命令
然后在使用git reset —head 版本id回退到想去的版本

7、工作区和版本库
工作区:就是我们将文件存储所在的目录
版本库:工作区中有一个.git文件夹,这个就是版本库
版本库中就有一个暂存区和本地仓库

git add:就是将工作区的文件提交到版本库的暂存区(stage)中
git commit:就是将暂存区的文件提交到当前分支里面,git commit只是提交暂存区的修改,如果直接从工作区提交到分支,修改是不被提交的
其中head指向当前分支

在这里插入图片描述
git diff head —文件名:查看工作区和版本库最新版本的区别

8、命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
(1)一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
(2)一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
又到了小结时间。
(1)场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
(2)场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
(3)场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
(4)如果已经提交到远程仓库了,那后面看怎么解决吧

9、git rm 文件名:用于删除工作区的文件
git commit -m ”“:将这次的删除提交,这样工作区和版本区就一致了
git checkout — 文件名:表示用版本库里的版本替换工作区的版本,用于误删
如果工作区的文件没有提交到版本库,这样删除就没有办法修复了

10、提交到远程仓库
git remote add origin 远程仓库的地址
这样就和远程仓库建立连接了
然后通过这个命令:git push -u origin master,-u是第一次提交的时候使用的,后面的提交可以不加这个

11、git clone 远程仓库地址:这样就可以将远程仓库中的东西拉到本地仓库啦

12、分支管理

git checkout -b 分支名 创建同时切换到新创建的分支:
git checkout -b 分支名 ==git branch 分支名+git checkout 分支名
git checkout -b 分支名=git switch -c 分支名
git branch: 查看当前分支:这个会列出所有的分支,当前分支前面会有一个*
git checkout 分支名:切换分支
git checkout 分支名=git switch 分支名
git merge 分支名(dev):将dev这个分支的内容合并到当前分支上面
git checkout —d 分支名:删除分支

13、分支冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph命令可以看到分支合并图。

14、bug分支
你所在的分支还没有完成,不能提交,但是这个时候有个紧急任务要你修改,你就要重新创建新的分支,这样你之前的分支没有提交,就不能保留
git stash:表示将当前分支的工作现场都存储起来
git stash list:查看当前分支保存起来的现场
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了:
你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:
$ git stash apply stash@{0}
如果之前的修改,然后修改成功之后,提交了,发现当前分支也需要修改这个bug,我们可以将这次的修改提交进行复制到当前分支
git cherry-pick 提交的版本号:用于将之前的某次提交也在当前分支做一次提交

15、多人合作
因此,多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin 推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
    如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。
    这就是多人协作的工作模式,一旦熟悉了,就非常简单。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!