全栈之路:360秒内掌握版本管理技能 GIT

Git/版本控制
457
0
0
2022-07-26
标签   Git基础

前言

代码笔记 为一系列的文章,从一个python ,django 完整项目的所用到的环境和工具讲起,随时供自己备查,进阶全栈工程师的狂暴之路。

请点击右上角 +关注,希望能在后续工作中帮助到您。

概述

本文章讲纯干货的 git的使用方法和团队协作中的问题解决,尽量不讲废话,只要记住几个基本概念和几条常用命令,就已经使用git无障碍,绝不长篇大论从历史开讲,看了2个小时还是不知道怎么上手。

git是一个分布式版本系统,最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作。

基本概念

版本库

只要在某个文件夹下做了git init的初始化操作,或者从远程往本地某个文件夹下 clone下拉了代码,这个目录就是包含一个版本库了.

最简单的识别方法, 看看 ls -ah, 当前目录下有隐藏的.git 目录,那么当前 .git目录就已经是版本库了。

git是把所有版本变更的信息都记录在 .git 目录下面,也就是所谓的版本库

工作区

当前的目录就是工作区, 工作区有一个隐藏目录.git文件夹,这个不算工作区,而是Git的版本库。

暂存区

在工作区里随意的添加或者修改文件,这时候是和git没有发生关系, 想要发生关系,需要执行一个git add . 操作, 这时候就把工作区的文件加到 git 的暂存区,之所以说是暂存,是因为这些文件目前只是和git产生了关联,但并不属于任何分支,还没有纳入版本管理,所以叫暂存。

版本分支

我们创建Git版本库时,Git自动为我们创建了唯一一个master分支。

把工作区的 文件纳入版本管理, 第一步是要 git add 放入暂存区,表示要纳入git管理

第二步 做 git commit -m “提交注释” , commit就是提交的意思, 提交后才是纳入了 master版本分支的管理

常用操作命令速查

git init 初始化当前目录,建立 .git 版本库

git status 查看当前目录下所有文件的状态和当前分支

git add . 当前目录下的所有未加入git管理的文件纳入git暂存区

git commit -m “注释信息” ,提交到当前版本, 注意commit是本地提交,并不会往服务器上推送

git diff 是工作区(work dict)和暂存区(stage)的比较

git diff –cached #是暂存区(stage)和分支(master)的比较

git log 显示从最近到最远的提交日志,

git reset –hard HEAD^ 把当前版本回退到之前的某个版本

git reset –hard 3628164 3628164 是git log中显示的某个版本号,没必要写全,前几位就可以了,Git会自动去找

git checkout – readme.txt 可以丢弃工作区的修改,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态

git remote add origin git@github.com:test/test.git

在服务器上已经创建了一个新的Git仓库test.git, 在本地通过 此命令和远程仓库关联起来。

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库

git push -u origin master

由于远程库是空的,第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来

git push origin master 强制提交到master分支

git push 在当前的所在的版本分支上提交

git clone git@github.com:test/test.git 只要看到别人提供的 git地址, 用git clone就可以拉取到本地

分支管理

git checkout -b dev

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

git branch dev 新建 dev分支

git checkout dev 当前工作的版本分支切换为 dev, 注意之前有个 checkout 带有 – 参数的,后面是具体文件,不是分支

git branch 命令查看当前分支:

git merge dev 在当前的版本不是dev的情况下使用,要合并dev分支和当前分支的不同之处

git branch -d 删除分支

git branch –set-upstream dev origin/dev 设置本地 dev和origin/dev的链接,没出现问题的话一般用不上这个,备查

解决冲突

冲突不可避免, 解决冲突的前提是先把本地工作区有修改和新增的文件 通过 git add . git commit 加入管理,然后再做 pull拉取代码或者不同分支的merge合并

大部分文件的差异 git会通过自动merge 解决掉, 还剩一些搞不定的会提示有冲突, 需要手动合并。 有差异的地方会有 <<<的标记具体是什么地方冲突,修改后删掉 那些<<<标记,重新 git commit就好了

如果合并错了, 可以通过 git log查看之前的版本号, 再通过 git reset 版本号 回退, 重新进行合并和解决冲突

推送分支

git push origin master 推送到 远程master分支

git push 推送当前版本的更新

git pull

拉取更新,如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name

从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致

建立本地分支和远程分支的关联,使用git branch –set-upstream branch-name origin/branch-name

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突

其他

git remote -v 查看远程库信息

管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的

/home/git/.ssh/authorized_keys文件里就是可行的

预告

下一篇讲一个通过游戏练习git使用,快速成为高手的方法, 99%的聪明人都点了右上角 +关注 果断订阅