接上节windows 下使用git及连接github及IntelliJ IDEA配置git
下面我们详细总结一下git基础命令
1 Git初始化
Git版本控制交互图
根据上图,首先我们需要创建共享版本库,那么这个共享版本库就是开发人员提交共同参与维护的代码仓库。
需要说明的是本地开发人员commit提交,需要使用自己本地仓库,只有先提交本地仓库,然后才能提交到远程仓库。本地仓库可以说是共享仓库的备份。
要对现有的某个项目开始用 Git 管理,只需项目所在的目录,执行:
1.1 建立共享版本库
在F盘建立仓库repository/git下面建立git的共享版本库,用户开发人员上传代码,更新代码等等。
建立共享版本库有2种方式,一种是直接初始化,另一种是clone远程仓库。那么下面直接使用初始化仓库方式:
$ git init
在当前目录下初始化了一个git仓库:
初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都
存放在这个目录中。不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目
录,但我们还没有开始跟踪管理项目中的任何一个文件。
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对
这些文件进行跟踪,然后提交:
1.2 建立用户本地仓库
注意,本地仓库其实就是用户的工作空间,在git中本地仓库和工作空间项目如影随行,工作空间即是git本地仓库。因此本地仓库需要从共享仓库中检出文件。
我们可以先初始化一个仓库,然后从共享仓库中pull下载文件,也可以直接clone共享版本库中文件。
如果你熟悉其他的 VCS 比如 Subversion,你可能已经注意到这里
使用的是 clone 而不是 checkout。这是个非常重要的差别,Git 收取的是项目历史的所有数据(每一个文件的每一个版本),服务器上有的数据克隆之后本地也都有了。实际上,即便服务器的磁盘发生故障,用任何一个克隆出来的客户端都可以重建服务器上的仓库,回到当初克隆时的状态
克隆仓库的命令格式为 git clone [url]
克隆当前创建code仓库:
命令:git clone /f/repository/git/.git/
克隆效果:
发现在user1目录下面,git已经被克隆成功。
克隆当前创建code仓库并重命名:
命令:git clone /f/repository/git/.git/ thegit
3 检查当前文件状态
要确定哪些文件当前处于什么状态,可以用 git status 命令。如果在克隆仓库之后立即执行此命令,会看到类似这样的输出:
记录每次更新到仓库
图 2.1: 文件的状态变化周期
$ git status
# On branch master
nothing to commit (working directory clean)
这说明你现在的工作目录相当干净。换句话说,当前没有任何跟踪着的文件,也没有任何
文件在上次提交后更改过。此外,上面的信息还表明,当前目录下没有出现任何处于未跟踪
的新文件,否则 Git 会在这里列出来。最后,该命令还显示了当前所在的分支是 master,
这是默认的分支名称,实际是可以修改的,现在不必多虑。
现在让我们用 vim 编辑一个新文件 README,保存退出后运行 git status 会看到该文件
出现在未跟踪文件列表中:
$ vim README
$ git status
# On branch master
# 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)
就是在“Untracked files”这行下面。Git 不会自动将之纳入跟踪范围,除非你明明白白地告诉它这么做,因而不用担心把临时文件什么的也归入版本管理。不过现在我们确实想要跟踪管理 README 这个文件。
4 设置个人信息
首先要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记
录:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你
所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或
者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config文件里。
git config user.name "user1"
git config user.email "user1@163.com"
设置配置文件在.git目录下config文件,文件内容如下:
$ cat config
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = F:/repository/git/.git/
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[user]
name = user1
email = user1@163.com
5 添加
在user1用户中创建一个文件。
命令:touch a.java
创建成功后,此文件并没有纳入版本控制,因此不能提交。提交之前需要先纳入版本控制:
命令:git add a.java
Git通过命令add把文件纳入git版本控制中
6 提交
此时user1用户就可以提交:
使用如下命令提交在暂存区文件到仓库中,提交时必须添加注释信息,-m就表示添加注释信息。
git commit -m “the first” a.java
提交文件后,需要把文件提交共享版本库中:origin记录clone来源地
git push origin master
7 更新
git pull 直接从共享版本库中下拉项目文件即可
8 切换分支
git checkout dev切换至本地dev分支
9 解决代码冲突
git rebase dev 解决本地当前分支与本地dev分支中的代码冲突
10 其他git命令
git stash储存(避免脏提交)
git stash pop改完之后返回继续之前工作
git log 查看提交日志
git reset --hard "版本号"版本回退