初识Git

写项目的时候发现我用的那个免费的svn的bug太多,实在是难以忍受,而且androidStudio又对git支持的非常的好,所以就来尝试一下git。


在windows上安装Git

msysgit是Windows版的Git,从 http://msysgit.github.io/下载,然后按默认选项安装即可。


安装非常简单,然后在开始菜单中找到Git Bash 打开,然后就进入一个命令行窗口,注意,这里面使用的是linux命令。

安装完成后,还需要最后一步设置,在命令行输入:

$ git config -global user.name "你的名字"

$ git config -global user.name "你的邮箱"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。


创建版本库

版本库就是简单的文件夹,只不过这个文件夹是可以被git管理的文件夹而已,英文名叫做repository,找一个合适的地方,使用mkdir命令创建一个文件夹 例如 我就是先CD到 /e/Git_Workspace/Test/这个目录下 然后

 $ mkdir learngit 
接下来 进入这个目录 通过git init 吧这个目录变成git可以管理的目录

$ git init
Initialized empty Git repository in E:/Git_Workspace/Test/learngit/.git/

然后把文件添加到版本库 这里我们编写一个readme.txt文件

里面写上 helloword 然后

$ git add readme.txt

发现什么提示也没有 这就代表添加成功

然后就需要提交文件了

$ git commit -m "write a readme"
[master (root-commit) 8c90fde] write a readme
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

提交成功

小结

现在总结一下今天学的两点内容:

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  • 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;

  • 第二步,使用命令git commit,完成。



对了 还有一些关于工作区和暂存区的概念   这一部分内容引用自:这里




版本库(Repository)

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。


------------< 这里有一个容易错的地方  加入我们修改一个文件后,git add 然后觉得还是不好,就有修改了一下,这个时候我们commit,提交的只是第一次修改的版本,第二次修改由于没有add 所以不在暂存区Stage ,这样就导致了没法提交第二次的修改  >-------



Git命令

git log 查看日志 --pretty=online参数显示简略信息

$ git log --graph --oneline 简略log信息

git status 查看当前仓库状态

git diff 查看修改的内容

git reset --hard head^ 返回上一个版本 ----》 其中head代表当前版本 head^代表上一个版本 head^^上上个版本

(如果回到了之前的旧版本还想在回到新版本,只需要记住之前的commid的前几位就可以 通过这个命令:

$ git reset --hard 4af65(commid的前几位)
HEAD is now at 4af653b aaaaaaa ---------------------------> 已经成功回到最新的版本)

(举个例子 : 比如说现在有3个版本 按时间先后分别是3 ,2, 1 当前我退回到了版本1 这个时候git log里面也只显示版本1的相关信息,版本2和版本3都已经无法找到,如果我还记得版本3的commid的前几位,那只需要调用刚才的命令回到版本3,此时在git log 不仅版本3的信息会出现,版本2的信息也还在。)

当然,如果忘记了commid也没任何关系,可以通过$ git reflog 命令查看所做的每一步操作

git reflog 对git的每一步操作都会记录 --->>>> 在这里可以获得重要的commid

$ git diff head -- 文件名 命令可以查看工作区和版本库里面最新版本的区别

git diff 文件名 比较的是工作区的暂存区的区别

git checkout -- 文件名 -----------> 把文件回退到最近的一个git add 或者 git commit 也可以恢复删除的文件

$ git reset head 文件名 ----------->撤销这个文件在暂存区的修改(主要是因为暂存区目录被重写,被master目录所指向的目录树替换而工作区不受影响)

(也就是说,如果乱改的东西还没有提交到暂存区,就可以通过git checkout -- 文件名 这个命令直接把本地文件的修改撤销掉,但是如果一旦把这个文件的修改add到了暂存区,那就只有通过git reset head 文件名 命令把文件会退到撤销修改的暂存区的状态 然后再使用 git checkout -- 文件名 ,本地文件的改动就被撤销了

git rm 文件名 --------->删除版本库的文件

(在git中删除一个文件 首先要先在当前目录中删除 rm 文件名,然后,git add 被删除的文件名 ,然后要在版本库中删除 git commit 就可以删除

这个时候最好用 git rm 试验一下

ssh-keygen -t rsa -C "youremail@example.com" 创建ssh密钥 然后在用户主目录下的.ssh目录中就可以找到密钥

$ git remote add origin https://github.com/LiXiaoRan/learngit.git 关联一个远程库 通过https关联 每次push都要输入用户名密码 但是不需要密钥

$ git remote add origin git@github.com:LiXiaoRan/learngit.git关联一个远程库 通过SSH关联 不用输入用户名和密码 需要密钥

$ git push -u origin master 关联后第一次提交

$ git push origin master 正常情况下的的提交

$ git remote rm origin 解除与远程库的关联

git clone git@github.com:LiXiaoRan/gitskills.git 从远程库克隆 到本地

$ git branch 查看当前分支

$ git checkout -b dev 创建并切换到dev分支 相当于一下两条命令 git branch dev git checkout dev

$ git merge dev 合并dev分支到当前分支

$ git merge --no-ff -m "merage with no-ff" dev 以no-ff 方式合并分支 这种方式删除分之后也不会丢失分支信息 并且提交 -m后面跟的是提交的日志

$ git branch -d dev 删除dev分支

$ git log --graph --pretty=oneline --abbrev-commit 查看分支合并情况

$ git stash 储存状态

$ git stash list 查看储存的状态

$ git stash pop 恢复状态并清除stash内容

$ git stash apply 恢复但不清除stash (用法 $ git stash apply stash@{0}

$ git stash drop 清除stash (用法 $ git stash drop stash@{0}

$ git branch -D 分支名 强行 删除一个分支 因为如果当前分支没有被合并时没办法删除的。

$ git remote 查看远程仓库信息

$ git remote -v 查看远程仓库信息

$ git branch --set-upstream dev origin/dev 设置本地的dev分支与远程的dev分支相关联

$ git tag 标签名: 打标签 可以用-a 指定标签名 -m指定说明文字 -s 通过私钥签名一个tag 后面跟上commid 就可以给某次提交打标签 签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错

$ git tag: 查看标签列表

$ git show 标签名:查看标签详细信息

$ git tag -d 标签名: 从本地删除标签

$ git push origin v0.1:推送标签v0.1到远程库

$ git push origin --tags:推送所有的标签到远程库

$ git push origin :refs/tags/v0.1 从远程库删除标签,不过首先要现在本地删除






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值