Git学习笔记

第一章 简介
 1. 什么是版本控制系统
    版本控制的意思是从一个文件创建到后面的文件的各种修改(不管是添加内容还是,删除内容)
    都会被记录下来,以便后面查阅文件的各个版本。
 2. 什么是Git?
    git是一种分布式的版本控制工具。
 3. 解决什么问题(应用场景)?
    git用来解决代码(当然不仅仅是代码)的版本控制问题。
 4. 同类技术有哪些?
    
 5. 有哪些优缺点?
    1)git每次都保存文件的整体快照,而svn则每次保存文件的差异;
    2) 像SVN这种版本管理软件每次只是对代码最新版本的镜像,假如中央服务器
       down机可能会丢失代码的历史版本。而且此时开发人员不能继续提交代码,进行同步协调开发。
    3) Git的每一个本地仓库都是对中央仓库代码所有历史版本的完整镜像,所以完全可以在离线或者中央服务器down机的情况下继续开发,不用当心出现代码丢失的情况。 
    4) 所有的操作都可以本地执行,有网络的情况下再提交。
    5) Git的分支非常轻便(svn需要创建代码的完整副本,git只需要创建一个指正)(使用方便)
    
 6. 初次运行Git前的配置。
    
    /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
    ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
    当前项目的 git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。
    每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
    
    $ git config --global user.name "John Doe"
    $ git config --global user.email johndoe@example.com
    $ git config --list
    
 第二章 Git基础
 1. 初始化一个Git仓库
    git init
    git clone url my_git_name
 2. 忽略规则
    1)创建.gitignore文件
    2)所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
    3)可以使用标准的 glob 模式匹配。
    4) 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
    5) 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
    6) *.class #忽略所有已Class结尾的文件
 3. 查看文件差异(这边比较重要)
    git diff HelloWorld.java  //查看未暂存的文件和已经暂存的文件的差异,假如暂存区中没有这个文件,则是和上一次提交的版本对比。
    git reset HEAD HelloWorld.java  //将文件移出暂存区
    git diff --cache HelloWorld.java //将暂存区中文件和上一次提交的版本做比较
 4. 删除文件
    1) git rm -f HelloWorld.java 
       git commit -m 'delete java'
    2) git rm --cache HelloWorld.java //将文件不让git管理但是 还是保留文件
    3)git rm xx/* //删除xx文件夹下的所有文件  
 5. 移动文件(重命名)
    git mv HelloWorld.java Hi.java
 6. 查看提交历史
    1)git log   
    2)git log -p -2 //显示每次提交的差异,显示最近2次提交
 7. 撤销操作相关
    1)将文件移出暂存区 git reset HEAD HelloWorld.java
    2) 将文件恢复到原来版本,相当于svn中的revert。
       git checkout -- chen.txt
 8. 远程仓库相关操作
    1)git remote -v //查看远程仓库信息
    2)添加远程仓库
       $ git remote add pb git://github.com/paulboone/ticgit.git
       $ git remote -v
       origin git://github.com/schacon/ticgit.git
       pb git://github.com/paulboone/ticgit.git
    3) 推送分支
       git push origin master //将当前分支推送给master分支
 9. 标签相关的
    1)git tag //列出所有标签,标签可以有注释
    2)git tag -a v1.0 -m '这是1.0版本'
    3)git show v1.0 //查看1.0版本信息。
    
第三章 分支相关
 1. 新建一个分支
    git branch b_hello  //新建了一个分支 但是不会自动切到这个分支上
 2. HEAD指针的作用(图片) //用来记录你当前在哪个分支上面,我们也可以理解为是当前分支的别名
    远程分支:origin/branch_name
    
 3. git checkout -b b_hello //切换到b_hello分支,没有这个分支就创建一个
 4. 分支合并(冲突解决)
    git checkout master
    git merge b_hello  //将hello分支合并到master,merge相当于一次commit
    上述合并可能会产生冲突,此时需要手动解决(打开master分支上的文件)
    l am chensongxia
she is zhaoru
xxxxxxxxxxxxxx
<<<<<<< HEAD                
vvvvvvvvvvvvvvccccwwwwwwwwc
=======
vvvvvvvvvvvvvvcccccxxxxxxxxxxxxxxx
>>>>>>> b_test_confict
    手动合并之后  执行git add  然后commit就行 
 5. 删除分支
    git branch -d b_hello
 6. 查看分支信息
    git branch -v
    查看还没有和当前分支合并的分支
    git branch --no--merge
 7. 推送分支
    git push origin b_name
    git fetch origin
    git pull
 8. 跟踪远程分支
    git fetch
    git branch -a
    git checkout -b b_name origin/b_name
 9. 删除某个远程分支
    git push origin :b_name (注意冒号前有空格)
 10. 分支rebase
     让分支提交的历史更加整洁干净。
     
     
    总结:
        这章主要讲了分支相关的内容,重点把握
        1)HEAD指针、远程分支概念;
        2)merge的原理图;
        3)冲突解决;
        4)命令流程:
           git fetch
           git branch -a
           git merge origin/master
           git checkout b_name
           git merge master   
           
           
第四张 服务器上的Git
1. 什么是裸仓库
   裸仓库就是一个只包含.git目录的仓库,服务器上的git就是一个裸仓库。
2. Git支持的协议
   本地传输协议、SSH协议、GIT协议、HTTP协议
3. 我们需要一个项目的拥有者给你添加写的权限,才能像项目推送代码。
   假如我们没有写权限,可以fork一个项目,后面再提交pull request。
   但是这样会有一个问题就是要怎么保证你fork的项目和原项目同步
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值