目录

1、git是什么

2、git怎么工作的

3、git常用命令

4、git提效工具

5、git的技术用语


1、git是什么

git是开源的分布式的版本控制系统,可以有效、高速地处理的项目版本管理。
git中存储是变更信息,而不是整个文件。

总结git的两大特点:

版本控制:可以解决多人同时开发的代码问题,也可以解决单人开发时找回历史代码的问题。
分布式:多台机器互为备份,同一个Git仓库,可以分布到不同的机器上。可以自己搭建这台服务器,也可以使用GitHub网站、gitee网站(属于osChina)、coding网站。

2、git怎么工作的

git的工作原理如图所示

3、git常用命令

命令和操作大全
部署git和git常用命令
1、创建公钥(3次Enter)
ssh-keygen -t rsa -C  git@gitee.com:andy9468/ttsx_sz3.git
错误处理
eval "$(ssh-agent -s)"
ssh-add
 
2、克隆
git clone git@gitee.com:andy9468/ttsx_sz3.git
 
3、查看所有分支
git branch
 
4、创建dev分支(创建分支会克隆当前分支的开发进度和状态)
git branch dev
 
5、删除分支(删除分支前,先切换到其他分支)
git checkout itcast1
git branch -d itcast22
 
6、将本地的当前分支推送到远程
git push origin dev
 
7、跟踪分支
作用是:使得本地的dev被用于跟踪(就是和远程的dev对比)
执行本命令前,需要向执行6,即把本地dev推送到远端dev
git branch --set-upstream-to=origin/dev dev
 
8、创建并切换到新分支
git checkout -b itcast1
小结:
(1)检查当前分支和远程分支的版本提交落后关系。
git checkout
(2)切换到分支itcast2
git checkout itcast2
(3)创建并切换到新分支
git checkout -b itcast1
 
9、将远程dev分支同步到本地(本地不需要自己新建dev2分支)
git checkout -b dev2 origin/dev
将远程itcast1同步到本地(本地不需要自己新建itcast1分支)
git checkout -b itcast1 origin/itcast1
 
10、被跟踪的dev还可以用pull同步到本地(先本地新建dev分支)
git checkout -b dev
git pull
 
本地已经有dev分支和项目文件时,同步到本地的命令过程:
git checkout dev
git pull origin dev
git reflog
git reset 10e2148
git checkout -- .
 
 
11、查看工作区、缓冲区的被修改但还未提交(git commit)的文件
git status
或者(简要输出)
git status -s
 
12、添加到缓冲区(完成一个文件,git add 一下)
git add .
 
13、提交到本地版本库(完成一个业务逻辑,git commit一下)
git commit -m '部署框架'
如果没有新建的文件。可以不单独add,一次性提交:-a -m
git commit -a -m "Changed some files"
千万注意,-a不会造成新文件被提交,只能修改。
 
14、将本地版本库推送到远程服务器(服务器相当于U盘)
就是将本地分支推送到服务器
git push origin itcast1
 
15、将分支itcast1合并到公共分支dev
git checkout dev
git merge itcast1
git push origin dev
 
常见的合并过程
(1)合并分支(第一个人的合并):
git status
git checkout dev
git merge itcast1
git push origin dev
 
(2)第二个人开始合并分支前,需要先下载第一个人合并分支后,推到远程的dev分支
git checkout dev
git pull
git merge itcast2
 
(3)这步后,如果产生冲突,找写代码的人商量,决定怎么删留改。
处理bug,最好建立一个bug001分支(从需要改bug的分支,创建并切换到bug001分支)
git checkout dev
git checkout -b bug001
 
 
(4)修改处理bug,并合并,推送
1)在分支bug001下,改好后:提交本地
git add ./
git commit -m '解决冲突01'
 
