Git和GitHub

最近更新时间:2017年7月4日22:46:08

《我的博客地图》

    随着开源思想的发展和进化,社会化编已经走进程序员的工作和生活中,因此,主导社会发展潮流的分布式版本管理工具git应用而生,同时,托管代码仓库的开源平台也同时产生,即GitHub和GitLab。GItHub用于社会化项目的代码托管平台,代码托管服务器面向全球网络开放;GItLub用于公司内部项目的代码托管平台,代码托管服务器仅面向公司内部网络,供开发人员下载和提交代码。
    因此,简单而言,git是一个分布式代码版本管理工具(软件),是一个有 命令行窗口(Git Bash Here)和 可视化界面(Git GUI Here) 的软件,可以下载、复制、合并、管理代码和仓库,表现为分布式开发、集中式管理的原则。GitHub和GitLab是一个开源的代码仓库托管平台,用来存放项目的所有文件。

   Git篇
1、git安装和使用

    从 git 官网下载安装包,然后本地安装即可使用,打开cmd命令窗口,执行$ git --version 命令,出现git版本信息表示安装成功。(如果提示git不是内部命令,需要手动配置环境变量 path )

    配置个人用户名和邮箱,如下:

$ git config --global user.name "wanshaobo"
$ git config --global user.email "wanshaobo@shaobo.com"

2、git操作原理和步骤
    ①通过git clone获取远程仓库数据;②本地改动代码;③git push将本地改动代码传回git。

    这三个步骤涉及两个仓库,remote repository(在远程服务器上)和local repository(在本地工作区上)。    git拥有一个远程仓库,作为代码合并中心;每个本地仓库都是一个独立的仓库,通过商定后合并到远程中心仓库。 本地仓库与远程仓库通过pull和push来实现同步,除此以外git本地仓库的操作也因为存在着缓冲区index(也可称之为staged)。

3、git clone命令
    首先,指定需要存放代码的具体路径,进入到该目录下执行,右键-Git Bash Here,出现git命令行工具,然后执行 

$ git clone https://github.com/wanshaobo/example.git;克隆master分支的代码到本地,目录名与版本库同名

$ git clone https://github.com/wanshaobo/example.git mycode;克隆master分支的代码到本地,并命名为mycode

$ git clone -b apptest https://github.com/***;克隆仓库代码中的apptest分支到本地
4、git checkout命令

$ git checkout localbranchname;切换当前开发环境到localbranchname分支下

$ git checkout -b feature-discuss;分出一个功能性分支,并切换当前开发环境到feature-discuss分支下;相当于 $git branch feature-discuss +  $git checkout feature-discuss;这两个命令的叠加,新建一个分支,然后切换到这个分支

$ git checkout --orphan branch_name;新建一个无历史记录的独立的新分支

$ git push origin develop;把本地develop分支修改后的代码提交到服务器的仓库中

$ git checkout -b originbranchname origin/originbranchname;创建远程分支originbranchname到本地,并切换当前环境到originbranchname分支下

$ git checkout -t origin/originbranchname;同上

$git checkout . //丢弃本地修改的所有文件或操作(新增、删除、修改)

$git checkout ./idea  //取消本地./idea的修改

    备注:.idea目录加入.gitignore无效的解决方案

无效的原因:对应的目录或者文件已经被git跟踪

解决方法:git rm -r --cached .idea

5、git branch命令

$ git branch;查看本地所有分支,*表示当前分支

$ git branch -r;查看远程所有分支,origin/HEAD -> origin/master,HEAD指针指向当前工作的分支

$ git branch -a;查看本地和远程所有分支,远程分支为红色字体

$ git branchlocalbranchname;在当前开发环境的分支上,创建本地分支localbranchname

$ git branch -m oldbranchname newbranchname;重命名本地分支oldbranchname为newbranchname

 

6、提交代码到远程仓库的标准程序和问题解决

第一步:$ git pull;//更新远程分支的代码到本地,pull成功,请直接看第三步;如果发现远程分支的 A文件 在你上次提交后发生改变,同时你本地的 A文件 你自己也在上次提交后发生了改动,此时,会发生代码冲突,pull失败,请看第二步;

