git的开发流程和经常使用命令

前言

git相比svn作代码管理,感受更有优点,这二者的区别体如今如下几点:git

  • 一、首先,工做原理不同,svn是一种集中式的版本控制器,git是一种分布式的版本控制器。svn只有一个中心仓库,全部开发人员维护同一个服务器上的代码。而git不一样,每一个开发人员的本地都是一个独立的服务器仓库。
  • 二、其次,分支管理不同,svn的分支是全局的,你修改一个分支,全部人必须同步这个分支,才能进行其余操做。git能够本地创建多个分支,而且自由切换,不会影响到其余人。若是有须要就合并到master分支,而后push到远端服务器,让你们同步;若是没用也能够直接delete掉。
  • 三、另外,安全机制不同,svn容易出现单点故障,若是服务器宕机,那么全部人都没法工做了。git的话,即便服务器挂了,每一个研发的本地都至关于一个服务器,还能够进行正常的开发工做。

使用git的基本流程:

通常来说 咱们都是基于工做开发使用git的,首先在gitlab搭建本身服务器,再由管理员去给你分配帐号权限,若是你是提交代码到我的的githHub上,你得先本身去申请帐号。安全

一、配置用户名和邮箱

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
复制代码

用了这个参数,表示你这台机器上全部的Git仓库都会使用这个配置,固然也能够对某个仓库指定不一样的用户名和Email地址bash

二、生成公钥并添加

ssh-keygen -t rsa -C ”yourEmail@example.com”
复制代码

最后显示成:服务器

在这里能够看到id_rsa和id_rsa.pub已经生成,而且生成的路径为/root/.ssh/。

打开id_rsa.pub文件,而且复制所有内容。(路径 C:\Users\admin.ssh)。ssh

打开GitLab帐户,打开SSH Keys: 添加git秘钥分布式

三、拉取代码

四、增长/删除文件

$ git add file1 file2 ....  //  添加指定文件到暂存区
$ git add [dir]            // 添加指定目录到暂存区,包括子目录
$ git add .                // 添加当前目录下的全部文件到暂存区
$ git rm  file1 file2 ...     // 删除指定文件,并将本次删除放入暂存区
$ git rm --cached file    //中止追踪该文件,但该文件会保留在工做区
$ git mv [file-original] [file-renamed]  // 更名文件,而且将这个更名放入暂存区
复制代码

五、代码提交

$ git commit -m [message]  // 提交暂存区到仓库区
 
$ git commit [file1] [file2] ... -m [message] // 提交暂存区的指定文件到仓库区

$ git commit -a // 提交工做区自上次commit以后的变化,直接到仓库区

$ git commit  -v  // 提交时显示全部diff信息
$ git commit --amend -m [message] // 使用一次新的commit,替代上一次提交, 若是代码没有任何新变化,则用来改写上一次commit的提交信息

$ git commit --amend [file1] [file2] ...// 重作上一次commit,并包括指定文件的新变化
复制代码

六、 分支的建立与删除

$ git flow feature start <branch-name>   // git-flow 建立 feature 分支
$ git flow feature finish <branch-name>  // git-flow 结束 feature 分支
$ git flow release start 1.1.5          // git flow 建立release 分支
$ git flow release finish 1.1.5        // git flow 结束release 分支
$ git branch                           // 列出全部本地分支
$ git branch -r                        // 列出全部远程分支
$ git branch -a                       // 列出全部本地分支和远程分支
$ git branch [branch-name]            // 新建一个分支,但依然停留在当前分支
$ git checkout -b [branch]           // 新建一个分支,并切换到该分支
$ git branch [branch] [commit]       // 新建一个分支,指向指定commit
$ git checkout [branch-name]         // 切换到指定分支,并更新工做区
$ git checkout -                    // 切换到上一个分支
$ git merge [branch]                // 合并指定分支到当前分支
$ git cherry-pick [commit]          // 选择一个commit,合并进当前分支
$ git branch -d [branch-name]       // 删除分支
$ git push origin --delete [branch-name]  // 删除远程分支
$ git branch -dr [remote/branch]         // 删除远程分支

复制代码

七、查看状态和历史记录

$ git status       // 显示有变动的文件
$ git log         // 显示当前分支的历史版本
$ git log --stat  // 显示提交历史以及每次提交发生变动的文件
$ git shortlog -sn // 显示全部提交过得用户,并按提交次数排序
$ git diff         // 显示暂存区和工做区的差别
$ giy diff --cached [file] // 显示暂存区和上一个提交的差别
$ git diff HEAD          // 显示工做区与当前分支最新提交的差别
$ git show [commit]      // 显示某次提交的源数据和内容变化
$ git reflog           // 显示当前分支的最近几回提交
$ git blame [file]  // 显示指定文件是什么人在什么时间修改过
复制代码

八、 远程同步与撤销暂存

$ git fetch [remote]    // 下载远程仓库的全部变更
$ git remote -v        // 显示全部远程仓库
$ git remote show [remote]   // 显示某个远程仓库的信息
$ git remote add [shortname] [url]  // 增长一个新的远程仓库,并命名
$ git pull [remote] [branch]  // 取回远程仓库的变化,并与本地分支合并
$ git push [remote] [branch]  // 上传本地指定分支到远程仓库
$ git push [remote] --force  // 强行推送当前分支到远程仓库,即便有冲突
$ git push [remote] --all   // 推送全部分支到远程仓库
$ $ git reset --hard  //重置暂存区与工做区,与上一次commit保持一致
$ git checkout .  // 恢复暂存区的全部文件到工做区即撤销暂存
$ git checkout [file] // 恢复暂存区的指定文件到工做区
$ git checkout [commit] [file]  // 恢复某个commit的指定文件到暂存区和工做区
$ git stash       //  暂时将未提交的变化移除,稍后再移入
复制代码

以上是全部git工做中经常使用的一些基本操做命令,在实际开发中,也许你会以为这种用命令化的操做提交代码比较痛苦,下面将会为你们带来一篇关于git可视化管理工具的SourceTree使用,用图形界面的操做替代这种黑窗口命令,让你对代码的管理更加轻松自如。svn

下一篇 SourceTree跳过注册安装和使用工具

相关文章
相关标签/搜索