zoukankan      html  css  js  c++  java
  • GIT学习笔记

    一、使用GIT

    Git是分布式版本控制系统。本质上是一个内容寻址文件系统。

    1、设置全局信息:

    • 姓名:git config --global user.name "LeonLH"
    • email:git config --global user.email "laohan1221@126.com"
    • 查询全局信息:git config  -l

    2、创建仓库(版本库)

    版本库=仓库

    在仓库中的所有内同都会被Git管理(修改、删除、跟新);

    所有管理都会被记录下来;

    可以随时恢复到特定状态;

    • 初始化仓库:git init 
    • 创建文件夹(d:mypro):d:md mypro
    • 进入文件夹:cd mypro
    • 初始化仓库:git init(仓库初始化好之后会产生一个.git 文件,该文件就是仓库信息,不可以修改)

    3、添加文件(文件要使用UTF-8编码)

    • 查看当前仓库状态:git status

    (其中:

    主分支:On branch master

    初始化仓库提交:Initial commit 

    未标记的文件:Untracked files)

    • 添加文件(Hello.cpp)到暂存区:git add Hello.cpp
    • 提交文件信息(引号里面是注释,而且必须要有):git commit -m "New Cpp File"
    • 先add后commit:git commit -a -m "注释”
    • 查看日志信息(end出现按q退出):git log Hello.cpp

    4、修改仓库文件

    • 修改前后文件对照:git diff 文件名称;

    5、

    • 将仓库内代码全部加入到暂存区中:git add .

    6、版本回退

    • 已经精简模式查看日志:git log --pretty=oneline文件名
    • 回退指针(HEAD~次数)一步:git reset --hard HEAD~1
    • 找到所有已经删除的信息提交ID(commitID):git reflog
    • 恢复某个ID的版本:git reset --hard fe27af74...

    7、撤销修改

    • 未add未commit的情况下,撤销所做出的修改操作:git checkout -- 文件名称
    • 已add未commit的情况下,1.撤销暂存区修改操作(从暂存区中退出):git reset HEAD 文件名称;2.丢掉已经修改的文件内容(恢复原始状态):git checkout -- 文件名称

    8、删除文件

    • del 文件名.后缀名
    • 之后再:git commit -a -m "注释”

    二、远程仓库(github)

    1、在客户端和github之间建立安全链接:

    1. 生成ssh key :在Windows下直接使用“git bash”工具创建;
    2. 需要生成rsa编码的key:ssh-keygen -t rsa -C "laohan1221@126.com";
    3. 在user目录下生成".ssh"目录,里面有id_rsa私钥、id_rsa.pub公钥;
    4. github设置页面:Add SSH key;
    5. 找到id_rsa.pub文件的内容复制,注意别增加无用的任何内容;

    可以参考这篇文章:http://www.cnblogs.com/gao-xiong/p/5982746.html 在客户端和github之间建立安全通讯。

    2、添加远程仓库:

    1. 在github上创建仓库:创建之后会产生两种连接方式ssh链接地址和HTTPS链接地址(创建的仓库不含README);
    2. 把github与本地仓库相关联:git remote add origin http://github.com/yootk/......(最好选择ssh连接,ssh通信利用刚才建立的ssh key更为安全,为git@git...链接);
    3. 将内容推送到github上(初次推送master分支使用“-u”参数将远程master和本地master相关联):git push -u origin master; 

    • 将github关联的仓库切换为另一个仓库:git remote set-url origin http://github.com/
    • 一个远程仓库只可以与一个本地仓库关联,如果关联 已经被关联过得仓库就会提示:fetch first 或者 non-fast-forward

    3、克隆仓库

    1. 先从别人的远程仓库克隆到本地;
    2. 在自己的github 上新建一个仓库,不选README选项;
    3. 将自己克隆到本地的仓库连接到github上的空仓库上,然后同步一下(push);

    在实际开发中最好是所有开发者直接克隆远程仓库进行操作。

    4、克隆其他开源项目

    1. 克隆mybaits的项目:git clone 项目地址;

    三、分支管理

    1、创建与合并分支

    1. 创建一个分支:git branch brh;
    2. 查看分支:git branch,其中*号所指为当前所在分支;
    3. 切换到brh分支:git checkout brh;
    4. 删除分支:git branch -d brh,注意在删除被brh是不能再要删除的分支上,可以在其他分支上;
    5. 创建并切换到子分支:git checkout -b brh;
    6. 将brh分支合并到master分支上:git merge brh,合并方式有一种是"Fast-forward"表示快速合并,它不会产生commit id,他只是利用了子分支的commit ID继续操作;
    7. 删除远程分支:git push origin --delete brh;

    子分支上面的内容与中分支上面的内容没有任何关系,子分支只相当于主分支的一个copy文件,只有合并分支了之后master分支上才会有子分支的内容。

    master分支是发布版,它是最稳定的。

    2、分支的管理操作

    1. 为分支brh重命名为LH:git brach -m brh LH;
    2. 推送分支:git push origin LH;
    3. 查看所有分支:git branch -a;查看远程分支:git branch -r;查看本地分支:git branch -l;
    4. 删除本地分支LH:git branch -d LH;
    5. 如果分支还未进行合并,想要强制删除:git branch -D LH;

    删除远程分支方法一:git push origin --delete brh;

    删除远程分支方法二,推送一个同名的空分支过去(注意前面有分号):git branch LH,git push origin :LH;

    3、冲突自动解决

    1. 在实现多人开发的时候,当不同分支上的同一文件被修改了之后,在提交合并的时候,就会出现冲突。代码:git merge brh;
    2. 有时同一文件的不同部分代码被修改之后,GIT会自动合并代码的不同片段,这个就是冲突的自动解决。

    4、冲突的手动解决

    1. git merge brh之后会有提示说:出现CONFLICT;
    2. 查看冲突的内容:git status;
    3. 查看合并的情况:git log --graph --pretty=oneline;

    5、分支管理策略

    1. 使用--no-ff进行合并,合并后创建一个新的commit id:git merge --no-ff "no ff commit" brh;
    2. 查看简短日志:git log --graph --pretty=oneline --abbrev-commit;

    6、分支暂存

    如果现在有紧急事件需要先切换到其他分支上去,而此分支上的代码还没有完成,这是就需要分支暂存。

    1. 先将此文件保存在暂存区之中:git add .;
    2. 将工作暂存:git stash,此时查看git status的状态是没有任何修改;
    3. 在其他分支上工作直到其他分支上的分支工作完成,再回归到之前的工作状态,查看暂存区列表:git stash list;
    4. 从暂存区恢复:方法一,先恢复,后手工删除暂存:git stash spply,git stash drop;方法二,恢复的同时删除stash内容:git stash pop;

    git pull :此操作取出最新分支数据,并且发生merge合并操作;

    git fetch:此操作只是取出最新的分值数据,但是不会发生merge合并操作;

     

     四、git基本操作总结:

    五、 git基本原理:

     http://lib.csdn.net/article/git/19232

    六、git命令参考手册

    参考资料:

    1、Git详解之一 Git起步http://www.open-open.com/lib/view/open1328069609436.html

    七、Git关键字

    • origin master 代表远程主分支,其中origin代表远程的意思。
    • fetch 和pull都是拿回到本地仓库的中,而fetch之后还要加上merge才会在工作目录中看到“拿来”的东西。pull 等于fetch + merge。pull的操作可能存在隐患,因为他拿来之后自动合并的时候回自动处理代码。
    •  本地仓库中的记录是以commit为时间节点的。
    • checkout 主要是切换分支。
    • branch主要操作有创建、删除、List(列出)。

    八、其他命令

    • 查看远程仓库:git remote -v

    九、具体功能

    • 更新远程代码到本地仓库:
      • 方式一:
      1. 查看远程仓库:git remote -v
      2. 从远程仓库获取最新版本带本地:git fetch origin master
      3. 比较本地仓库和远程仓库区别:git log -p master.. origin master
      4. 把下载下来的代码合并到本地仓库:git merge origin master
      • 方式二:
      1. 查看远程仓库:git remote -v
      2. 从远程获取最新版本到本地:git fetch origin master:tmps
        • 意思是:从远程的origin仓库的master分支下载到本地新建的分支tmp上
      3. 比较本地仓库和远程仓库的区别:git diff temp;
      4. 合并master和temp分支:git merge temp
      5. 删除该temp分支:git branch -d temp;

     

     

     

     

     

     

     

  • 相关阅读:
    Batch Normalization
    常用shell命令
    把chord下dbm_noauth做成静态库,提供接口
    vim中多标签和多窗口的使用
    recv返回值
    在XP下从硬盘安装windows 7的方法
    Linux文件系统中的链接
    统计出现次数排名
    linux编程环境
    windows命令行修改连接的DNS
  • 原文地址:https://www.cnblogs.com/laohan1221/p/5705869.html
Copyright © 2011-2022 走看看