第二步:$ git status;//查看本地代码状态,找到发生冲突的文件,在webstorm中查看后修改保存,ctrl+k打开文件管理器,revert文件;$ git diff '冲突的文件路径';//进行文件比较

第三步:$ git add .;确定将 所有改动的代码 提交到主仓库

第四步:$ git commit -m '修改内容备注';准备提交并备注修改信息

第五步:$ git pull;如果第一步发生冲突pull失败,需要执行该步骤,进入对话框输入 :wq 回车退出;

$ git status;查看 本地分支代码 改动的所有文件内容

第六步:$ git push;最终提交操作

7、.gitignore文件

    存放路径和生成方法:.gitignore存放在仓库根目录;右键手动新建 或 命令窗口通过命令创建

    .gitignore配置文件的作用是 设置不需要进行版本管理的文件/文件夹;

    语法格式:“#”注释;“/”目录;“*”通配符;“[]”匹配单个字符的列表;“!”不忽略

/node_modules

.idea/

.idea无法忽略时,执行 git rm -r --cached .idea

 

8、删除分支(提示:不能删除当前分支,需要切换到其他分支上才能执行删除操作)

$ git push origin --delete originbranchname;删除远程分支originbranchname

$ git push origin :originbranchname;删除远程分支originbranchname

$ git checkout .;放弃本地分支的修改,当前分支的代码版本会恢复到上一次提交或更新的状态

$ git checkout src/page/theme/theme_detail.vue;放弃本地分支theme_detail.vue文件的修改,当前文件会恢复到上一次提交或更新的状态

$ git branch -D localbranchname;强制删除本地分支localbranchname

$ git branch -d localbranchname;删除本地分支localbranchname

 

9、查看历史提交记录的版本号

$ git log -a;查看历史提交记录详情(作者、日期、备注、完整版本号)

$ git log -a --oneline;查看单行历史提交记录版本号详情(备注、简略版本号)

10、分支各个历史版本之间的切换

$ git log;查看历史提交记录和版本号

$ git reset --hard 历史版本号;恢复代码到指定 历史版本号 的历史版本,历史版本最少4为

$ git reset --hard HEAD^;恢复到上一个版本

$ git reset --hard HEAD^^;恢复到上上一个版本

$ git reset --hard HEAD~10;恢复到倒数第十个版本

$ git log;再次查看历史提交记录和版本号,可以看到恢复到指定版本后的版本都不见了,注意:看不到历史记录,如何恢复到后面的版本?只要记住每次的commit id就能直接恢复到指定版本。$ git reflog;查看git记录的每一次执行的命令,可以查看到每一次commit 的 id。q退出

$ gti reser --hard d2djs;恢复到最新的版本

11、本地新建分支并和远程仓库建立联系

本地当前环境master分支,$ git checkout -b develop;创建新分支

$ git push origin develop;将本地分支推送到远程仓库,但没有upstream,没有与与远程仓库建立链接

$ git push --set-upstream origin develop;将本地新建分支与远程仓库建立链接,并提交到远程代码仓库中

 

12、git add命令

git add,把我们要提交的文件的信息添加到索引库中,当我们使用git commit时,git将依据索引库中的内容来进行文件的提交

git add . 将本地所有改动的文件添加到索引库中

git add src/ 只将src文件目录下的所有改动的文件添加到索引库中

git add src/index.js 只将src文件目录下的index.js文件添加到索引库中

13、拉别人远端分支到自己本地

git checkout -b hotfix_wsb origin/hotfix_wsb

名字必须相同

git checkout -b hotfix_wsb,表示从本地分支(加入当前的本地分支是abc)abc复制一个名称为hotfix_wsb的分支

15、修复线上bug操作流程,新建热修复补丁分支

git checkout dev 切换到本地dev分支

git pull 拉最新代码到本地

git checkout -b hotfix_wsb_*** 从dev分支复制并在本地新建分支hotfix_wsb_***并切换到该分支

npm install

