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 origin[email protected]: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 clone[email protected]: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>

14stash妙用——

“stash”就是清理并保存当前工作现场,在须要的时候再拿出来用。

$git stash

清理并保存当前工作现场,会产生一个id,形如“[email protected]{n}”,n是一个详细的数字,从0開始。

$git stash list

查看stash状态。

$git stash pop [id]

“id”是可选的,默认是“[email protected]{0}”,pop的意思是把stash列表中与id相应的东西move到工作现场。从一个地方移动到还有一个地方。

$git stash apply [id]

“id”是可选的。默认是“[email protected]{0}”。apply的意思是把stash列表中与id相应的东西copy到工作现场,从一个地方拷贝到还有一个地方。

$git stash drop [id]

“id”是可选的,默认是“[email protected]{0}”。drop的意思是把stash列表中与id相应的东西直接delete。

$git stash show [id]

“id”是可选的,默认是“[email protected]{0}”,show的意思是把stash列表中与id相应的东西show出来,查看详细内容。

$git stash clear

清空stash列表。慎用这个命令。

15、忽略特殊文件——

在Git工作区创建一个特殊的文件“.gitignore”,在里面加入要忽略的文件名称就可以。

16Git的图形用户工具——

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

时间: 2024-12-29 16:44:44

Git经常使用命令总结的相关文章

git的常用命令

 git的常用命令 一.bash的简单命令 注意:首字母都是小写 1.Pwd 查看当前目录 2.Cd /e 切换到e盘 3.Cd 文件夹名称   切换到下一个目录 4.Cd ../ 返回上一级目录 5.Ls 查看当前目录的内容  (canvas/ 是文件夹) 6.Ls -a 查看所有文件 -a 是all的意思 7.Mkdir hello创建目录(文件夹)名为hello 8.Touch test.txt 创建文件test.txt 9.Cat 文件名 查看文件中的内容 10.Wc 文件名  统计文件

Git 版本管理工具命令速查

转自:http://www.jb51.net/article/55442.htm 一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r 查看远程所有分支git commit -am "init" 提交并且加注释 git remote add origin [email protected]:ndshowgit push origin mast

Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突

Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目讲的,上篇主要是说用GUI来图形化界面操作,但是一般我们程序员也不会这么干,用命令又轻松又愉悦,所以,这里我就再开了一篇来专门说一下纯命令是怎么去操作的,但是要注意哦,其实廖雪峰老师的网站就是非常赞的学习资源哦! 廖雪峰老师:http://www.li

Git操作手册|命令速查表

这篇文章主要介绍Git分布式版本管理与集中式管理的一些差异,总结下Git常用命令作为日后的速查表,最后介绍Git进阶的一些案例.本文分为以下几个部分: Git与SVN差异 Git常用命令 Git进阶指南 Git与SVN差异 Git的第一个版本是Linux之父Linus Torvalds亲手操刀设计和实现的,Git 基于 DAG 结构 (Directed Acyclic Graph),其运行起来相当的快,它已经是现在的主流. Git 和 SVN 思想最大的差别有四个: 去中心化 直接记录快照,而非

linux下git 的忽略命令 &nbsp;

以某个tp5的项目为例: git pull git rm -r runtime git commit -m 'delete runtime' git pull git push git status vim .gitignore 里面写: .idea runtime/ git status git add . git commit -m 'ignore runtime' git pull git push linux下git 的忽略命令

Git基础(常用命令)介绍

版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统,如rcs:集中化的版本控制系统,如CVS.SVN:分布式版本控制系统,如Git. Git基础要点 Git和其它版本控制系统的主要差别在于:Git只关心文件数据的整体是否发生变化,而大多数其它系统则只关心文件内容的具体差异. 对于任何一个文件,在Git内都只有三种状态:已提交(committed).已修改(modified)和已暂存(staged).已提交表示该文件已经被安全地保存在本

git的常用命令。。

git的常用命令.. git help <command>  显示command的help git show  显示某次提交的内容 git show $id git co -- <file>  抛弃工作区修改 git co .  抛弃工作区修改 git add <file>  将工作文件修改提交到本地暂存区 git add .  将所有修改过的工作文件提交暂存区 git rm <file>  从版本库中删除文件 git rm <file> --c

关于Git的stash命令

git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作. 基础命令: $git stash $do some work $git stash pop 进阶: git stash save "work in progress for foo feature" 当你多次使用’git st

git的一些命令行

以下代码均在命令行中执行:在目标文件夹目录下: 1.初始化一个Git仓库,使用git init命令. 2.添加文件到Git仓库,分两步: 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件: 第二步,使用命令git commit,完成. 3.要随时掌握工作区的状态,使用git status命令. 4.如果git status告诉你有文件被修改过,用git diff可以查看修改内容. 5.HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用

GIT 版本控制常用命令汇总

[转自]:http://www.cnblogs.com/sawyerzhu/p/3578268.html GIT 版本控制常用命令汇总 git version 查看当前git版本信息 git help 获取全部命令帮助信息 git help <command> 获取指定命令帮助信息 git config user.name "Your Name Comes Here" 设置当前项目git用户名 git config --global user.name "Your