Git、Github使用




Git:一款分布式源代码管理工具,是 Linux 之父李纳斯的第二个伟大作品。

GitHub:一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名 GitHub。

常见版控工具的异同

SVN:集中式管理

在集中式下,开发者只能将代码提交到服务器;

在集中式下,只有远程服务器上有代码数据库。


Git:分布式管理

在分布式下,开发者可以本地提交,也可以提交到远程服务器;

在分布式下,每个开发者机器上都有一个代码仓库;

Git 是目前所有的分布式版本控制工具中最快、最简单、最流行的。

Git和Svn最大的区别就是本地仓库这个概念。

为什么是Git?好处?

团队开发项目,会遇到以下问题:

  1. 难以恢复至以前正确版本(版本 1.0~2.0
  2. 容易引发 bug
  3. 代码责任问题(跑路
  4. 代码管理问题
  5. 代码冲突问题(写同样的代码
  6. 无法进行权限控制
  7. 项目版本发布困难
  8. ......

使用Git的好处

  1. 不会对现有工作造成任何损害
  2. 不会增加工作量
  3. 代码管理更方便
  4. 代码得以追随
  5. 添加新的功能拓展时,会变得更加容易
  6. ......

Git 工作原理

了解 Git 工作原理前,需要先说明两个重要的知识,即工作区和版本库。

  • 工作区:仓库文件夹里面,除了 .git 目录以外的内容(详见下图)
  • 版本库:Git 目录,用于存储记录版本信息(详见下图)
  • 版本库中的暂缓区(stage)
  • 版本库中的分支(master):Git 自动创建的第一个分支
  • 版本库中的 HEAD 指针:用于指向当前分支


隐藏的.git文件夹中各个文件含义:

在工作区中有文件 a.txt、b.html,经过执行 git add . 命令之后会将工作区的文件添加到暂缓区中,再经过执行 git commit -m "说明文字" 命令之后,会将暂缓区的文件添加到版本库的分支当中去。

Git 命令个人开发

git init:(个人仓库)仓库初始化

首先我们在桌面新建一个 project 空文件夹之后,鼠标右键以 git bash here 打开 Git 终端,输入 git init 命令之后,观察 project 文件夹之后多了一个隐藏的 .git 文件夹。这时我们就创建好了一个受 Git 管理的仓库,这个仓库就在本地。

配置用户名和邮箱

在使用 Git 之前,需要配置用户基本信息,即配置用户名和邮箱

当前项目下配置用户名与邮箱命令如下(适用于当前项目):

  1. 配置用户名:git config user.name "用户名"(跟踪 who 修改记录)
  2. 配置邮箱:git config user.email "邮箱"(多人开发间的沟通)

配置全局用户名与邮箱命令如下(适用于所有项目):

  1. 配置全局用户名:git config --global user.name "用户名"(跟踪 who 修改记录)
  2. 配置全局邮箱:git config --global user.email "邮箱"(多人开发间的沟通)

git config -l:查看配置信息命令

git status :查看文件的状态

  1. 查看某个文件的状态:git status 文件名
  2. 查看当前路径所有文件的状态:git status

git add:将工作区的文件保存到暂缓区

  1. 保存某个文件到暂缓区:git add 文件名
  2. 保存当前路径的所有文件到暂缓区:git add .(注意,最后是一个点 . )

git commit:将暂缓区的文件提交到当前分支

  1. 提交某个文件到分支:git commit -m "注释" 文件名
  2. 保存当前路径的所有文件到分支:git commit -m "注释"

首先在工作区中,添加两个新的文件:readme.txt、index.html。如下图所示:

然后进入 Git 终端,输入 git status 命令查看文件状态如下图所示:

再次输入git commit -m""命令"添加了新文件" 将暂缓区的文件提交到当前分支,如下图所示:

上述命令分析图解:

git log:查看文件的修改日志

在工作区再新增 git.txt 文件,并将该文件添加到主分支(执行上述命令),然后输入 git log 命令,如下图所示,可以清楚的看到什么时候谁(who)干了什么事。

git reflog :查看分支引用记录(能够查看所有的版本号)

输入 git reflog 命令,可以清楚的看到版本号下对应做了什么事(以简短的方式查看日志)。

git diff:查看文件最新改动的地方

我们为工作区中的文件 index.html 添加了一段代码如下所示,然后因为工作区文件 index.html 被修改,所以我们再次将修改后的文件提交到主分支中。

然后我们再次修改代码,如下图所示:

然后我们输入 git diff 命令,如下图所示,绿色的代码被最近一次被修改的代码,还未受到 Git 版本控制。

git reset:版本回退(建议加上hard 参数,Git 支持无限次后悔)

  1. 回退到上一个版本:git reset ––hard HEAD^
  2. 回退到上上一个版本:git reset ––hard HEAD^^
  3. 回退到上 N 个版本:git reset ––hard HEAD~N(N 是一个整数)
  4. 回退到任意一个版本:git reset ––hard 版本号

:团队开发与个人开发用到的Git命令基本相同。

Git常见命令

git clone git地址     // down项目到当前文件夹下 例:git clone http://xxx.git

git config --global user.email "邮箱"    // 设置邮箱(push时必填)

git config --global user.name "名字"   // 设置名字(push时必填)

git config --global gui.encoding utf-8    // gitk编码修改为utf-8

gitk   // 查看最近提交版本记录的图形化界面(可以清楚的查看到提交用户名称,时间,注释,提交的代码等)

git log    // 显示当前分支的版本历史

git branch -av   // 查看当前分支详情 -a表示分支列表 -v表示版本号及注释

git checkout 分支名  // 切换分支, 分支名选最后一个/后面的名称

git checkout 文件名  // 恢复暂存区的指定文件到工作区(不可逆) 例: git checkout *

git status  // 显示有变更的文件

git stash  // 将当前操作的文件压入暂存栈

git stash list  // 查看缓存是否成功

git stash pop  // 将暂存栈的文件 恢复到上一次操作的状态(如果与当前文件有冲突,会自动合并冲突,需要手动找到位置并处理)

git stash clear  //清除缓存

git pull  // 下载最新代码(更新项目代码 )

git add 文件名/目录名  // 添加指定文件到暂存区

git add *  //添加所有文件(或者不用,有红色就添加一下)

git commit -m "注释"  // 提交add过的文件至本地git仓库(把添加的文件提交到本地 )

git push   // 将本地git仓库commit过的版本推送到远程git仓库

注:

每次 commit之前 都 要先pull一下,最好再编译一下项目,不报错,再提交上传代码

每次 commit之后 都要push到线上


git reset head 文件名  // 将待提交文件移出add列表中

git reset --hard 版本号  // 将当前版本回退到指定版本

git config --list  // 显示当前的Git配置

git pull origin master --allow-unrelated-histories  // pull 允许不相关的历史 用于不同的远程地址作代码同步

git pull pop  //合并(然后根据提示,去项目底下找对应的文件做处理,处理完事了,就推上线去)

git checkout -b 分支名  // 创建本地临时分支

git merge 分支名  // 将指定分支合并到当前分支

git push --set-upstream origin  // 此操作可将指定临时分支推至度小满icode

git remote show origin  // 查看本地分支和追踪情况

git remote prune origin  // 同步删除掉的分支信息

git branch -d  // 删除本地分支

1、创立版本库

mkdir MyProject

cd MyProject

git init

2、添加远程库

git push origin master

3、提交 (文件名字是:read.txt)

git add read.txt

git add .(提交所有文件)

git commit -m "说明文字"

git push

4、git diff 看看我们修改了什么地方

git log 看看提交了多少次 ,查历史记录

5、版本回退

git reset --hard HEAD^

git reset --hard HEAD~10

6、拉取项目:

git clone + url

7、拉取项目用鼠标右键很多方法。

法一:到库里右键Git bush here,输入命令:git clone + url

法二:Git 克隆···

法三:TortoiseGit --》设置 ,建库,根据url拉取

GitHub 简单使用

github常用命令

git clone 仓库的URL:下载远程仓库到本地

  1. 下载远程仓库到当前路径:git clone 仓库的URL
  2. 下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径

git add . :将工作区的文件保存到暂缓区

  1. 保存某个文件到暂缓区:git add 文件名
  2. 保存当前路径的所有文件到暂缓区:git add .(注:最后是一个点)

git commit:将暂缓区的文件提交到当前分支

  1. 提交某个文件到分支:git commit -m "注释" 文件名
  2. 保存当前路径的所有文件到分支:git commit -m "注释"

git pull:下载远程仓库的最新信息到本地仓库

git push:将本地的仓库信息推送到远程仓库

注:提交时一般先 pull(避免冲掉其它人提交到远程仓库的新代码),再提交。

详细步骤与截图

使用 GitHub 之前,事先去 GitHub 官网注册一个属于自己的账号,然后登录 GitHub 账号。选择你的仓库:

点击右侧 New 新建一个仓库,并给改仓库起一个名字,可以描述该仓库是什么项目,如下图所示:

然后创建Shopping文件夹,右键以 git bash 终端打开(如下图),输入 git clone 仓库的URL 下载远程仓库到本地(如下图),即命令:git clone https://github.com/PanWeiw/Shopping.git

然后我们进入 chatdemo 下的工作区,新建 readme.txt 与 index.html 文件:

使用 Git 命令:git add . , 将工作区的文件提交到暂缓区,并再次提交到主分支:

git commit将暂缓区的文件提交到当前分支

  1. 提交某个文件到分支:git commit -m "注释" 文件名
  2. 保存当前路径的所有文件到分支:git commit -m "注释"

git push:将本地的仓库信息推送到远程仓库:

push 提交之后,去远程仓库查看更新,如下图所示:

本地修改了代码,准备同步到github上!
因为是个人开发,不会发生与别的分支代码冲突的问题,所以,遵循:添加、提交、推送的步骤就OK!
用右键以 git bash 终端打开本地(clone下来的)项目,分别执行以下三条命令:
git add *、git commit -m "注释信息"、git push。

Github:https://github.com/PanWeiw

原文地址:https://www.cnblogs.com/panweiwei/p/12881742.html