Git经常使用命令总结
Git是一款开源的分布式版本号控制系统,由Linux之父Torvalds用C语言开发。
“the stupid content tracker”,Git自诩为stupid,却是一个很强大的tracker。
Git管理项目时,文件流经三个工作区:工作文件夹、暂存区及本地仓库。
1、在Linux上安装Git——
高速安装:在终端运行命令“sudo apt-get install git”。
源代码安装:下载源代码包并解压,在解压文件夹依次运行命令“./config”、“make”、“makeinstall”。
成功安装后还须要做一些简单的配置:
$git config --global user.name “your name”
$git config --global user.email “your email address”
$git config --global color.ui true
$git config --global alias.st status
当然也能够通过“config”做其他须要的配置,配置文件在“.git/config”,“--global”的结果适用于当前用户的全部仓库,“alias”非常好用。设置别名,上面给“status”设置了一个别名“st”。以后须要“status”的地方直接用“st”即可,毕竟能够少打几个字母。
2、第一个Git仓库——
$git init
“init”用来创建一个空的Git仓库或者又一次初始化一个已经存在的Git仓库,首次创建成功后会发现当前文件夹下多了一个“.git”文件夹。
3、查看工作区状态——
$git status
“status”是一个经常使用的命令。用来查看工作区状态,工作文件夹下新加入文件的状态是untracked。其他文件改动后的状态是not
staged。这两种状态的文件都是须要加入到暂存区以便提交到仓库的,暂存区下的文件状态能够是new或者modified。
4、加入工作文件夹的文件到暂存区——
$git add <file>
加入单个文件。
$git add <file> <file2>
加入多个文件。
$git add -A
加入全部文件。
$git add --all
加入全部文件。
5、提交暂存区的文件到仓库——
$git commit -m “comment”
“comment”是本次提交的凝视,配合“-m”參数,提交成功后会产生一个新的commit
id。
$git commit -a -m “comment”
“-a”等同于“--all”。这个參数的意思是自己主动暂存。也就是说已经处于暂存区的文件假设被改动了,不用进行传统意义上的先“git
add”后“git commit”。而是直接“git
commit -a”就可以。
$git commit --amend -m “comment”
“--amend”參数的意思是追加一次提交,不产生新的commit
id。
6、撤销工作文件夹的改动——
$git checkout <file>
撤销单个文件的改动。
$git checkout <file> <file2>
撤销多个文件的改动。
7、撤销暂存区的改动——
$git reset HEAD <file>
撤销单个文件的改动。
$git reset HEAD <file> <file2>
撤销多个文件的改动。
$git reset HEAD
$git reset HEAD --soft
$git reset HEAD --hard
撤销全部文件的改动,这样的情况下能够使用“--soft”或“--hard”參数,默认是“--soft”模式,撤销并保留改动。“--hard”则是撤销并删除改动。
上面的“HEAD”是近期一次提交到仓库的状态,前面几次依次为“HEAD^”、“HEAD^^”等,假设是前面n次呢,那就显得非常不方面了。只是能够这样表示“HEAD~n”,n是一个详细的数字,这个数字是须要我们自己算出来的。还是有点麻烦。
“HEAD”事实上就是个commit
id,直接用这个id就方便多了。
8、查看改动前后的异同——
$git diff <file>
查看单个文件改动前后的异同。
$git diff <file> <file2>
查看多个文件改动前后的异同。
$git diff
查看全部文件改动前后的异同。
上面的对照都是在工作文件夹和暂存区之间进行的。
$git diff <commit id> <file>
这个对照是在本次改动和某次提交之间进行的。
9、查看提交信息——
$git log
显示全部的提交记录,包含commit id、提交者、提交时间、凝视。
$git log --pretty=oneline
“--pretty=oneline”參数的优点是在一行上显示每次的提交记录。包含commit
id、凝视。
$git log --abbrev-commit
commit id是一个非常长的字符串,用起来可能不太方面,“--abbrev-commit”參数仅仅显示id的前七位,通常情况下前七位就够用了。
$git log --graph
“--graph”參数在屏幕左边显示每次提交之间的关系。
$git reflog
“reflog”与“log”不同。
10、从暂存区删除文件——
$git rm <file>
从暂存区删除一个文件。在工作文件夹没有备份。
$git rm <file> -f
从暂存区删除一个文件,在工作文件夹没有备份。
$git rm <file> -cached
从暂存区删除一个文件,在工作文件夹留有备份。
11、远程仓库(GitHub)——
首先,在本地创建ssh key。命令例如以下:
$ssh-keygen -t rsa -C “your email address”
创建成功后,在用户主文件夹的“.ssh”文件夹下能够找到“id_rsa”私钥和“id_rsa.pub”公钥。
然后加入“id_rsa.pub”中的内容到GitHub上,登陆GitHub。在“Settings”选项里找到“SSHKeys”,依据页面提示完毕公钥加入。
接着在GitHub上创建一个仓库,点击几个button就能够完毕。
(比如,我的GitHub账户名为naturEarth,创建了hellogit和gittest两个仓库用于练习)
11.1关联本地仓库与远程仓库hellogit:
$git remote add origingit@github.com:naturEarth/hellogit.git
加入远程仓库,“origin”是远程仓库的名字。默认这个名字。也能够是其他的名字。
推送本地仓库的内容到远程仓库:
$git push -u origin master
“master”是本地的分支,“-u”等同于“--set-upstream”,不但会把本地的“master”分支内容推送到远程新的“master”分支,还会把本地的“master”分支和远程新的“master”分支关联起来,在以后的推送或者拉取时就能够简化命令。推送成功后。能够立马在GitHub页面上看到远程库的内容已经和本地一模一样。从如今起。仅仅要本地作了提交,就能够通过例如以下命令推送:
$git push origin master
11.2克隆远程仓库gittest到本地:
$git clonegit@github.com:naturEarth/gittest.git
克隆成功后。本地就多了一个gittest文件夹,cd进这个文件夹就能够看到和远程仓库一样的东西。
12、多分支管理——
$git branch
查看分支。
$git branch <name>
创建分支。
$git checkout <name>
切换分支。
$git checkout -b <name>
创建并切换分支。
$git merge <name>
合并某分支到当前分支。默觉得fast-forward策略。
$git merge --no-ff -m “comment”<name>
合并某分支到当前分支,使用recursive策略。merge时会产生一个新的commit
id,所以加了凝视。
注意:在合并分支时,有可能会产生冲突。这是由于多个分支同一时候改动了某个文件导致的。这时候仅仅要手动改动产生冲突的文件然后又一次提交就可以。
$git branch -d <name>
删除分支。
$git branch -D <name>
假设在被删除的分支上提交了东西却没有merge到当前分支,用“-d”參数删除是会失败的,这时就要用到“-D”參数了,忽略被删除分支上的提交。
13、远程仓库及多分支——
$git remote
查看远程仓库的名字。
$git remote -v
“-v”即“--verbose”,查看远程仓库的名字及url。
$git branch -r
查看远程仓库的分支。
$git checkout -b <name> origin/<branch_name>
创建并切换分支,同一时候与远程仓库“origin”的“branch_name”分支关联起来,假设远程仓库“origin”没有“branch_name”分支的话,则会创建出来,这样做的目的是方便以后本地仓库和远程仓库的同步,假设不这样做的话,在后面的pull或push代码时会有问题。只是这也是有补救措施的,例如以下命令:
$git branch --set-upstream <name> origin/<branch_name>
在每次push代码到远程仓库时,最好先pull更新下代码。避免冲突:
$git pull
$git push origin <local_branch_name>
14、stash妙用——
“stash”就是清理并保存当前工作现场,在须要的时候再拿出来用。
$git stash
清理并保存当前工作现场,会产生一个id,形如“stash@{n}”,n是一个详细的数字,从0開始。
$git stash list
查看stash状态。
$git stash pop [id]
“id”是可选的,默认是“stash@{0}”,pop的意思是把stash列表中与id相应的东西move到工作现场。从一个地方移动到还有一个地方。
$git stash apply [id]
“id”是可选的。默认是“stash@{0}”。apply的意思是把stash列表中与id相应的东西copy到工作现场,从一个地方拷贝到还有一个地方。
$git stash drop [id]
“id”是可选的,默认是“stash@{0}”。drop的意思是把stash列表中与id相应的东西直接delete。
$git stash show [id]
“id”是可选的,默认是“stash@{0}”,show的意思是把stash列表中与id相应的东西show出来,查看详细内容。
$git stash clear
清空stash列表。慎用这个命令。
15、忽略特殊文件——
在Git工作区创建一个特殊的文件“.gitignore”,在里面加入要忽略的文件名称就可以。
16、Git的图形用户工具——
Git管理基本都是在命令行完毕的。只是也有很多图形用户工具能够使用,如gitk、gitg,gitk中的“git
gui”功能类似与“git diff”,但前者更好用、更直观。
repo——
repo是google用python写的调用git仓库的工具,与git不同的是,能够同一时候管理多个git仓库,先简介几个命令。
$repo init -u <url> [OPTIONS]
在当前文件夹下初始化repo,会在当前文件夹生成一个.repo文件夹。url指定远程仓库,OPTIONS能够是-b、-m等。-b指定分支,-m指定.xml文件。
$repo sync
同步代码。
$repo start <branch_name> [OPTIONS]
创建分支。OPTIONS能够是--all。
完结。
另,搭建自己的Gitserver也非常easy,可能会用到Gitosis公钥管理工具、Gitolite权限管理工具,这里就不做过多解释了。
Git具体介绍可參考官网:http://git-scm.com
Git经常使用命令总结的更多相关文章
- GIT 版本控制常用命令学习汇总
GIT 版本控制常用命令汇总 git version 查看当前git版本信息 git help 获取全部命令帮助信息 git help <command> 获取指定命令帮助信息 git c ...
- git的一些命令行
以下代码均在命令行中执行:在目标文件夹目录下: 1.初始化一个Git仓库,使用git init命令. 2.添加文件到Git仓库,分两步: 第一步,使用命令git add <file>,注意 ...
- git log 常用命令及技巧
git log常用命令以及技巧 1.git log 如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者.提交日期.和提交说明.如果记录过多,则按Page Up.Pag ...
- Git基本常用命令
Git基本常用命令如下: mkdir: XX (创建一个空目录 XX指目录名) pwd: 显示当前目录的路径. git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件. git ...
- git workflow常用命令
git init git status git add readme.txt git add --all Adds all new or modified files git comm ...
- git的一些命令
因为项目的原因,大家把项目托管到git上,然后我不会,队友就传了一个廖雪峰的git教程,讲的很详细,不会用git的同学,可以在http://pan.baidu.com/s/1pKizolP上下载,这是 ...
- 关于Git的stash命令
add 添加新文件到 Git 代码仓库的索引中 $ git add filename mv 移动或重命名文件 $ git mv old-filename new-filename rm 从工作目录和 ...
- GIt/Github常用命令
1)git init:初始化本地仓库 2)创建文件:touch read.txt 3)当操作本地的文件时,使用常用的命令,如(mv,ls..)就可以操作,当操作暂存区的文件时需要在命令前家git,并且 ...
- git链接GitHub命令及基本操作
Git是一款不错的代码管理工具,下面引用百科的一段话: Git是用于Linux内核开发的版本控制工具.与CVS.Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服 ...
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库--Windows下G ...
随机推荐
- CSS三栏布局的四种方法
总括: 不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文具 ...
- 全国高校绿色计算大赛 预赛第一阶段(Python)
第1关将字符串反转 #!/usr/bin/env python # -*- coding: utf-8 -*- class Task: def inversion(self, str): # **** ...
- Python3.5安装wxpython
摘要:安装python3.X的wxpython:学习<Python基础教程>第12章“图形用户界面”时,关于升级pip和安装wxpython时遇到的一些问题和解决办法. 关于升级pip 使 ...
- 笔试算法题(53):四种基本排序方法的性能特征(Selection,Insertion,Bubble,Shell)
四种基本算法概述: 基本排序:选择,插入,冒泡,希尔.上述算法适用于小规模文件和特殊文件的排序,并不适合大规模随机排序的文件.前三种算法的执行时间与N2成正比,希尔算法的执行时间与N3/2(或更快)成 ...
- 关于Integer,127和128的问题
里面的,直接贴源码来看 Integer i=127; Integer b=128; Integer c=128; Integer d=127;Integer j;System.out.println( ...
- xtrbackup备份mysql
mysqldump备份方式是采用逻辑备份,但是它最大的缺陷就是备份和恢复速度慢对于一个小于50G的数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了. x ...
- python实现tcp文件下载器
服务器端代码 import socket import os import threading # 处理客户端请求下载文件的操作(从主线程提出来的代码) def deal_client_request ...
- LeetCode(56)Merge Intervals
题目 Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6], ...
- 模拟Django的admin自定义stark组件
1.新建Django项目--新建app:app01和stark--在settings中配置app和数据库--在models.py中新建模型表--完成数据库迁移 2.在stark下的apps.py中: ...
- 调试24L01经验总结
注意的地方: 1.调试24L01的时候,信号的初始状态一定要设置,否则在设置模块的状态的时候容易出错.( CE=0; CSN=1; SCK=0; MOSI = 1; IRQ = 1;)IRQ设置成1是 ...