git学习笔记

Git 学习笔记

之前一直使用的是sourcetree和github工具来进行项目代码管理,没有尝试过使用Git来手动管理代码,就想学一学。在网上找了廖雪峰老师的教程跟着走了一遍,跟Atom和IDEA结合使用了一下,感觉能够正常完成自己的的代码管理需求就行了,其它更复杂的操作等以后遇到了在学习吧。

Git是什么

Git是目前世界上最先进的分布式版本控制系统(没有之一),由linux独立完成。而Github适用于托管代码的品台。

版本控制系统是什么

版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。简而言之,就是用于记录你做的东西一直以来的变化过程。
其分为集中式和分布式,集中式就是SVN这种,利用中央服务器来管理修订记录,所有操作都依赖于这个中央服务器,特点有需要网络连接、版本库拥有唯一地址、提交需要授权、冲突解决按照提交先后决定谁解决、中央服务器出问题,大家都没办法正常运作;分布式则是版本库是独立的,它只关心整体是否发生改变,并根据改变建立相应的索引记录等,同时GIT也有分支管理,能够更有效管理代码,在失去网络的时候也能将变更交给本地处理,等网络恢复再上传远程仓库进行写作。
所以我认为集中式和分布式的最重要的区别在于:是否去中心化、能否断网工作

如何使用Git

Linux:按常规方式安装Git即可
Windows:下载安装msysgit(Windows版的Git)即可使用

基础操作

  1. 创建版本库:git init 初始化为版本库
    添加文件:git add test.html(工作区提交到暂存区)
    提交文件:git commit -m 'commit info'(暂存区提交到分支)

  2. 查看版本信息:
    git status 文件状态,查看文件是否被修改
    git diff 文件修改在哪里

  3. 版本回退:
    git log 查看提交日志
    git reset --hard HEAD~ 回退到上个版本(上上版本HEAD^^ 回退一百个版本 HEAD~100)
    git reset --hard 3628164 回退到指定版本
    git reflog 查看历史命令

  4. 修改回退:
    git checkout -- test.html 丢弃工作区修改
    git reset HEAD test.html 撤销修改,将暂存区内容放回到工作区,也就是将git add 操作回滚,所以无改变

  5. 删除和撤销删除
    git rm ; git commit ; 就可以完成删除操作
    git checkout -- del.txt 撤销未被提交的删除操作

跟Github连接使用

连接远程版本库(github),添加远程库
1、建立ssh秘钥,生成一个id_rsa和id_rsa.pub
2、github记录生成的那个秘钥
3、关联远程库:git remote add origin git@github.com:michaelliao/learngit.git
4、第一次推送所有内容:git push -u origin master
5、推送修改:git push origin master
(PS:运用shh -T -v git@github.com查看具体出错信息,再根据信息来调试)

从远程库克隆
git clone git@github.com:michaelliao/gitskills.git

分支管理

1、创建并切换到dev分支
git checkout -b dev(-b参数表示创建并切换)
2、修改提交内容
3、查看所有branch
git branch
4、切换分支
git checkout master
5、合并分支
git merge dev
6、删除Dev分支
git branch -d dev

解决冲突,merge的时候会报错,直接打开相应的文件解决冲突后重新提交即可
用git log --graph命令可以看到分支合并图

分支管理策略
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

暂存功能

1、暂存
git stash
2、暂存列表
git stash list
3、恢复暂存
使用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop
或者直接使用 git stash pop,恢复的同时把stash内容也删了

强制删除分支
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

分支-多人协作

查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

标签管理

创建标签
git log v.10
为历史提交打上标签
git log --pretty=oneline --abbrev-commit(查看历史提交)
git tag v0.9 6224937

git tag -a -m "blablabla..."可以指定标签信息;
git tag -s -m "blablabla..."可以用PGP签名标签;
操作标签
git tag -d v0.1
推送标签
git push origin --tags(一次性推送)git push origin (单个推送)
删除标签(先从本地删除,再推送远程)
git tag -d v0.9
git push origin :refs/tags/v0.9

自定义设置Git

设置git命令的颜色
git config --global color.ui true

忽略特殊文件

.gitignore文件
*.class # 忽略的文件

配置别名

git config --global alias.st status
命令删除一个已定义的别名
git config --global --unset alias.ci

搭建git服务器

1、搭建Git服务器非常简单,通常10分钟即可完成;
2、要方便管理公钥,用Gitosis;
3、要像SVN那样变态地控制权限,用Gitolite。

感谢廖雪峰老师的教程,
教程地址为:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

posted @ 2017-12-07 17:56  IT逸飞  阅读(160)  评论(0编辑  收藏  举报