git,按照官方的定义来说,是一个开源的分布式版本控制系统。
翻译成人话,大概就是可以管理不同版本的文件。比如在日常生活中,当我们在进行某个项目时,每次修改都要保存一点,如果觉得本次修改的不好,又想找回原来的版本,就得不停地存储新的版本的文件。更要命的是,如果这个项目是多人协作的,你就得不停地合并不同人的建议。而git就是用来解决这个问题的。
git是由Linus用C语言编写的,对,就是那个Linux操作系统的那位鼻祖人物,采用的是分布式的控制系统,而不是集中式。
集中式指的是所有的库都在一个中央服务器中,开发者在使用的时候必须从服务器中下载文件,修订完毕后再上传。这就导致必须联网才能工作,并且安全性不高,一旦中央处理器瘫痪,文件就全部都销毁了。
而分布式就不存在这样的一个中央服务器了,每个人的电脑上都有一个完整的库,可以通过相互传输文件给对方实现交互。
首先来了解一下本地中的三个存储区域。
working directory就是工作的区域,可以在此对文件进行修改。repository就是提交最终版本的文件的地方,并且它是开源的。暂存区是暂时存放文件的地方,可以叫做stage/index,文件需要先进入暂存区,才能提交到仓库中。
1.git的安装
点击Git - Downloads (git-scm.com),选择合适的版本安装,安装完成后,如果右击能出现下图所示的“Git GUI Here”和“Git Bash Here”代表安装成功。GUI表示通过图像界面操作,Bash表示通过命令行格式进行操作。这边主要演示通过Bash的方式。
2.创立仓库
本地仓库的创立很简单,比如在windows操作系统下,我在桌面新建一个git的文件夹。
(1)在该文件夹下右键选择“Gut Bash Here”创建一个新的文件夹作为项目仓库。
$ mkdir test
仓库新建完成后需要对其将当前工作目录切换到test的文件夹下或者点击test文件夹,在该文件夹下右键“Git Bash Here”。
$ cd test
$ pwd
#C:/Users/Lenovo/Desktop/git/test
(2)初始化repository
$ git init
#Initialized empty Git repository in #C:/Users/Lenovo/Desktop/git/test/.git/
通过该命令对仓库初始化,会发现在该目录下,出现了.git的隐藏文件。(如果无法显示隐藏文件的,自行百度)
(3)提交文件
$ touch readme #创建文件
$ git status #查看文件状态
$ git status
#On branch master
#No commits yet
#Untracked files:
# (use "git add <file>..." to include in what will be committed)
# readme
#nothing added to commit but untracked files present (use "git add" #to track)
创建了一个名为readme的文件,可以通过vi或者打开文件输入任意字符。
目前没有可以commit到仓库的文件,但是存在一个未被记录的文件,可以通过将它提交到暂存区使git能够跟踪该文件。
$ git add readme #将文件从工作区提交到暂存区
$ git status
#On branch master
#No commits yet
#Changes to be commited:
# (use "git rm --cached <file>..." to unstage)
# new file: readme
$ git commit -m "this is the first time to commit file using git" #引号写对该文件修改的描述,将文件从暂存区提交到仓库,一般最后完成后提交一次
#[master (root-commit) 34f4431] this is the first time to commit file #using git
# 1 file changed, 1 insertion(+)
# create mode 100644 readme
$ git status
#On branch master
#nothing to commit, working tree clean
(4)修改文件
如果对文件进行了修改,而此时文件还在working directory,尚未提交到暂存区,可以通过git restore来恢复文件到上一次修改的状态。
$ git status
#On branch master
#Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git restore <file>..." to discard changes in working directory)
# modified: readme
#no changes added to commit (use "git add" and/or "git commit -a")
$ git restore readme
如果修改的文件已经提交到了暂存区,通过git restore命令将其恢复到未提交到暂存区的状态,但是工作区的该文件已经经过了修改。可以进一步通过上一步的命令去校工作目录中的文件修改。
$ git restore --unstaged readme
如果对文件进行了删除
$ rm readme #从工作目录中把文件删除
$ git rm readme
$ git commit -m “description”
注意:所有的文件修改都遵循从working directory——index——repository三个步骤。
(6)递交到远程服务器
首先查看在用户的主目录下,是否存在.ssh的文件夹,其中包含id_rsa.pub公钥和id_rsa私钥。
例如我的电脑中.ssh存在于C:\Users\Lenovo.ssh
在GitHub的setting中加入id_rsa.pub文件的内容。
如果不存在,需要创建ssh.key
$ ssh-keygen -t rsa -C "youremail@example.com"
接下来需要添加本地库到远程库中
$ git remote add origin git@github.com:TIPPLERXIE/text.git #格式为用户名/库名
接下来就能看到github的仓库中同步了在本地的修改的文件。
browse Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)
Git 分支管理 | 菜鸟教程 (runoob.com) for more information
网友评论