2)并开始合并分支
git checkout dev
git pull
git merge --no-ff -m '解决冲突01' bug001
说明:
合并分支默认是引用合并(fast-forward),如果是把分支bug001合并到分支dev,就需要深拷贝合并(no-ff)。否则,删除bug001后就没办法引用了。
 
3)删除分支bug001
git branch -d bug001
 
4)推送分支dev到服务器
git push origin dev
 
(5)小技巧:将合并好的dev版本再合并给itcast2,推送到服务器
git checkout itcast2
git merge dev
git push origin itcast2
 
 
 
16、查看日志(历史记录)
(1)完整的日志(commit后,并且push的记录)
git log(宏观。更适合克隆后,查看本地的远程项目的提交记录)
(2)简介版日志(只有本地commit后的记录,可以看到版本号)
git reflog(微观。更适合本地,强烈推荐)
 
17、日志的2个作用
(1)对比两个版本的差异:git diff
1)比较最近(当前已commit)版本和工作区的差异
git diff HEAD -- ttsx/ttsx/urls.py
2)对比最近版本和上一次版本的差异
git diff HEAD HEAD^ -- ttsx/ttsx/urls.py
3)对比上一次版本和最近版本的差异
git diff HEAD^ HEAD -- ttsx/ttsx/urls.py
4)对比两个版本的差别(HEAD表示最近提交的版本,7c56139另一个版本)
git diff HEAD 7c56139 -- ttsx/ttsx/urls.py
 
拓展:
1、查看工作区的变动
尚未缓存的改动:
git diff
 
2、查看缓冲区的变动
查看已缓存的改动:
git diff --cached
 
3、查看工作区、缓冲区的变动(相当于git status)
查看已缓存的与未缓存的所有改动:
git diff HEAD
 
4、显示变动摘要
显示摘要而非整个
git diff --stat
 
小结:git status(强烈推荐git status)、git diff 
git status  显示新建、修改、删除,
git diff      只显示修改,一行一行地显示这些改动具体是啥。
 
 
 
(2)回退到以前版本:git reset 8042a87
git reflog
git reset 8042a87
git status
git checkout -- ttsx/ttsx/urls.py
 
18、历史版本,从仓库恢复到暂存区
git reset HEAD(或者版本号8042a87)
从暂存区恢复到工作区
git checkout -- 文件名
 
19、保存现场(不想提交修改,但是必须切换到其它分支去解决bug时用)
git stash
 
20、恢复现场(bug修复后,回到以前的分支,并恢复现场)
git checkout itcast1
git stash pop
 
21、配置
查看git所有配置信息  
git config --list
或者:查看某一个变量的值,
git config user.name
拓展:
配置用户信息,Ubuntu家目录python文件夹下
vi .gitconfig
 
 
22、git rm
git rm 会将条目从缓存区中移除。这与 git reset HEAD 将条目取消缓存是有区别的。 "取消缓存"的意思就是将缓存区恢复为我们做出修改之前的样子。
默认情况下,git rm file 会将文件从缓存区和你的硬盘中(工作目录)删除。
如果你要在工作目录中留着该文件,可以使用 git rm --cached:
如我们删除 hello.php文件:
git rm hello.php
不从工作区中删除文件:
git rm --cached README

4、git提效工具

git有一个实用的图像管理工具sourcetree。

图形操作,代码差异、分支情况、文件增删,直观易懂。

5、git的技术用语
(1)分支
各自的分支:一个开发人员一个分支,互不冲突。一个分支相当于一辆车的专属跑道。
dev公共分支:成员合并的分支,用于阶段性合并代码。
master主分支:发布版本的分支。
 
(2)工作区、版本库、服务器
工作区、版本库(包括暂存区和仓库区)、服务器(如:github、gitee、自搭建)
1)工作区:本地所有文件(除了.git)
2)版本库:.git
3)服务器:相当于共用U盘

查看工作区改动,git diff
查看暂存区改动,git diff --cached

