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;

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/laohan1221/p/5705869.html