git的学习笔记

简介: 1. Git介绍Git是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU的GPL(通用公共许可证)V2的条款分发的自由/免费软件,安装参见:http://git-scm.com/Git本身可以做到版本控制,但其所有版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。

1. Git介绍

  • Git是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。
  • Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。
  • Git 是根据GNU的GPL(通用公共许可证)V2的条款分发的自由/免费软件,安装参见:http://git-scm.com/
  • Git本身可以做到版本控制,但其所有版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。
  • GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。

集中式版本控制系统与分布式版本控制系统的区别

  • 集中式

    版本库是集中存放在中央服务器,用户客户端只有文件的某个版本.
    需要的时候,用户先从中央服务器下载最新版本的文件到本地电脑,然后开始修改,修改完成后再把自己修改后的版本推送给中央服务器。
    集中式版本控制系统最大的毛病就是必须联网才能工作,如果客户端到中央服务器的网络不好的时候,就会很影响工作的效率.
  • 分布式

    远程服务器保存所有版本,用户客户端也可以保存所有版本
    分布式版本控制系统中每个人的电脑上都有一个完整的版本库.需要的时候,可以不需要联网,因为版本库就在你自己的电脑上。
    多人协同工作的时候,一个用户在自己电脑上改了文件A,另一个人在他的电脑上改了文件B,工作结束只需把各自的修改推送给对方,就可以互相看到对方的修改了。

2. git的本地管理命令

2.1 创建版本库

git init                                                初始化当前目录
git config --golbal user.name "username"                设置版本库的使用者的名称    
git config --global user.email "username@mail.com"      设置版本库的使用者的邮箱
git add .                                               把当前目录加入到git管理目录,也可以使用*或者加文件名
git commit -m "message"                                 提交文件到当前分支,message为当前提交的描述信息
    git commit命令会给我们的提交保存快照,这样我们可以随时把文件回滚到修改之前的样子

需要注意的是:

* 在window上安装好git软件后,可以在git提示符下可以输入linux的命令来管理git的目录或文件
* 执行git init命令后,会在当前目录下生成一个.git隐藏目录,这个目录就是Git用来跟踪管理版本库的
* 创建git版本库流程的时候,git可以多次add文件,但只能commit一次
* git config命令的--global参数,表示你这台机器上所有的Git仓库都会使用这个配置,使用--local参数指定当前仓库的用户名和Email地址。

2.2 查看git仓库的信息

git status                      查看当前git仓库的状态
git diff *                      检查上一次对文件所做的修改内容
git log                         查看版本库的修改历史记录
git log --pretty=online         用commit id(版本号)显示修改记录,减少log文件的输出,使每条记录只输出一行
git reflog                      用来记录每一次命令(查询某次修改的版本号)

2.3 git的区域状态说明

工作区:

工作区(word directory)就是在电脑上能看到的目录
当前开发程序所在的目录为工作区,该区域的文件会有状态变化且状态由git自动检测
目录中的文件的任何变化(增,删,改),git都会检测到,可以使用git status命令查看

版本库:

版本库(repository)工作区有一个隐藏目录.git,保存的就是git的版本库
工作区检测到有文件发生变化,那么意味着文件状态被改变,这时就可以当做一个版本进行提交

工作区的代码通过git add来加入到暂存区,使用git commit命令把暂存区的文件加入到当前分支的(一般为git自动创建master的分区)

git的版本库中一个区域,称之为stage(或者叫index)的暂存区.
在工作区的文件被修改,使用`git status`查看状态时,显示文件的颜色为红色
使用`git add`把文件从工作区移到暂存区,再使用`git status`查看状态时,显示文件的颜色为绿色

需要注意的是,git是对文件更改的管理,不是基于文件的管理

2.4 版本回退

git reset --hard HEAD^          回退到上一个版本
git reset --hard HEAD^^         回退到上两个版本
git reset --hard 123456         回退到版本号为123456的版本
git reset --hard commit_id^     回退到指定commit_id的版本
  • 注意

    • HEAD^为上上一个版本,HEAD表示当前版本
    • 使用git reset命令回退后,再使用log命令将只能获得当前HEAD版本之前的版本,此时可以使用git reflog找到比当前版本新的版本的commit id就可以回滚回去了
    • log命令可以查看提交历史,reflog可以查看命令历史

2.5 撤消修改

git checkout --filename     撤销工作区的修改,把工作区的文件恢复到暂存区的状态
    如果文件修改后还未放到暂存区,撤消修改就回到未修改之前的状态
    如果文件修改后已添加到暂存区,撤消修改就回到添加进暂存区时的状态