git小结-ms的更多相关文章

  1. Spring+SpringMVC+MyBatis+LogBack+C3P0+Maven+Git小结(转)

    摘要 出于兴趣,想要搭建一个自己的小站点,目前正在积极的准备环境,利用Spring+SpringMVC+MyBatis+LogBack+C3P0+Maven+Git,这里总结下最近遇到的一些问题及解决 ...

  2. git 小结

    git cherry-pick de0ec64  可将另一个分支中的提交 cherry-pick到当前分支来

  3. iOS版本控制git小结--yoowei

    # 显示隐藏文件 defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder # 不显示隐藏文件 d ...

  4. git小结

    1.创建本地与远程分支 先创建远程分支,再创建本地分支,再将本地分支与远程分支关联git fetch 获取远程分支git checkout remote_branch 或者 git checkout ...

  5. GIT入门笔记(19)GIT 小结

    1.add和commit为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:$ git add file1.txt$ g ...

  6. 版本控制之Git小结

    一.版本控制 1.1 什么是版本控制 版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统.可以对任何类型的文件进行版本控制. 1.2 为什么需要版本控制 有了版本控制就可以 ...

  7. Git小结---So far.......

    基本的: 1. 在配置了SSH Key的情况下,clone项目时使用:git clone git@github.com/用户名/仓库名.git  使用这种方式而不使用https的方式的好处在于,在pu ...

  8. git参考, 小结

    git官网: https://git-scm.com 菜鸟教程: http://www.runoob.com/git/git-tutorial.html 廖雪峰: https://www.liaoxu ...

  9. 记一次小团队Git实践(上)

    公司规模不大,成立之初,选择了svn作为版本控制系统.这对于用惯了git的我来说,将就了一段时间后,极为不爽,切换到git-svn勉强能用.随后,因为产品需要发布不同的版本,而git-svn对远程分支 ...

随机推荐

  1. Oracle 优化SQL

    https://www.cnblogs.com/ios9/p/8012611.html 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2 ...

  2. git切换分支冲突解决-删除分支

    在项目开发中,有多个版本分支需要不时的来回切换,在切换的过程中,产生了很多冲突,提交的时候 也提交不了.总结下在解决这个过程中使用的两种方法: 1.删除项目在磁盘的目录,包括 git 文件,重新 cl ...

  3. [转]Maven 全局配置文件settings.xml详解

    原文地址:https://www.jianshu.com/p/110d897a5442 概要 settings.xml有什么用? 如果在Eclipse中使用过Maven插件,想必会有这个经验:配置se ...

  4. (2)PyCharm开发Flash项目之蓝图构建

    下面通过在PyCharm开发工具中创建一个简单的Flask项目来体会一下Flask的蓝图构建(Blueprint). 何谓蓝图:在Flask中蓝图就在大型应用中,将不同功能的模块(module)分开管 ...

  5. sudo passwd root:没有相关指令

    在linux里如果想要修改密码,就输入这个指令,但是会出现没找到这个指令,是因为环境变量里没有passwd. 解决:查找passwd的位置,sudo find / -name passwd 然后进入p ...

  6. vue 里 this.$parent 作用

    this.$parent 可以访问到父组件 上所有的 data(){ 里的数据信息和生命周期方法,methods里的方法 }!

  7. [LeetCode] 686. Repeated String Match 重复字符串匹配

    Given two strings A and B, find the minimum number of times A has to be repeated such that B is a su ...

  8. burpsuite证书生成和导入

    官网下载个社区版,基本还是够用的 配置代理的ip和port,选择根证书生成方式 访问配置的ip:port,下载证书 双击下载的证书,导入keychain 打开keychain,信任根证书 再次使用bu ...

  9. MySQL之表日志管理

    MySQL日志管理 mysql日志(默认存放在datadir): 同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志, ...

  10. webpack 4.0改版问题

    4.0之后的打包方式: webpack --mode development src/index.js --output-filename app.js --output-path dist