频道栏目
首页 > 资讯 > 其他 > 正文

Git 入门

16-08-31        来源:[db:作者]  
收藏   我要投稿

git 介绍

什么是git

git 是一种免费开源的版本控制工具,是由 Linux 发明者 Linus Torvalds 开发,使用 git 可以很方便的进行代码协同开发、版本控制。
git 与 svn
git 是分布式的,svn 是集中式。git 可以把仓库克隆到本地,在自己的机器上进行开发,将代码提交到本地,最后提交到远程仓库;svn 需要从服务器获取代码,开发完之后再提交回服务器,脱离了服务器无法提交。
git 与 github
git 是开源版本控制系统,github 提供基于 git 的代码托管服务, github 上的公开仓库是完全免费的。

git 安装

Mac 上装好 Xcode 后就会自动安装好 git,在 terminal 输入 git –version 能够看到版本信息就说明已经安装好了
Windows 上安装的方法可以在 git 官网下载安装 git 官网

git 入门

0. 配置账户信息

git config --list - 查看当前的配置
git config --global --add user.name chaoyang805 user.email ****@email.com 添加用户名和邮箱 –global 代表全局

1. 创建/提交 git 项目

git init - 在当前文件夹初始化一个空的 git 仓库. 初始化完仓库是空的,也就是还没有任何工程文件加入到 git 管理.
git-init

git status - 查看当前仓库的状态.
git-status

git add [filename] - 添加文件到暂存区.
git-add

git commit - 进行一次提交
git-commit

2. 分支操作

master 分支 - 创建仓库后默认所在的分支,也是项目的主分支,其他分支都是从 master 分支的基础上创建出来的,最后也需要合并到master。 git branch [branch-name] - 从当前分支的基础上创建新的分支。 git branch -v - 查看当前仓库的分支(-v 查看详细信息)

git-branch

git checkout [branch-name] - 切换分支,现在来切换到 develop 分支:

git-checkout-branch

git checkout -b [branch-name] - 这条命令将切换分支和创建分支合在一起,如果不存在就创建:

git-checkout-b

git branch -d [branch-name] - 删除分支,如果没有合并到 master 会有提示,可以使用 -D 参数强制删除.

git-branch-d

git merge [branch-name] - 将指定分支合并到当前分支,下面我们将刚才在develop所做的修改合并到 master:

git-merge
然后就可以删除 develop 分支了:
git-branch-d-2

3. 撤销修改

三个概念

工作区 - 正在操作的内容属于工作区的 暂存区 - 执行git add 的文件会存入暂存区 历史区 - 保存提交的历史记录

checkout & reset

git checkout \ - 将上一次暂存区的文件覆盖到工作区(上一次 add 之后的初始状态)

下面来做两个演示,
第一:修改1.txt,然后使用 git checkout 命令。来看图:
git-checkout-1
使用checkout命令后,会发现之前对工作区中做的修改被撤销,打开这个文件也会看到,新添加的内容都没有了。再往下看第二种情况。

第二:修改1.txt,然后将1.txt添加到暂存区,再修改1.txt, 再用git checkout 命令。看图:
这是修改了1.txt 后,第二行内容是刚插入的:
git-checkout-3
然后git add 添加到暂存区
git-checkout-4
再修改1.txt的内容,又插入了一行文字,
git-checkout-5
现在再使用git checkout 命令
git-checkout-6
这次是第二次添加到1.txt的内容被撤销掉了。
也就是说git checkout命令会把工作区的内容恢复到上次add后的初始状态,add 后再做的修改都会没有

git reset HEAD \ - 将 git add 的内容移除暂存区(将 add 过的内容取消 add)
将刚才 add 的 1.txt 取消add,看下面的图:
git-reset-1
reset 不会撤销工作区的内容,只是将add过的内容取消add,如果想要撤销对这个文件的修改,可以继续使用 checkout命令。

git reset \ \ 将 commit 的文件重置到某次提交的时刻,不会改变工作区的内容

现在当前仓库共有两条提交记录,一次 添加 空的 1.txt和2.txt,另一次是modify 1.txt,如图:
git-reset-2
现在将 1.txt 重置到第一次commit 的时候,也就是 SHA1 以444369…开头的这次提交:
git-reset-3
这条命令同样不会修改工作区的内容,被reset的文件会变成未add的状态这时候只需要用 checkout命令就可以撤销之前做的修改了。

git reset HEAD^ 可以重置到上次提交的状态,在这条commit之后的提交记录都会删除
不加指定的文件,就是对当前整个仓库来做修改,后面一个 ^ 符号表示重置到前一次,重置到前两次就是 加两个 ^ 符号,重置到前面n次的话,可以这样写:git reset HEAD~n。

git-reset-4

由于 modify 1.txt这次提交只是修改了1.txt的内容,所以和重置这个文件的效果是一样的,另外再查看git log 的话,会发现 modify 1.txt这条commit已经没有了。
* git revert [commit SHA1] - revert 只会撤销某次提交,在这次commit 之前和之后的 commit 不会受影响,并且revert 需要一个新的commit 来记录这次更改
在当前的仓库中给1.txt 和 2.txt中添加一些内容,并创建一次新的提交:
git-revert-2

其中相同颜色的方框和横线表示 commit 对应的1.txt中内容的修改下面来使用 revert命令将 modify 1.txt 的这次提交撤销(revert 命令只可以针对仓库中所有文件,不能只对单一的文件revert):
这时会提示无法revert,需要先解决冲突
git-revert-3

打开1.txt,看到下面的内容:
git-revert-4
其中 HEAD 以下的内容表示当前1.txt中的内容一直到======;parent of dc31a75 以后的内容表示 dc31a75这次提交以前的内容,这里我们根据需要进行手动合并:
git-revert-5
解决完冲突后退出,用 git status 看一下当前状态:
git-revert-6
然后git add 添加修改过的文件,可以看到all conflicts fixed: run git revert –continue 这条提示,意思是修复完冲突后运行这条命令来继续 revert。
git-revert-8
然后 运行这条命令再创建一个提交来完成当前的revert。
git-revert-7

通过git log可以看到新创建的提交标识出了这条提交revert 了 dc31a75。
另外 revert命令也可以用 git revert HEAD 或者git revert HEAD^ 这样的命令来撤销前面某次的提交,用法和reset一样。

4. 关联远程仓库

和github仓库关联

创建 ssh 密钥

ssh-keygen -t rsa -C 'youemailname@example.com'
创建的 ssh 密钥在 ~/.ssh文件夹下

在github 的setting中的SSH and GPG keys里添加 rsa.pub 中的 key 到 github

关联远程仓库

首先创建空的远程仓库
git-remote-1
红框里的是刚创建的仓库的ssh链接,然后按照下面的提示来就可以了。下面是一些常用的和远程仓库同步的命令:

git remote add origin ****.git - 添加远程仓库 git push -u origin master - 将本地的 master 仓库推送到远程仓库 git pull origin master - 拉取远程仓库的代码(一般push 之前都要先pull,拉取远程仓库的最新代码,避免出现冲突)
相关TAG标签
上一篇:android 飘心动画(直播点赞)效果
下一篇:Win10系统word2016自动保存文件位置在哪里?
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站