赞
踩
Git是属于分布式版本控制系统(Distributed Version Control System,简称 DVCS)
电脑上要想使用Git,我们需要先对Git进行安装:
根据自己的操作系统下载Git即可;
在window操作系统按照默认配置全局安装即可;
既然已经在系统上安装了 Git,你会需要做几件事来定制你的 Git 环境:
Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量:
安装Git后,要做的第一件事就是设置你的用户名和邮件地址。
$git config --global user.name "你的名字"
$git config --global user.email "你的邮箱"
我们需要一个Git来管理源代码,那么我们本地也需要有一个Git仓库。通常有两种获取 Git 项目仓库的方式:
- 该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的核心;
- 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪;
- git init
git clone https://github.com/coderwhy/hy-react-web-music.git
现在我们的电脑上已经有一个Git仓库:
在实际开发中,你需要将某些文件交由这个Git仓库来管理,并且我们之后会修改文件的内容,当达成某一个目标时,想要记录下来这次操作,就会将它提交到仓库中,那么我们需要对文件来划分不同的状态,以确定这个文件是否已经归于Git仓库的管理
未跟踪:默认情况下,Git仓库下的文件也没有添加到Git仓库管理中,我们需要通过add命令来操作;
已跟踪:添加到Git仓库管理的文件处于已跟踪状态,Git可以对其进行各种跟踪管理;
在工作时,你可以选择性地将这些修改过的文件放入暂存区,然后提交所有已暂存的修改,如此反复;
我们在有Git仓库的目录下新建一个文件,查看文件的状态:
Untracked files:未跟踪的文件
未跟踪的文件意味着 Git 在之前的提交中没有这些文件;
Git 不会自动将之纳入跟踪范围,除非你明明白白地告诉它“我需要跟踪该文件”;
我们也可以查看更加简洁的状态信息:
跟踪新文件命令:使用命令 git add 开始跟踪一个文件:
跟踪修改的文件命令:
通过git add . 将所有的文件添加到暂存区中:
在提交了若干更新,又或者克隆了某个项目之后,有时候我们想要查看一下所有的历史提交记录。
这个时候我们可以使用git log命令:
不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面;
这个命令会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明;
git log
git log --pretty=oneline
git log --pretty=oneline --graph
如果想要进行版本回退,我们需要先知道目前处于哪一个版本:Git通过HEAD指针记录当前版本。
HEAD 是当前分支引用的指针,它总是指向该分支上的最后一次提交;
理解 HEAD 的最简方式,就是将它看做 该分支上的最后一次提交 的快照;
我们可以通过HEAD来改变Git目前的版本指向:
上一个版本就是HEAD^
,上上一个版本就是HEAD^^
;
如果是上1000个版本,我们可以使用HEAD~1000
;
我们可以可以指定某一个commit id;
什么是远程仓库(Remote Repository)呢?
那么如何创建一个远程仓库呢?
目前我们有如下方式可以使用Git服务器:
常见的远程仓库有哪些呢?目前比较流行使用的是三种:
GitHub:https://github.com/
Gitee:https://gitee.com/
自己搭建Gitlab:http://152.136.185.210:7888/
对于私有的仓库我们想要进行操作,远程仓库会对我们的身份进行验证:
目前Git服务器验证手段主要有两种:
方式一:基于HTTP的凭证存储(Credential Storage);
方式二:基于SSH的密钥;
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。
SSH以非对称加密实现身份验证。
例如其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录;
另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录;
公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管;
如果我们以SSH的方式访问Git仓库,那么就需要生产对应的公钥和私钥:
ssh-keygen -t ed25519 -C “your email"
ssh-keygen -t rsa -b 2048 -C “your email"
git remote add <shortname> <url>
git clone http://152.136.185.210:7888/coderwhy/gitremotedemo.git
删除本地tag:要删除掉你本地仓库上的标签,可以使用命令 git tag -d <tagname>
删除远程tag:要删除远程的tag我们可以通过git push <remote> –delete <tagname>
git checkout
命令;
git branch
命令:git branch testing
git checkout testing
如果我们指向某一个分支,并且在这个分支上提交:
你也可以切换回到master分支,继续开发:
git checkout -b <newbranchname>
一条命令搞定;git checkout –b hotfix
git checkout master
git merge hotfix
如果我们想要直接执行git fetch是有一个前提的:必须给当前分支设置一个跟踪分支:
问题二:合并远程分支时,拒绝合并不相干的历史
原因:我们将两个不相干的分支进行了合并:简单来说就是:过去git merge允许将两个没有共同基础的分支进行合并,这导致了一个后果:新创建的项目可能被一个毫不怀疑的维护者合并了很多没有必要的历史,到一个已经存在的项目中,目前这个命令已经被纠正,但是我们依然可以通过--allow-unrelated-histories
选项来逃逸这个限制,来合并两个独立的项目;
git push origin <branch>
git checkout --track <remote>/<branch>
git checkout --track <remote>/<branch>
git checkout <branch>
git push origin --delete <branch>
git checkout experiment
git rebase master
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。