工具

GIT学习笔记

csxiaoyao · 9月24日 · 2016年 · 本文2694字 · 阅读7分钟20

GIT学习笔记

Write By CS逍遥剑仙
我的主页: csxiaoyao.com
GitHub: github.com/csxiaoyaojianxian
Email: sunjianfeng@csxiaoyao.com
QQ: 1724338257

  这篇博文记录了Git的学习过程中基本的Git操作,留下笔记供日后参考。
  博主是一个很有条理、注重开发效率的好男人(此处应有掌声),多年的软件工程学习可以明显感受到团队代码的管理对开发团队的重要性。之前一直在使用svn进行代码管理,svn是一款不可多得的好开源软件,其强大的功能可以说相当给力,不愧是团队协同工作利器。
  几年之前,就一直听说github的强大,一时兴起注册了账号:csxiaoyaojianxian,只知道它很好用,却不知道那些开源代码是如何上传并操纵的,同时也缺少使用需求,因此仓库闲置在那里。说来丢人,github上的那些大牛的源代码每次我都是“Download ZIP”搞下来,竟然没用过旁边的clone……直到最近学校组织建立工程实践小组,我想借此感受一把git的魅力。
  在网上找了一些学习资料进行一番学习,发现git和svn有太多的相似之处,并且其依托github这个云仓库,简直不能再赞,学习过后,我在自己宿舍内网穿透的计算机上安装了git,作为团队工作的代码仓库。使用过程中发现,有些简单常用的操作步骤容易遗忘,还是简单以纯文字记录下,以备后查。

1. Ubuntu安装Git

  1. 查看是否安装了Git

    <code>$ git</code>
  2. 安装

    <code>$ sudo apt-get install git </code>

    也可以下载源码包

    <code>$ ./config
    $ make
    $ sudo make install</code>
  3. 设置

    <code>$ git config –global user.name “Your Name”
    $ git config –global user.email email@example.com</code>
  4. 设置Git显示颜色

    <code>$ git config –global color.ui true</code>

2. 版本库

  1. 创建版本库
    切换到需要创建版本库的目录

    <code>$ git init</code>
  2. 将文件放到Git仓库

    <code>$ git add <file>
    $ git commit -m “wrote a readme file”</code>

3. 版本控制

  1. 查看当前仓库状态、差异及日志

    <code>$ git status
    $ git diff <file>
    $ git log
    $ git log –pretty=oneline</code>
  2. 版本回退
    HEAD表示当前版本(提交ID),上个版本是HEAD^,上上个版本是HEAD^^,上100个版本是HEAD~100。

    <code>$ git reset –hard HEAD^
    $ git reset –hard 3628164</code>
  3. 查看命令记录找回提交ID

    <code>$ git reflog</code>
  4. 丢弃修改
    丢弃工作区的修改,文件回到最近一次commit或add时状态

    <code>$ git checkout — readme.txt</code>

    撤销暂存区的修改,重新放回工作区,reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,HEAD表示最新版本

    <code>$ git reset HEAD readme.txt</code>
  5. 文件删除及恢复
    删除文件

    <code>$ git rm test.txt
    $ git commit -m “remove test.txt”</code>

    删错恢复

    <code>$ git checkout — test.txt</code>

4. 远程仓库

  1. 创建SSH Key

    <code>$ ssh-keygen -t rsa -C “youremail@example.com”</code>

    在用户主目录找到.ssh目录,有id_rsa和id_rsa.pub两个文件
    登陆GitHub,Add SSH Key,粘贴id_rsa.pub文件内容

  2. 本地仓库推送到GitHub仓库
    远程库的名字默认是origin,可以修改

    <code>$ git remote add origin git@github.com:csxiaoyaojianxian/test.git</code>

    把当前分支master推送到远程

    <code>$ git push -u origin master</code>

    首次加上-u参数,会把本地master分支和远程master分支关联

    <code>$ git push origin master</code>
  3. 从远程库克隆

    <code>$ git clone git@github.com:csxiaoyaojianxian/test.git</code>

5. 分支管理

  1. 基本分支操作
    查看分支

    <code>$ git branch</code>

    创建分支

    <code>$ git branch <name></code>

    切换分支

    <code>$ git checkout <name></code>

    创建+切换分支

    <code>$ git checkout -b <name></code>

    合并某分支到当前分支

    <code>$ git merge <name></code>

    删除分支

    <code>$ git branch -d <name></code>

    强行删除没有被合并过的分支

    <code>$ git branch -D <name></code>
  2. 查看分支合并情况

    <code>$ git log –graph –pretty=oneline –abbrev-commit</code>
  3. 禁用Fast forward

    <code>$ git merge –no-ff -m “merge with no-ff” dev</code>
  4. Bug分支
    stash功能可以把当前工作现场入栈,以后恢复

    <code>$ git stash</code>

    查看stash

    <code>$ git stash list</code>

    恢复现场
    方法一

    <code>$ git stash apply</code>

    恢复后stash内容并不删除,再删除

    <code>$ git stash drop</code>

    方法二

    <code>$ git stash pop</code>

    恢复的同时删除stash内容

    <code>$ git stash pop</code>

    恢复指定的stash

    <code>
    $ git stash apply stash@{0}</code>
<code>
5. 多人协作
查看远程库信息</code>

$ git remote
$ git remote -v

<code>抓取分支</code>

$ git clone git@github.com:csxiaoyaojianxian/test.git

<code>推送分支 </code>

$ git push origin master

<code>合并分支解决冲突</code>

$ git pull

<code>建立本地分支和远程分支的关联</code>

git branch –set-upstream branch-name origin/branch-name。

<code>
## 6. 标签管理
创建标签,默认为HEAD</code>

$ git tag v1.0

<code>给指定提交ID 创建标签</code>

$ git tag v0.9 1247721

<code>查看所有标签</code>

$ git tag

<code>指定标签信息</code>

$ git tag -a <tagname> -m “inf”

<code>用PGP签名标签</code>

$ git tag -s <tagname> -m “PGP”

<code>推送一个本地标签</code>

$ git push origin <tagname>

<code>推送全部未推送过的本地标签</code>

$ git push origin –tags

<code>删除本地标签</code>

$ git tag -d <tagname>

<code>删除远程标签</code>

$ git push origin :refs/tags/<tagname>

<code>

![sign](https://raw.githubusercontent.com/csxiaoyaojianxian/ImageHosting/master/img/sign.jpg)</code>
0 条回应

×