Git简单应用

Git的简单应用(1)

2016-12-05  本文已影响9人  qin7zhen
Git

分布式版本控制系统(DVCS)

在分布式版本控制系统(Distributed Version Control System,DVCS)中,客户端不仅提取最新版本的文件快照,而且也会把代码仓库完整地镜像下来。这样,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。目前,常用的DVCS系统有Git、Mercurial、Bazaar 以及 Darcs 等。


DVCS结构

Git的介绍

主要特点

  1. 所有操作都是本地执行;
  2. Git可及时发现在传送过程中信息的丢失或文件的损坏;
  3. Git保证你提交后的数据不会丢失。

三种状态

  1. 已修改(modified):文件发生了修改,但尚没保存到数据库中。
  2. 已暂存(staged):标记已修改文件的当前版本,在下次提交的快照中包含该文件。
  3. 已提交(committed):文件数据已经安全的保存在本地数据库中。

工作流程

在工作目录中修改文件。
(git add)暂存文件,将文件的快照放入暂存区域。
(git commit)提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

Git的应用

1.Git的基本配置信息

git config --global user.name "<username>"
git config --global user.email "<email-address>"

完成全局 Git 用户名和 Email 设置。设置后,Git默认采用该用户名和 Email 提交代码。

git config --list

查询当前Git的配置。

2.Git的忽略文件

主要针对工作目录下你不愿意提交的文件,比如你的密码备忘录。
Git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。下面列举几个常用的配置语法。

在仓库的根目录下,手动创建Git 的 .gitignore 文件。

以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录。

3.初始化版本库

git init

在当前工作目录默认为本地仓库,初始化Git版本库。

4. 查看仓库状态

git status

查询当前版本库的状态。如果你在本地仓库中更改了任何文件的内容,Git会检测到该文件,并在这里进行状态的显示:

5. 文件的添加与提交

git add <file-name>

将指定文件添加到Stage暂存区。

git commit -m '<comments>'

将暂存区内的文件提交到Git,并为本次提交添加评论comments。

6. 查看文件的提交记录

git log

查询文件的提交记录。返回每次提交的哈希文件名、提交者、提交日期以及提交者对本次提交的评论。

7. 创建和删除分支

默认情况下,我们会在Master主线上进行工作。但某些情况下,我们需要完成一些自己支线上的任务,并希望不会影响到后续主线任务的开发。这时,你可以在仓库中创建分支用于开发支线任务。支线任务完成后,你也可以选择是否合并到Master上。

git checkout -b <branch-name>

创建并切换到一个新的分支。

git checkout <branch-name>

切换到一个已有的分支。

git branch -l <branch-name>

创建一个新的分支。

git branch -d <branch-name>

删除一个已有的分支。

git branch --list

显示所有的分支以及当前所在分支。

8. 代码重置

某些情况下,你的文件需要恢复到之前的某个指定状态。


git reset HEAD^          #回退所有内容到上一个版本 
git reset HEAD^ a.py     #回退a.py这个文件的版本到上一个版本 
git reset HEAD~3         #向前回退到第3个版本 
git reset –hard origin/master #将本地的状态回退到和远程的一样 
git reset 057d           #回退到某指定版本 

9. 远程管理仓库

git remote add  <remote-name> <repository-URL>

在远程服务器URL上添加一个远程仓库<remote-name>。

git remote show <remote-name>

查询指定主机的详细信息。

git remote rm <remote-name>

删除指定的远程主机。

git remote rename <remote-name> <new_remote-name>

修改远程的主机名。

10.推送到远程仓库

git push <remote-name> <local-branch-name> :<remote-branch-name>

将本地分支上的更新,推送到远程主机指定的分支上。

git push -u <remote-name> <local-branch-name>

将本地的分支推送到<local-branch-name>主机,同时指定其为默认主机。

git push --all <remote-name>

将所有本地分支都推送到origin主机。

11.更新与合并

git fetch <remote-name> <local-branch-name>

从远程获取最新版本到本地,但不会自动merge。

git diff <source-branch> <target-branch>

比较<source-branch>分支和<target-branch>分支的差别。(帮你读懂diff

git merge <branch-name>

合并指定的其他分支到当前分支。

git pull <remote-name> <local-branch-name>

从远程获取最新版本并直接合并到本地。没有fetch+diff+merge组合的安全性高。

12. Rebase

rebase用于把一个分支的修改合并到当前分支。

假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。一段时间后,在origin和mywork两个分支上分别都发生了不同的修改。

git checkout mywork
git rebase origin

你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。

13. 克隆仓库

git clone <path-to-clone-repository>

创建一个指定仓库的克隆版。

Reference

充分了解 Git 并入手单人开发 http://www.jianshu.com/p/b238de250c06
Git 学习笔记(初识 Git) http://www.jianshu.com/p/32dcad25b29a
Git版本恢复命令reset http://www.cnblogs.com/0616--ataozhijia/p/3644482.html
https://try.github.io/levels/1/challenges/1
Git远程操作详解 http://www.ruanyifeng.com/blog/2014/06/git_remote.html
git rebase简介(基本篇) http://blog.csdn.net/hudashi/article/details/7664631

上一篇下一篇

猜你喜欢

热点阅读