Git常用操作指南(附图文)

  1. 云栖社区>
  2. 博客>
  3. 正文

Git常用操作指南(附图文)

大黄有故事 2017-03-26 15:33:51 浏览820
展开阅读全文

获取Git仓库(Git repository)

  • 使用Git的第一步是要获取一个Git仓库,我们使用Git的操作对象都是存放在Git仓库里,获取Git仓库的方式有两种:
  • 导入一个项目或目录到Git,初始化(init)生成Git仓库;
    从远程服务器克隆(clone)一个Git仓库。

初始化仓库(init)

若我们需要使用一个项目或目录生成一个Git仓库,只需要通过命令行进入该目录,执行如下Git指令:

git init

此操作将在此目录生成一个.git子目录,该目录包含整个仓库结构,即仓库的所有文件;同时会检出(checkout)一个默认工作分支,通常名为master。

此时,我们只是初始化生成了一个Git仓库,还未添加需要进行版本控制的对象–文件或目录。

这里写图片描述


克隆仓库(clone)

很多时候,我们需要从远程服务器获取一个已存在的Git仓库,我们只需要使用如下指令:

git clone https://github.com/HuangQinJian/WeiBo

git clone后面跟着的url就是已存在的Git仓库地址,我们需要知道的是Git克隆是对服务器上仓库的一次近乎完整的数据拷贝,当前仓库项目的所有文件及其各版本历史都会被获取。

执行如上指令后,会在当前目录创建一个WeiBo目录并在WeiBo中初始化一个.git子目录,拉取仓库的所有数据,然后根据仓库(或项目)的最新版本检出(check out)一个工作分支,通常该分支默认名称为master。

这里写图片描述


工作目录及其内对象的状态

相关指令:

git status

当我们获取一个仓库,如克隆一个远端仓库后,在仓库目录执行上面指令,如图所示:

这里写图片描述

  • 图中第一行on branch master告诉我们当前我们处在名为master的分支;
  • 第二行up-to-date with ‘origin/master’,说明目前分支与远程仓库的master分支保持同步最新版本;
  • 第三行working directory clean,说明目前仓库中没有新加或修改过的对象(文件或目录)。

添加对象(git add)

添加版本控制对象的指令是git add,比如,我们可以使用如下指令添加一个test.txt文件,当然我们首先需要在仓库目录下,创建该文件(任意方式创建),查看状态:

这里写图片描述

如上图,显示test.txt文件为Untracked file,并且提示:use git add to track; 然后使用git add指令后:

git add test.txt

再次执行git status指令:

这里写图片描述

如上,出现:Changes to be committed,说明该文件已被标记(tracked)且被暂存,我们可以进行提交了。


提交变更(git commit)

所有的变更,最终都需要提交,才能在本地持久化报存,在将所有变更暂存(git add)后,我们就可以进行提交了,相关指令就是:

git commit

在输入如上指令后,将进入Git commit信息编辑状态:

这里写图片描述

我们可以编辑本次提交的备注信息,其中的默认备注信息都以#开头,表明提交时会被忽略。

git commit指令告诉Git持久化记录(提交)我们暂存区(staging area)中的快照,任何未被暂存的变更,不会被添加进暂存区的快照,仍然保留在当前工作目录,我们可以随后提交。

注意:此时变化只是在本地持久化报存!!!并没有更新到版本库中,即GitHub网页上,需进行git push origin master操作,即最后一步操作!!!


除了使用默认的git commit指令,我们还可以添加-v参数,在提交信息中显示变更内容,如下:

这里写图片描述

如上图,和之前的比较,除了基本的提示,还有文件变更内容提示,可以避免某些误提交。


行内输入提交信息(git commit -m)

当然,Git还支持我们使用-m参数,指明我们在使用git commit指令时直接填写提交备注信息:

这里写图片描述


查看提交历史(git log)

本节要介绍的是如何查看之前的提交历史及信息,你应该知道的git log指令,
默认地,不带参数时,执行git log指令,输出的是当前仓库按逆序排序(最近提交在最前)的提交记录:

这里写图片描述


删除对象(git rm)

很多时候,我们也会需要从Git仓库中删除某些对象,rm就是删除文件或目录的指令,但是需要特别强调的是,该指令只是将某对象从当前工作目录删除,如:

这里写图片描述

使用rm后,当前状态是”Changes not staged for commit:”此次变更未被暂存和提交。
若你需要将某对象从已标记文件或暂存区删除,则需要使用git rm指令,如下:

这里写图片描述

使用git rm后,变更会被暂存。


当修改了最后一次提交的修改操作,意味着已经准备好将更改。推操作的数据永久存储的Git仓库。推操作成功后,其他开发人员可以看到Git仓库的变化!!!

这里写图片描述

Git仓库的变化成功地推到版本库,现在其他开发人员可以查看他的变化进行克隆或更新操作。


分支相关操作

1、查看远程分支有哪些

git branch -a

2、创建新分支

git branch testing

3、当前所在的本地分支

git log --oneline --decorate

4、分支切换

git checkout testing

5、删除本地分支

git branch -d testing

6、删除远程分支

git push origin --delete testing

Git fetch和pull的区别

Git中从远程的分支获取最新的版本到本地有这样2个命令:

git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git fetch origin master
git log -p master..origin/master
git merge origin/master

以上命令的含义:

首先从远程的origin的master主分支下载最新的版本到origin/master分支上;然后比较本地的master分支和origin/master分支的差别;最后进行合并。上述过程其实可以用以下更清晰的方式来进行:
git fetch origin master:tmp
git diff tmp
git merge tmp
从远程获取最新的版本到本地的tmp分支上之后再进行比较合并

git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

上述命令其实相当于git fetch 和 git merge 在实际使用中,git fetch更安全一些。因为在merge前,我们可以查看更新情况,然后再决定是否合并结束。

网友评论

登录后评论
0/500
评论
大黄有故事
+ 关注