修改代码...

git checkout dev

git pull

git merge hotfix_wsb_***

如果有冲突,解决冲突

git push

16、新增功能,新建功能性分支

创建以feature开头的分支,如feature_wsb_new

17、暂时保存更改状态

    在开发过程中,本地代码发生改动,在不想提交的情况下,从远程分支更新本地代码 || 切换分支,都会提示必须提交更改后的代码;此时可以使用暂存方案,来暂时保存本地的改动,然后进行相应的操作后恢复:

git stash 暂存改动状态

git stash list 查看暂存列表

git stash pop 恢复暂存

git stash drop 删除最新的暂存

git stash clear 删除所有暂存

18、新建分支

    在开发新功能时,需要新建分支,首先切换到项目的主分支上(master/dev),$git pull拉去最新代码,然后创建新分支,$git checkout -b feature_new

19、更改分支名称

git branch -m old_branch new_branch; # Rename branch locally 

git push origin :old_branch; # Delete the old branch 

git push --set-upstream origin new_branch; # Push the new branch, set local branch to track the new remote

20、本地 git branch -r 查看不到远端仓库的某个分支

A用户在本地信件的分支 feature_new_branch 并且提交到了代码仓库;

B用户 git branch -r 查看的远端仓库分支列表没有 feature_new_branch 分支;

B用户切换到本地 master 分支上,git pull 更新代码仓库信息,然后 git branch -r 就可以查看到 feature_new_branch 分支;

21、在本地已有的项目中新建文件,或者文件夹,不想被git追踪,或者不想被提交到远程,但想在本地保留的操作

git rm --cache abc.json;//这个命令也属于删除远程仓库指定文件或目录的用途

22、恢复被修改的文件

用webstrom查看某个文件修改前后的对比,右击该文件-GIt-Compare with the Same Repository Version

场景一:恢复本地修改的所有文件,$git checkout .,表示当前路径下所有被修改的文件

场景二:恢复某个文件,$git checkout -- src/js/abc.js

场景三:已经进行了$git add . 操作,项目中所有文件已经被添加到暂存队列中,需要使用,$git reset HEAD,取消暂存队列中所有内容

场景四:src/js/abc.js单个文件被$git add src/js/abc.js,需要使用,$git reset HEAD --  src/js/abc.js,取消暂存队列中单个文件

23、回退项目版本

$git log,回车查看下一条记录,q退出这个命令

$git reset --head [commit-hashcode]

23、取消追踪

取消对文件的追踪
git rm --cached src/js/out/abc.js 取消追踪不删除文件
git rm --f src/js/out/abc.js 取消追踪并且删除文件
git rm -f src/js/out/abc.js 取消追踪并且删除文件

取消对所有文件的追踪
git rm -r --cached . 取消追踪不删除文件
git rm -rf --cached . 取消追踪并且删除文件
git rm -r --f --cached . 取消追踪并且删除文件

取消对文件夹的追踪
git rm --cached -r src/js/out 取消追踪不删除文件
git rm -r --f src/js/out 取消追踪并且删除文件
git rm -rf src/js/out 取消追踪并且删除文件

 

0、$ git 命令中英文对照

   GitHub篇

1、GitHub名词解释
    Pull Request:开发者在本地对代码进行改动后,向源仓库提交请求合并的操作;
    Repository,仓库,项目创建人在GitHub平台上创建的一个用来存放项目整体文件的一个空间。仓库分为两种:源仓库(origin)和开发者仓库(develop),源仓库只有管理员权限才能进行增删改,用来存放项目最终发布的源代码;开发者仓库是从源仓库复制出来的分支,用于每个开发者日常开发。
    Branch,分支,源仓库和开发者仓库的别称,git的常见分支模型为,分支分为两类五种:永久性分支(master branch(主分支),develop branch(开发分支))和临时性分支(feature branch(功能分支),release branch(预发布分支),hotfix branch(bug修复分支));
    Fork,从 github源仓库 复制源代码到自己的 GitHub仓库 中


 

   Git可视化工具SourceTree || GIT GUI

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值