创建仓库
选择一个合适的地方,创建一个空目录
- mkdir GitDemo
- cd GitDemo
- git init
Initialized empty Git repository in /Users/timmy/GitDemo/.git/
文件提交
在使用git的过程中,我们未来管理需要的文件一般需要执行 git add(添加到版本控制)和git commit(提交我们的修改)
- git add 可以指定一个文件,可以指定目录,也可以使用 git add .标示添加当前文件夹下面的所有文件到版本控制
- git commit 一般会使用 git commit -m "提交的注释" xxx ,xxx表示需要提交的文件或文件夹。当然也可以使用 git commit -m "注释" . 来提交当前文件夹下面的所有文件
在实际使用中,一般初始化的时候我们会去使用 git add . 和git commit -m "初始化提交" .
查看当前仓库的状态
前面我们已经将需要管理的文件添加到了版本控制你们,当时我们有什么办法知道我们现在修改了那些文件,以及修改的内容是什么呢?那就要使用到git status 和 git diff 这两个命令了
git status 命令可以让我们时刻掌握仓库当前的状态,会列出当前仓库里所有修改的文件
git diff 命令可以来查看我们具体的修改,可以直接使用git diff这样就会查看所有的修改文件,这样看起来不是特别明确。我们可以使用 git diff 后面跟上文件或者文件就可以指定查看我们具体的修改地方了
关于git diff命令列出的信息怎么看,-表示我们删除的文件,+表示我们添加的文件。在git中只有删除和添加,没有修改这个说法
版本回退
有时我们在一个版本中在开发新的功能或者解决bug,突然有新的要求或者说这个功能不需要了,这样我们就可以使用版本回退很方便的来解决这样的事情,git reset
- git reset 命令可以让我们版本回退,使用HEAD表示当前版本,HEAD表示上一个版本,HEAD^表示上上个版本
例:git reset --hard HEAD^ 表示回退到上一个版本
配合git log简单的回退版本
- 先使用git log 可以查看所有提交的记录,然后使用git reset xxx,xxx表示提交的版本编号
修改恢复以及删除版本管理
git checkout命令表示从仓库检出一份文件,git checkout xxx,后面可以跟文件夹以及文件。这条命令使用时一定要注意,因为他会直接删除掉我们本地的修改记录
git rm 命令是让文件或文件夹不使用版本控制
分支的简单使用
在git 使用中我们一般会存在两个分支master,dev。master为主分支作为软件版本发布时候使用,所有的开发要到dev分支上。待开发完成之后在合并到master分支
- git branch dev,表示创建一个dev分支
- 然后使用git checkout dev 切换到dev分支,这样我们就可以在dev分支上进行软件的开发了
- git checkout -d dev 表示删除dev分支。这个时候需要注意,一定要将dev分支合并到master分支上在进行删除,否则我们写的代码就全部没有了
git merge分支合并,首先我们切换到我们要合并到的分支,一般都是合并到主分支
- git chcekout master 切换到主分支
- git merge --no-ff -m "xxxx" dev ,xxx表示我们这次合并时候的信息,也相当于一个提交记录,dev表示要合并的分支,--no-ff表示不允许快进,不加这个git只会简单的把master指针指dev的头部
远程仓库
- 创建远程创库,这里我推荐使用 git --bare init
- 关联远程仓库 git remote add origin git@xxxx.com:timmy/gitdemo.git。origin这个可以自己随意指定,一般我们都使用origin表示远程仓库的意思
- 提交到远程仓库,首次提交我们要指定提交的分支。git push origin master,表示我们将本地的master提交到远程仓库
- 更新本地仓库 git pull ,当然我们也可以在后面加origin xxx 表示只更新那一个分支
从远程仓库克隆一份到本地
- git clone xxxx,xxxx表示远程仓库的地址
- git checkout -t origin/dev 表示从远程仓库dev剪切一份到本地并且本地分支名字为dev,同事也会切换到dev分支
关于git一些配置
$ git config --global user.name "Your Name" 提交时候的用户名
$ git config --global user.email "[email@example.com]" 提交时候使用的邮箱