git reset HEAD filename     把暂存区的修改撤消掉,重新放回到工作区,这条命令是在把修改后的文件提交到暂存区之后又后悔了,使文件恢复到版本库的状态
git rm filename             用于删除一个文件 
  • 注意

    • 若误删文件时,使用git checkout --filename 来恢复到未删除之前的状态
    • 确实要删除一个文件,使用git rm filename将其从git版本库中删除
    • git checkout和git reset都是在将文件add到暂存区,没有commit时的撤消修改
    • 若已经将文件从暂存区commit到版本库而未推送到远程时,可以回退到上一个版本
    • 若文件已经被推送到远程,则无法撤消

2.6 分支管理

git branch dev          创建一个dev分支
git branch              查看分支的信息
git branch -d dev       删除dev分支
git checkout dev        从当前分支切换到dev分支
git checkout -b dev     创建一个dev分支并切换到dev分支
git merge dev           把dev分支合并到当前分支(一般为master)
git checkout --*        把文件返回到修改之前的状态

合并分支的时候如果出现冲突,那么将会出现冲突提醒,此时修改文件,解决冲突后再次提交就可以了

可以使用git log或者git log --graph指令来查看分支与分支合并情况

2.7 忽略文件的推送

有的时候,提交推送的时候不想提交某些文件,此时可以在这个项目根目录下新建一个名为.gitignore的文件,

在这个文件里可以进行配置提交的时候忽略哪些文件,配置使用正则表达式的形式.
比如:

*.py                忽略所有的以py结尾的文件
test/a.*            忽略test目录下所有的以a开头的文件
test/[abc].py       忽略test目录下a.py或b.py或c.py这三个文件
[abc]               忽略根目录下a或b或c这三个文件
test/*              忽略test目录下的所有文件
!test/a.py          忽略test目录下不是a.py以外的所有文件,即只提交a.py这个文件

配置完成后,需要清除本地缓存,然后再次提交.

清除本地缓存的命令:

git rm -f --cached .

2.8 Bug分支

git stash               储存当前工作现场
git stash list          列出所有stash
git stash apply         恢复最近一次储存的stash
git stash drop          删除最近一次储存的stash
git stash pop           恢复+删除最近一次stash
git stash stash@{num}   恢复指定stash

3. git远程管理命令

3.1 创建ssh key

ssh-keygen -t rsa -C "your_email@example.com"

执行命令后会在用户的家目录生成.ssh的隐藏文件夹,文件夹里有公钥id_rsa.pub和私钥id_rsa

3.2 登录github网站,在用户的settting页面,添加ssh key,把刚才生成的私钥内容粘贴到key文本中.

3.3 远程仓库的管理

git remote add origin <remote URL>              使用https方式将本地仓库关联到远程仓库(远程仓库名默认为origin)
git remote add origin git@github.com:用户名/repo_name.git      使用git方式将本地仓库关联到远程仓库
git remote remove origin                        删除关联到本地的远程仓库,origin是远程库的名字
git pull origin master                          将远程origin代码拉到本地master分支
git push origin master                          将本地master分支代码推到远端origin
git clone <HTTP URLs/remote URL>                复制远程项目到本地

3.4 多人协作

git remote                      查看远程仓库
git remote -v                   查看远程仓库的详细信息
git push origin master          把本地分支origin的文件推送到远程仓库的master分支
git pull origin master          把远程仓库中的master分支同步到本地仓库的origin分支
目录
相关文章
|
3月前
|
Shell 网络安全 开发工具
Git学习笔记
Git学习笔记
79 1
Git学习笔记
|
7月前
|
Linux 网络安全 开发工具
Git学习笔记
Git学习笔记
56 0
|
8月前
|
Linux 网络安全 API
git常用命令学习笔记
git常用命令学习笔记
45 0
|
9月前
|
程序员 开发工具 git
搭建博客可能会用到的 Git 命令|学习笔记
搭建博客可能会用到的 Git 命令|学习笔记
|
10月前
|
算法 安全 Linux
git第n次学习笔记
git第n次学习笔记
71 0
|
12月前
|
项目管理 开发工具 git
Git学习笔记(三) git submodule
Git学习笔记(三) git submodule
125 0
|
12月前
|
缓存 开发工具 git
Git学习笔记(二) git stash
Git学习笔记(二) git stash
853 0
|
12月前
|
开发工具 git
Git学习笔记(一) 常用命令
Git学习笔记(一) 常用命令
104 0
|
12月前
|
缓存 Linux 程序员
【学习笔记之Linux】工具之make/Makefile与git
【学习笔记之Linux】工具之make/Makefile与git
172 0
|
开发工具 git 索引
Git学习笔记-详细使用教程
Git学习笔记-详细使用教程
Git学习笔记-详细使用教程

热门文章

最新文章

相关实验场景

更多