1. Git初始
一、Git初始
1. 定义
分布式的版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git.当然为了习惯及团队协作,会将本地数据同步到Git服务器或者GitHub等代码仓库.
https://www.cnblogs.com/Sungeek/p/9152223.html#sg1
2. SVN和Git区别
Git是分布式的,SVN是集中式
Git把内容按元数据方式存储;SVN是按文件,所有的资源控制系统都是把文件的元信息隐藏在一个类似svn,cvs等文件夹中
Git没有一个全局版本号,而SVN有
Git分支和SVN分支不同
Git的内容完整性优于SVN;Git的内容存储使用的是SHA-1哈希算法,这能确保代码内容完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏.
二、Git安装使用
1. Git安装
1. Linux
yum install git -y
2. Ubuntu
apt-get install git
3. 查看Git版本
git --version
2. 运行Git前的配置
1. 设置用户名称/邮箱地址(针对当前linux用户添加一个配置,不会对其他人造成影响);存着 ~/.gitconfig文件中
git config --global user.name "Johon"
git config --global user.email johon@example.com
2. 用--system 就对操作系统所有用户,都设置这个配置
git config --system user.name "wusir"
git congig --system user.email wusir@luffy.com
3. 查看全局版本用户信息
git config --global --list
3. Git工作流程
使用Git就是将本地文件(工作目录workspace)的文件,添加到暂存区(stage),然后提交到本地仓库(repository),最终可以协同开发,推送到远程仓库(remote)
# 切换到项目目录mysite
cd mysite
# 初始化git仓库
git init
备注:git init命令会创建一个.git隐藏目录,这个目录包含初始化git仓库所有的核心文件;此步仅仅是初始化,此时项目里的代码还没有被git跟踪,因此还需 git add 对此项文件跟踪,然后 git commit 提交到本地仓库
请记住,在工作文件夹的每一个文件,只有两种状态,一个是未跟踪,一个是已跟踪
(1)已跟踪:指的是已被纳入git版本管理的文件,在git快照中有它的记录
(2)未跟踪:指的是文件既不在git快照中,也不在暂存区
git init 初始化时的工作文件夹,都属于已跟踪了,后续的编辑操作都会标记为[已修改文件],因此需要将修改后的文件,加入[暂存区],然后[提交暂存区的文件]
4. 查看文件状态
# 只能在git工作目录中输入这个命令,他会去找.git文件夹
git status
[root@pyyuc ~/git_learning/mysite 12:00:34]#git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
说明当前工作目录很干净,所有的已跟踪文件,已经被提交且未更改。
此时处在master默认分支。
在git版本库目录下,新创建的文件,都会被标记为 Untracked files,代表未跟踪的文件,需要使用git add .
必须得在含有.git文件夹的目录,去敲命令,才可以输入git命令
修改django的url.py,写入新功能,也是对文件进行修改标记 modified 对修改过的代码文件,也必须git add 添加到暂存区
git init mysite // 初始化git仓库
git status // 查看git状态
echo "print('挣了一个亿')" > main.py // 新建一个代码文件,此时是未被git跟踪的
git status // 再次查看状态
[Untracked files:
(use "git add <file>..." to include in what will be committed)
main.py
]
git add main.py // 开始跟踪main.py文件
git status // 此时再看已经被跟踪,现在已是可以被提交的状态,此时处于暂存区
git commit -m "main.py已修改" // 告诉git,把暂存区的main.py提交到本地仓库
git log // 查看提交的记录
5. 文件重命名
直接mv的操作,会被git记录为两个形容,一、删除原有文件、二、新建了mymain.py文件
此时新文件还未被跟踪,需要git add , git commit
原本的main.py还需要从暂存区删除
[root@pyyuc ~/mysite 14:57:57]# git status
[root@pyyuc ~/mysite 14:57:57]# git status
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: main.py
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# mymain.py
no changes added to commit (use "git add" and/or "git commit -a")
1. 命令
git mv main.py my_main.py 重命名
git rm main.py 删除暂存区的main.py
git add . 将本地工作区的代码,提交到暂存区
git commit -m "mv mymain.py" 将暂存区的代码,提交到本地版本仓库中
6. Git回退/前进
1. 先查看git提交记录,查看要回退的id
git log
2. 在使用git reset 回退
git reset --hard 954e6df1c0a2a71dd141850727d3eddd580518b3
3. 查看所有回退记录,即可任意切换至想要切换的文件位置,指针指向对应id即可
git reflog
备注:git的切换,本质就是对HEAD文件指针的来回切换
6. Git回退/前进
1. 先查看git提交记录,查看要回退的id
git log
2. 在使用git reset 回退
git reset --hard 954e6df1c0a2a71dd141850727d3eddd580518b3
3. 查看所有回退记录,即可任意切换至想要切换的文件位置,指针指向对应id即可
git reflog
备注:git的切换,本质就是对HEAD文件指针的来回切换
7. 撤回Git修改记录
对已经跟踪的文件app01/views.py进行修改,此时标记为了modified: app01/views.py;此时可以提交操作,也可撤回操作
(1)如果想提交本次修改操作
git add .
(2)如果发现代码改错了,git可以实现撤回
git checkout -- 文件名
git checkout -- app01/views.py
8. Git临时区
使用流程,场景,在你开发新功能的时候,突然线上代码有问题,你必须得改线上代码,将你目前已经开发好的功能,临时存储起来,待你修复bug完毕之后,再把这个临时存储的代码,回退回来即可
1. git stash //将你暂存区提交的代码,放到一个stash临时区中;此命令是在git add之后执行的
2. 修复bug完成
3. git stash pop // 拿回stash代码
4. git stash list // 查看stash是否还有临时代码
5. git add . // 注意未标记的,已修改的文件,都得git add 添加到暂存区之后,才可以提交到本地仓库
6. git commit -m "提交注释信息"
9. Git分支
git分支功能,每个人都有自己的分支,不直接影响本体代码,在自己的分支上,写完代码后,通过管理员吧分支的代码,合并到主干上即可
(1)git branch // 查看当前所在的分支
(2)git branch wusir // 创建wusir分支
(3)git branch alex // 创建alex分支
(4)git checkout wusir // 切换至wusir分支
分支开发使用流程
(1)创建分支
git branch wusir
(2)切换分支
git checkout wusir
(3)在分支下,进行编写自己的代码
...
(4)切换到主干分支上
git checkout master
(5)合并分支代码,此时wusir开发的代码,就被合并到master了
git merge wusir
分支冲突,手动解决冲突;将其系统标记的注释删除即可.
原因:master分支和wusir分支,同时操作一个文件,对同一行代码进行写入
1. git命令
git branch 分支名linux 创建分支linux
git checkout 分支名linux 切换分支到linux
git branch 查看当前分支情况,在哪一个就有*符
git check -- filename 一键还原文件,将git仓库的文件覆盖当前文件,危险命令
git checkout -b name 创建+切换新的分支
10. Git常用命令
git init 初始化
git status 查看git版本库的状态
git add 指定文件或者 .
git commit -m "提交的注释" 提交暂存区的内容到本地仓库
git checkout 文件名 #撤回对文件的修改
git checkout 分支名 #切换不同的分支
git log #查看git提交的日志记录
git reflog #查看所有提交以及回退的记录
git reset --hard commitID #回退到某一个提交的id版本下
git config --global user.name "你的名字"
git config --global user.umail "你的邮件"
git branch #查看分支
git branch 分支名 #创建一个新的分支
git branch -d 分支 #删除这个分支
git checkout -b 分支名 #创建并且切换到一个新的分支下
git stash #将暂存区的记录,临时放到一个区域 ,先git add之后,再git stash
git stash pop #删除最后一个stash记录,放回暂存区
git rm #删除git版本库中的文件
git mv #改名
git remote add 别名 github仓库的地址
用法如下:
git remote add origin git@github.com:ayuchao/s16gitlearning.git
git push 别名 分支名
用法如下:
git push origin master #推送本地git仓库到github仓库了
git pull origin master #下载github远程仓库到本地来
1. Git初始的更多相关文章
- Git初始配置和基本使用
初次运行Git前的配置 本文是在安裝完git以后首先应做到一些配置,安装教程可以参考廖雪峰git教程 用户信息 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址. 这样做很重要,因为每 ...
- Git 初始仓库
配置好环境后,通常有两种方式使用git,一种从git仓库上克隆,进行操作,一种是在本地创建并初始仓库,进行操作.工作中前者比较多见. 下面演示如何在本地创建仓库. 1.新建一个目录 # mkdir t ...
- GIT初始学习记录
目录 GIT学习记录 配置github与gitlib两个账号 基本操作 git init:初始化仓库 git status:查看仓库状态 git add :向缓存区中添加文件 git commit 保 ...
- Windows git 初始设置
主要布署在 Linux 服务器上时,将全局设置 为提交自动转为 LF,签出不转换.git config --global core.autocrlf input(无效了,按默认即可) 设置全局用户名.
- Git 初始状操作指引
You have an empty repository To get started you will need to run these commands in your terminal. Ne ...
- git 初始用法
Git global setup git config --global user.name "xiaoming" git config --global user.email & ...
- Git初始配置【一】
Git客户端的工作 安装完成后,还需要最后一步设置,在命令行输入 $ git config --global user.name "Your Name" $ git config ...
- git流程及操作
一.git认识 git是什么?Git是目前世界上最先进的分布式版本控制系统 二.git安装 三.git创建本地库 1.首先选择e盘新建一个文件夹如douban 2.点击鼠标右键,执行Git Bash ...
- Pro Git 读书笔记
一. 起步 1. 集中式版本控制缺点:中央服务器的单点故障. 分布式版本控制优点:客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来. 这么一来,任何一处协同工作用的服务器发生故障,事后 ...
随机推荐
- 【转载】C++:switch红色下划线,Error:控制传输跳过的实例化解决办法
转载链接:https://blog.csdn.net/figoleon/article/details/50072029
- 如何查找jdk安装路径也就是JAVA_HOME配置的环境变量
- 4. java 流程控制
一.判断语句 1. if 判断 if(关系表达式){ 语句体; } int age = 16; if(age >= 18){ System.out.println("hello&quo ...
- 2015 经典的ImageCaptioning论文
1.Show and Tell: A Neural Image Caption Generator Google团队的成果 整体处理流程: 1)通过CNN提取到图片的特征,简称feature. 2)而 ...
- Spring Cloud 服务之间调用
微服务之多个服务间调用 现在又一个学生微服务 user 和 学校微服务 school,如果user需要访问school,我们应该怎么做? 1.使用RestTemplate方式 添加config imp ...
- BZOJ2007/LG2046 「NOI2010」海拔 平面图最小割转对偶图最短路
问题描述 BZOJ2007 LG2046 题解 发现左上角海拔为 \(0\) ,右上角海拔为 \(1\) . 上坡要付出代价,下坡没有收益,所以有坡度的路越少越好. 所以海拔为 \(1\) 的点,和海 ...
- prerender-spa-plugin预渲染踩坑
为什么要使用预渲染? 为了应付SEO(国内特别是百度)考虑在网站(vue技术栈系列)做一些优化.大概有几种方案可以考虑: 服务端做优化: 第一,ssr,vue官方文档给出的服务器渲染方案,这是一套完整 ...
- 【洛谷5368】[PKUSC2018] 真实排名(组合数学)
点此看题面 大致题意: 有\(n\)个数字,定义一个数的排名为不小于它的数的个数.现要随机将其中\(k\)个数乘\(2\),求对于每个数有多少种方案使其排名不变. 分类讨论 对于这种题目,我们可以分类 ...
- HTML引入JS、CSS的各种方法
直接上代码,相信大家是看得懂的,最好的办法是把代码粘过去,自己修改试试,看看效果! 上面是刚开始的执行效果,相应的html,js,css展示如下: index.html <!DOCTYPE ht ...
- Note | 常用指令,工具,教程和经验笔记
目录 图像处理 机器学习和数学 编程环境和工具 写作工具 其他 图像处理 获取图像频域并分解为高低频:https://www.cnblogs.com/RyanXing/p/11630493.html ...