git 基础总结

 

一、关于版本控制

  Git官网版本控制介绍 https://git-scm.com/book/zh/v1/起步-关于版本控制

  个人理解:

  集中式的版本控制系统:

  首先有一个中央服务器,保存所有文件及修订版本,开发者们都通过客户端连到这台服务器,checkout取出最新的文件或者commit提交更新,假如你进公司的时候,项目已经完成大部分,你checkout获取代码只是最新版本的代码程序;

  优点:

  易于管理,集中式服务器更能保证安全性;符合我们正常的逻辑思维;每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。

  缺点:

  服务器出现问题的时候,开发者都无法提交更新,无法协同工作。要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录。

    服务器压力太大,数据库容量暴增;

        

  分布式的版本控制系统

    客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。可以指定和若干不同的远端代码仓库进行交互。

    优点:任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复;适合分布式开发,强调个体;速度快、灵活,通过哈希值判断文件数据是否更改,效率更高;离线工作;

    缺点:代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息;

  SVN属于集中式的版本控制,Git属于分布式的版本控制;

  SVN与Git对比:

    Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。

    svn是通过对比文件来判断文件的修改更新等,效率比较低;

  git是使用 SHA-1 算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个 SHA-1 哈希值,作为指纹字符串,通过哈希值判断文件数据是否更改,效率更高;

二、安装并配置Git  (这里指记录Mac版)  

  1、安装Git官网:https://git-scm.com/book/zh/v1/起步-安装-Git 

  2、配置用户信息:https://git-scm.com/book/zh/v1/起步-初次运行-Git-前的配置

第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:

  $ git config --global user.name "xxx"

  $ git config --global user.email xxx@xxx.com

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

  $ git config  user.name "xxx"

  $ git config  user.email xxx@xxx.com

  3、查看配置信息:git config --list

  4、学习 config 命令可以怎么用 $ git help config

三、Git基础

  1、初始化项目

如果需要自己创建项目的话,打开终端,cd 到你想要文件夹地址,使用$ git init 创建新项目,这时候文件夹內会创建一个.git文件夹,提示创建了一个空的仓库,如果没有.git文件夹可能是文件夹为隐藏状态,使用ls -ah查看即可,如下图:

在文件夹內放入一个README.md文件(可以手动床架,也可以使用终端创建),输入命令

  $ git status,检查当前文件状态,如下图所示:

 

  可以看到新建的README文件出现在“Untracked files”下面,未跟踪的文件意味着Git在之前的快照(提交)中没有这些文件(新创建的文件);

使用命令$ git add xxx(文件名或者.)开始跟踪一个或多个新文件,再输入git status查看文件的状态,会看到 README 文件已被跟踪,并处于暂存状态,如下图所示:

 

  然后需要提交README文件,输入命令$ git commit -m "添加README.md文件",如下图所示:

 

  现在修改README文件,例如添加一句“修改测试”,保存之后再终端输入$ git status 查看状态,已修改区状态,如下图:

  再执行git add . 添加到暂存区,再执行$ git commit -m "xxx",提交修改即可。

最基本的提交已经完成,可以使用$ git log 查看提交信息,到这里本地的git仓库就完成了,也可以把本地的仓库推送到服务器上,首先服务器上要创建好git项目,例如创建一个Demo项目,输入命令:

$ git remote add origin 你的远程库地址(这个URL就是我们在服务器中的地址,我们在web端手动创建的库,例如:git remote add   git@192.168.x.xxx:xxx/Demo.git) // 把本地库与远程库关联

  $ git push -u origin master // 第一次推送时

  $ git push origin master // 第一次推送后,直接使用该命令即可推送修改

  结果如下图所示:

 

 

  2、从现有仓库克隆

  在服务器上创建项目,执行:

  $ cd 存放项目的文件夹路径

  $ git clone url (这个URL就是我们在服务器中的地址,例如:git clone url git@192.168.x.xxx:xxx/Demo.git)

  克隆完成就可以在文件夹中添加项目等文件,提交push。

  3、创建分支及合并

  一般我们都是从master分支上克隆项目,但是提交的时候还是提交到自己创建的分支上,在合并到master,这样可以防止因自己错误导致项目无法运行。

  $ cd 项目所在文件夹

  $ git checkout -b 分支名(例如:git checkout -b dev,相当于$ git branch dev  $ git checkout dev)

  服务器上项目需要创建同名的分支,这样就可以看到dev分支的提交记录等,如下图:

    

  查看分支:

  $ git branch (*代表当前分支,再提交的时候就会提交到dev的分支上面)

  分支合并:

  $ git checkout master (切换到master)  

  $ git merge dev (合并分支dev)

  4、忽略某些文件

  我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式

  创建:$ vi .gitignore

  点击i开始输入,例如输入*.[oa] 第二行输入*~,输入完成后点击esc键,再shift+:输入wq退出。

第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。

  更多的介绍:https://git-scm.com/book/zh/v1/Git-基础-记录每次更新到仓库#忽略某些文件

     5、push后修改提交的信息,git commit

     Git commit信息push后,如何修改,git commit --amend可以修改最后一次commit信息,但对于历史提交信息,需要使用rebase命令。

1、例如修改的commit是倒数第三条,使用下述命令:git rebase -i HEAD~3

2、把pick改为edit,如下图:
 3、然后 按esc键  :wq (英文输入法),退出后有提示,如下图:
 
4、执行 git commit --amend,进入注释编辑界面,如下图,输入i编辑修改commit信息,之后再esc退出保存 :wq。
5、执行 git rebase --continue
6、执行 git push -f 推送到服务端。

    参考:https://www.cnblogs.com/shenh062326/p/git.html

参考: Git官方文档:https://git-scm.com/book/zh/v1/起步

    https://blog.csdn.net/yuwq123/article/details/52748009

原文地址:https://www.cnblogs.com/lulushen/p/8650750.html