githup 基本操作

[# git 学习笔记][1]

标签(空格分隔): githup git 版本控制

---

##一、初始配置

配置用户信息

```

$ git config --global user.name "John Doe"

$ git config --global user.email [email protected]

```

查看所有配置信息命令

```

git config --list

```

获取帮助信息

```

$ git help <verb>

$ git <verb> --help

$ man git-<verb>

```

##二、githup基础命令

1、git初始化命令

```

//切换到所在目录,使用init

$ git init

```

2、clone命令

```

$ git clone git://github.com/schacon/grit.git 项目名称

```

3、检查当前文件状态

```

$ git status

```

4、跟踪新文件(add命令),添加之前状态为“**Untracked files**”,添加后状态为“**Changes to be committed:*”(译注:其实 git add 的潜台词就是把目标文件快照放入暂存区域,也就是 add file into staged area,同时未曾跟踪过的文件标记为需要跟踪。)

```

$ git add .  //使用‘.’表示全部文件

$ git add README //表示指定某一个文件

```

5、跟踪已经修改的文件:

在使用git status命令后,发现“**Changes not staged for commit:**”,更改了,但是还没有暂存,可以使用**git add** 命令,之后状态会变为“**Changes to be committed:**”

6、忽略某些文件

创建一个名称为.gitignore 的文件,格式规范如下:

> * 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。

> * 可以使用标准的 glob 模式匹配。

> * 匹配模式最后跟反斜杠(/)说明要忽略的是目录。

> * 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

7、查看已暂存和未暂存的更新

查看尚**未暂存**的修改文件**已经暂存**的文件:

```

$ git diff

```

若要看**已经暂存**起来的文件和**上次提交**时的快照之间的差异

```

git diff --staged

```

8、提交更新

```

$ git commit //这种方式会启动文本编辑器以便输入本次提交的说明

$ git commit -m "Story 182: Fix benchmarks for speed"// 使用-m参数,直接提交更新说明

$ git log // 使用此命令查看提交的信息

```

9、跳过使用暂存区域,不需要git add命令,直接提交

```

$ git commit -a -m ‘added new benchmarks‘

```

10、移除文件

**删除工作目录中的文件和暂存文件:**

```

$ git rm

```

如果手工删除了,则使用**git status**命令后,会提示会出现**Changes not staged for commit**,最后还需要使用**git rm**命令删除文件

**只删除暂存区域,不删除工作目录**

```

$ git rm --cached readme.txt //后面可以列出文件或者目录的名字,也可以使用 glob 模式

```

删除之后的恢复:

git checkout HEAD -- index.html

git checkout HEAD^ -- index.html

11、重命名文件

```

//如果是重命名文件,则只需要提供文件名即可

//如果是移动文件,file_to 则为目标目录

$ git mv file_from file_to

```

12、查看提交历史

```

$ git log -p -2 //-p:显示每次提交的内容差异,2-:则仅显示最近的两次更新

$ git log --oneline //使用一行显示查看提交的信息

$ git log --oneline --decorate --all

$ git log --oneline --decorate --all -10 --graph //显示最近10次提交,使用图形

//恢复操作

$ git revert 版本号

```

13、撤消操作

```

$ git commit --amend //提交撤销

$ git reset HEAD <file>...//暂存撤销

$ git checkout -- <file>...//取消对文件的修改

```

##**三、git分支操作**

**标签:分支:就是一个指针**

1、创建新分支**(实际上就是创建分支指正)**

$ git branch testing // 创建testing分支

2、切换分支

$ git checkout testing //切换到testing分支

3、[分支的新建与合并][2]

新建并切换分支:

$ git checkout -b iss53 // 相当于执行$ git branch iss53 和 $ git checkout iss53 命令

合并分支:

//第一步:切换到主分支,

$ git checkout master

//第二步:执行合并命令

$ git merge hotfix

//合并完成后删除分支

$ git branch -d hotfix

**合并冲突解决**

1、在合并时出现冲突

Automatic merge failed; fix conflicts and then commit the result.

查看哪些文件有冲突:

git status

解决冲突后,需要删除<<<<<<<,======= 和 >>>>>>>,这些行。解决所有冲突后,使用git add 命令,标记已经解决,暂存。

可以使用命令行工具解决冲突:

git mergetool

解决冲突完成后,再次使用

git status

4、[分支管理](http://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E7%AE%A1%E7%90%86)

```

//查看所有分支,带*表明当前所在的分支

$ git branch

//查看分支的最后一个提交对象的信息

git branch -v

//查看已经合并的分支,没有*的可以删除

$ git branch --merged

$ git branch -d  来删除,因为已经合并了,删除不会有影响

//查看还未合并的分支,尚未合并的分支不能直接删除

$ git branch --no-merged

```

**补充:**

比较分支:

git diff master..otherBranch //比较两个分支:

git diff master..otherBranch index.html//表示比较两个分支的index.html文件

git branch list //查看分支列表

git branch -m oldBranchName newBranchName //重命名分支

git branch -d branchName //删除分支

5、[利用分支进行开发的工作流程][3]

6、[远程分支][4]

**表示远程分支:**

(远程仓库名)/(分支名),如:origin/master

**获取远程分支的数据到本地:**

git fetch origin

注意:在fetch操作下载远程分支后,仍无法编辑,不会自动创建新的分支。

如果需要合并远程分支到当前分支,可以运行:

git merge origin/serverfix

如果需要获取一份来开发,则可以在远程分支的基础上创建新分支(详细参考跟踪远程分支):

git checkout -b serverfix origin/serverfix

**推送本地分支**

git push (远程仓库名) (分支名) 如:git push origin serverfix

**跟踪远程分支**

跟踪分支 (tracking branch):远程分支checkout出来的分支。

git checkout -b [分支名] [远程名]/[分支名] 如:

git checkout -b serverfix origin/serverfix

在1.6.2 版本以上,可以使用:--track简化如:

$ git checkout --track origin/serverfix

在跟踪分支中,输入git push,git会自动判断应该向那个分支推送数据。

在跟踪分支中,输入git pull,会获取所有分支索引,并把数据合并到本地分支来。

**删除远程分支**

无厘头的语法:

git push [远程名] :[分支名]

例如:git push origin :serverfix

7、[分支的衍合(rebase)][5]

---

修改暂存:需要把当天的工作进度暂存。

```

//使用此命令,进行暂存

git stash

git stash save ‘暂存工作进度‘;

//查看暂存列表

$ git stash list

//恢复暂存,如果此命令不指定名字,则默认为打开最近一次

git stash apply

git stash apply [email protected]{2}

//删除

git stash pop 名称

```

---

[1]: http://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5

[2]: http://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6

[3]: http://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%A9%E7%94%A8%E5%88%86%E6%94%AF%E8%BF%9B%E8%A1%8C%E5%BC%80%E5%8F%91%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B

[4]: http://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E8%BF%9C%E7%A8%8B%E5%88%86%E6%94%AF

[5]: http://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E8%A1%8D%E5%90%88

时间: 2024-11-08 19:26:25

githup 基本操作的相关文章

&lt;二叉树的基本操作&gt;

#include<stdio.h> #include<stdlib.h> #include<string.h> #define num 100 #define OK 1 typedef int Status; typedef char DataType; typedef struct node { DataType data; struct node *lchild,*rchild; }BinTNode,*BinTree; Status CreateBiTree(Bin

iOS_UITextField 基本操作

基本操作 UITextField *userNameTextField = [[UITextField alloc] init]; userNameTextField.frame = CGRectMake(30, 100, 220, 50); [self.window addSubview:userNameTextField]; [userNameTextField release]; // 设置样式 userNameTextField.borderStyle = UITextBorderSty

Mongodb入门系列(4)——Mongodb体系结构与客户端基本操作及注意细节

说到Mongodb的体系结构,免不了与关系型数据库做个对比.这里以MySQL为例,我们进行一些比较: 从逻辑结构上对比: MySQL层次概念 MongoDB层次概念 数据库(database) 数据库(database) 表(table) 集合(collection) 记录(row) 文档(document) 在MongoDB中没有行.列.关系的概念,集合中的文档相当于一条记录,这体现了模式自由的特点. 从数据存储结构上对比: MySQL的每个数据库存放在一个与数据库同名的文件夹中,MySQL如

Oracle的基本操作-解除用户,赋予权限

一.表的基本操作 1. 用户管理 1.1 初始状态下系统的用户 在系统用户下,执行下面的查询语句可以查看到当前系统的所有用户  select * from dba_users; 1.2 创建一个用户 SQL> create user xp identified by xp; User created. 授予连接数据库的权限:SQL> grant connect to xp; Grant succeeded. SQL> conn xp/xp;Connected. 1.3 解锁一个用户并修改

数据结构中线性表的基本操作-合并两个线性表-依照元素升序排列

#include<iostream> #include<stdlib.h> #define LIST_INIT_SIZE 10/*线性表初始长度*/ #define LIST_CREATENT 2/*每次的增量*/ typedef int ElemType; using namespace std; typedef struct SqList/*线性表的数据结构定义*/ { ElemType *elem;/*线性表基址*/ int length;/*当前线性表所含的元素个数*/ i

【华为技术】VRP平台基本操作

一.显示系统信息 <Huawei>display version 图上所示可以知道VRP平台信息,运行的版本,运行的时间 二.修改和查看设备系统时间参数 1.查看时间 <Huawei>display clock 2.修改系统日期和时间 三.进入系统视图界面 <Huawei>system-view 可以配置接口.路由协议等 四.修改设备名称 五.配置登录标语信息 [R1]header shell information "Welcome to Huawei ro

Mysql查询优化从入门到跑路(三)查询的基本操作

查询的基本操作 1.选择操作 对应的是限制条件,操作对象是二维表的行. 优化方式:选择操作下推 目的:尽量减少连接操作前的元租数,使得中间临时关系尽量少(元祖数少,连接得到的元组数就少) 好处:这样可能减少IO和CPU的消耗.节约内存空间 2.投影操作 对用的SELECT查询的目的列对象 优化方式:投影操作下推 目的:尽量减少连接操作前的列数,使得中间临时关系尽量小(选择操作是使元组的个数尽量少,投影操作是使一条元组尽量少) 好处:虽然不能减少IO(多数数据库存储方式是行存储,元组是读取的最基本

TP框架对数据库的基本操作

数据库的操作,无疑就是连接数据库,然后对数据库中的表进行各种查询,然后就是对数据的增删改的操作,一步步的讲述一下框架对数据库的操作 想要操作数据库,第一步必然是要:链接数据库 一.链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编写config.php文件 我这里是这样的文件路径 (2)打开这个config.php文件,然后找到父类配置文件convention.php文件,将关于"数据库"的部分复制粘贴到config.php配置文件中 1 2 3 4 5 6 7 8 9 /

图形数据库Neo4J的基本操作

1.创建一个节点 1 语法:CREATE (node-name:label-name{Property1-name:Property1-Value,...Propertyn-name:Propertyn-Value}) 2 如: 3 create(江湖流派:明教{name:'张无忌',skill:'九阳真经'}) 2.为两个节点建立关系 1 语法:CREATE(node1:label1)-[relationship-name:relationship-label-name]->(node2:la