1、git 安装好后,如何配置?

  a: 设置本地用户名、邮箱,很重要!之后的每次提交都会用到这两条信息,说明是谁提交了更新。  

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

  这是设置全局的用户名、邮箱。当然如果你要在某个项目单独修改也可以,不加 --global 再在项目单独设置一次就好。

  b: 生成ssh 公钥

ssh-keygen -t rsa -C "邮箱"

  然后根据提示连续回车即可在~/.ssh目录下得到id_rsaid_rsa.pub两个文件,id_rsa.pub文件里存放的就是我们要使用的key。

  c: 上传公钥到github或gitlab

  找到id_rsa.pub复制内容,到github或gitlab个人设置,Add SSH key 后保存,即可。

  d: 可以测试一下,是否配置成功:

ssh -T git@github.com

  如果配置成功,则会显示:

Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.

2、关于 git diff 比较代码异动?

  有以下几种比较方式:

  a: git diff HEAD

    比较当前工作区和上次提交文件的差异。

  b: git diff

    比较当前工作区文件和暂存区文件的差异。

    如果没有暂存区,则跟上面 git diff HEAD 一样,比较的是工作区和上次提交文件的差异。

  c: git diff --staged 或者 git diff --cached

    比较暂存区和上次提交文件的差异。

  d: git diff abc.js

    比较尚未暂存的abc.js文件更新了哪些地方。

  e: git diff --staged/--cached abc.js

    比较暂存区的abc.js文件跟上次提交的abc.js更新了哪些地方。

  f: git diff commit_id1 commit_id2

    比较 commit_id1和commit_id2 两个版本之间的差异,具体的commit_id可以通过 git log 命令查看。

  g: git diff commit_id1:filename commit_id2:filename

    比较 commit_id1和commit_id2 两个版本之间filename文件的差异。

3、reset 和 checkout 的差别:

  reset:当文件加入了 stage 区以后,如果要从stage删除,即退出暂存区。则使用 reset, 此时工作区的文件不做任何修改,如:git reset a.js

     这个命令就是 git stage/add a.js 的反操作。

  checkout: 当文件加入了 stage 区以后,后来又做了一些修改,这时发现后面的修改有问题,想回退到提交到暂存区的状态,使用 checkout 命令:

     git checkout a.js 此时,工作区的内容丢失,之前暂存区和commit的文件不受影响。

4、关于分支,分支是Git最最重要的一个超级核心、好用、有用、牛叉的一个东西!

  git branch xxx  新建xxx分支

  git checkout xxx  切换到xxx分支,注意跟丢弃文件的那个命令差别:git checkout -- a.txt 多一个 --

  git checkout branch xxx   新建并切换到xxx分支,一句话跟上面两句话作用一样,省事!

  git branch -d xxx  删除xxx分支

  git branch -D xxx  强制删除xxx分支,如果xxx分支有修改未提交,用-d是删不掉的,需要用 -D 强制删除

  git push origin :xxx  删除xxx分支,并提交到服务器(删除服务器上的xxx分支)原理:冒号不能省略,本地没有xxx分支,此时push一个空分支,相当于删除服务器上xxx分支

  git branch  查看当前项目所处的分支

  git branch -a  查看当前项目所有分支,当前分支用 * 标记;远程服务器有 而本地没有的分支,会被标红。

  分支如此如此重要,实际工作中,关于分支的使用,应该严格按照以下几个基本原则进行:

1、首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
2、那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
3、你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

5、关于 git reflog

  这个也是很好用的一个东西。比如,现在本地开发,提交了3个commit版本,ID假定为:111,222,333

  此时,我回退到 HEAD ,就是服务器上最后一次提交的那个版本,意味着,这三个commit版本的代码我都没了,git log 也看不到之前3次commit的信息。但如果我又想要回到 222 的commit ID时候的代码,怎么办?

  此时,git reflog 这个超级强大命令,就可以派上用场了,他包含了提交、回退过所有的commit信息。然后找到commit id,通过 git reset --hard commit_id 即可以回退到之前提交的任何一个版本。git reset --hard commit_id 只要你能找到 commit id,他就能给你回退到当时的版本,也超级强大!

6、关于分支合并

  将 master 代码 合并到 dev 分支。切换到master分支后,

    git merge dev   “fast forward” 模式的分支合并

    git merge --no-ff -m "merge with no-ff" dev   合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。建议用这种!

  

7、git stash 保存工作现场。stash - 藏匿,储藏

  有时候,某个分支上写到一半,有其他任务需要紧急处理,但不想提交当前分支的改动,怎么破?Git 提供了一个超级好用的命令,git stash 保存当前工作现场!执行后,可以“藏匿”当前的工作现场。此时,想要查看当前分支的 工作现场列表, git stash list

$ git stash
Saved working directory and index state WIP on test2: 1007901 2222
HEAD is now at 1007901 2222

  其他任务修改完后,想要恢复当时保存的工作现场,两种方式:

  1: git stash apply   // 切换到最近的工作现场,如果要删除 需要执行 git stash drop 命令删除

  2: git stash pop    // 切换到最近的工作现场,并删除 stash 列表 的这个工作现场

  接下来,就可以继续之前的工作了。

  如果,在当前分支保存完当前工作修改后。又在当前分支上修改,然后stash切回到之前工作现场,会把刚才的改动merge到切过来的工作现场,如果有冲突还需要手动解决一下冲突。

8、git 命令设置别名

  git 的某些命令真的是太长了,不容易记住,可以通过 alias 来设置别名:

// git st 替换 git status
$ git config --global alias.st status
// git ck 替换 git checkout
$ git config --global alias.co checkout
// git ci 替换 git commit
$ git config --global alias.ci commit
// git br 替换 git branch
$ git config --global alias.br branch

  世界瞬间美好好多啊!当然,别名的名称你随意。

git用法之常用命令的更多相关文章

  1. git用法之常用命令[克隆、提交]

    1.克隆/下载项目 1)git clone git@git.soydai.cn:liuxuewen/static-file-3.0.git 或者 2)git clone http://git.soyd ...

  2. Git安装以及常用命令(图文详解)

    **Git安装以及常用命令** 1.下载安装Git,傻瓜式安装相信大家都会. 官网下载地址:[https://git-scm.com/downloads] 2.Git基本操作 (1)git --ver ...

  3. Git的一些常用命令

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 简单的说就是托管代码的便于多人开发的管理系统. 二.Git的一些命令,我详细的说一下 我是基于github给大家说一下git的一些常 ...

  4. Git Bash Here常用命令以及使用步骤

    1.首先,要clone项目代码: git clone 链接地址 2.更新代码: git pull 3.添加修改过的文件.文件夹: git add 修改过的文件,文件夹 4.提交并注释: git com ...

  5. git提交项目常用命令及git分支的用法

    1.第一步首先从git托管平台clone项目,我这里就使用idea为例: 填写git的url与存放本地目录名及项目名     2.如果你对项目进行了一些修改,就可以执行git命令,进行提交. 有两种方 ...

  6. Git 和 Repo常用命令

    这篇博客总结的也不错: git常用及进阶命令总结 Git与Repo入门 一.初始環境配置 git config --global user.name "John Doe"git c ...

  7. Git 、 Cocoapods常用命令

    Git常用命令 1.添加文件   git  add  xxx 2.提交更新到本地  git commit   -m  'local-repo' 3.提交更新    git  push master  ...

  8. Git学习 --> 个人常用命令add,commit以及push

    Git命令行配置1 安装Github2 安装msysgit3 要配置用户名和油箱  git config --global user.name <用户名> 我的命令就是:git confi ...

  9. Git之 基本常用命令

    Git基本常用命令如下: mkdir:         XX (创建一个空目录 XX指目录名) pwd:          显示当前目录的路径. git init          把当前的目录变成可 ...

随机推荐

  1. iOS网络编程

    今天的重点是UIWebView.NSURLSession.JSon. 网络编程联网准备:1.在Info.plist中添加AppTransportSecurity类型Dictionary:2.在AppT ...

  2. Linux下更换默认yum源为网易yum源的操作记录

    废话不多说,下面记录了centos下更换系统默认yum源为网易yum源的操作过程:1)备份原有的默认yum源[root@bastion-IDC ~]# cp /etc/yum.repos.d/Cent ...

  3. 使用 iscroll 实现焦点图无限循环

    现在大家应该都看到过焦点图轮播的效果,这个效果是什么样我就不截图了.昨天做练习,练习要求是使用iscroll实现焦点图的无限循环滚动,并且当手指触摸焦点图后,停止焦点图的循环滚动.第一次接触iscro ...

  4. [LeetCode] Climbing Stairs 爬梯子问题

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  5. jquery html动态添加的元素绑定事件详解

    在实际开发中会遇到要给动态生成的html元素绑定触发事件的情况: <div id="testdiv"> <ul></ul> </div&g ...

  6. 记录PHP的超全局变量$_SERVER

    $_SERVER是PHP中十分实用的超全局变量,在开发可移植的网站的时候会变得很有用. 下面我记录一下我自己常用到的几个变量 1.$_SERVER['SERVER_NAME']:记录了网站的域名. 2 ...

  7. 【USACO 3.2】Magic Squares

    题意 4*2个格子分别为 1234 8765 的魔板有3种操作,A:上下两排互换,B:最后一列放到第一列前面,C:中间四个顺时针旋转1格. 现在给出目标状态,找出最少步数可从原始状态到达目标状态,且输 ...

  8. MSMQ学习

    一.理论准备 MSMQ(MicroSoft Message Queue,微软消息队列)官方的解释是:在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布 ...

  9. 【20160722-20160728】NOI2016滚粗记&&酱油记&&游记

    先挖坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.c ...

  10. Android基础测试题(二)

    今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...