git是开源的分布式版本控制系统,分布式主要区别于集中式代表CVS(Concurrent Version System,遵从C/S架构,同步比较笨拙。)和SVN(Subversion),linux开发者linus不满于gitkeeper的许可政策从而开发的用来对不同linux版本进行控制的软件。后面出现了gitlab和github。目前github已被微软收购。
安装完git需要配置用户名和邮箱:

git config --global user.name="?"
git config --global user.email="?"

进入你要工作的文件夹(项目文件夹)下(通过cd命令),通过init命令让其作为仓库。此时会有一个.git的文件夹(用来跟踪管理版本库),所有需要操作的文件都需要丢到该仓库(目录)下,不然不能识别。即使add命令(如果你了解过)也不能将外部文件加到仓库的暂存区(笔者未试过)。

git init

假设我们在仓库外有一个写好的文件叫做my_test.txt,现在想放到仓库中。
1、move(假设windows环境)命令转移文件到当前仓库。
2、git add my_test.txt //添加文件到暂存区,进行本地文件的追踪合并工作。
3、git commit [-m "本次提交说明文本"]//将暂存区的文件推向本地仓库
4、git remote add origin+你在github上仓库的url //增加网络仓库
5、git push[-u] origin master//将本地仓库文件push到网络仓库。-u是在第一次推送时将本地仓库与网络仓库联系起来。以后就可以便捷开发。
有一张来自网络的形象图:

图片一
如果在github上看到一个项目想跟踪开发,就fork一下,然后会自动生成属于你的branch,你想在本地开发则需要clone你分支下的仓库url.
即:git clone +url //git在clone时支持ssh协议和https协议。github上每个项目都有对应的地址。

说完了常见的,下面罗列一下不常见的:
branch
列出所有本地分支:git branch
列出所有远程分支:git branch -r
列出所有本地分支和远程分支:git branch -a
新建一个分支,header指向当前分支:git branch [branch-name]
新建一个分支,并切换到该分支:git checkout -b [branch]
新建一个分支,指向指定commit:git branch [branch] [commit]
新建一个分支,与指定的远程分支建立追踪关系:git branch --track [branch] [remote-branch]
切换到指定分支,并更新工作区:git checkout [branch-name]
切换到上一个分支:git checkout -
在现有分支与指定的远程分支之间建立追踪:git branch --set-upstream [branch] [remote-branch]
合并指定分支到当前分支:git merge [branch]
选择一个commit,合并进当前分支:git cherry-pick [commit]
删除分支:git branch -d [branch-name]
删除远程分支:
git push origin --delete [branch-name]
git branch -dr [remote/branch]
tag
列出所有标签:git tag
新建一个tag在当前commit:git tag [tag]
新建一个tag在指定commit:git tag [tag] [commit]
删除本地tag:git tag -d [tag]
删除远程tag:git push origin :refs/tags/[tagName]
查看tag信息:git show [tag]
提交指定tag:git push [remote] [tag]
提交所有tag:git push [remote] --tags
新建一个分支,指向某个tag:git checkout -b [branch] [tag]
commit
提交暂存区到仓库区:git commit -m [message]//前面介绍到了
提交暂存区的指定文件到仓库区:git commit [file1] [file2] ... -m [message]//前面也介绍到了
提交工作区自上次commit之后的变化,直接到仓库区:git commit -a
提交时显示所有diff信息:git commit -v
使用一次新的commit,替代上一次提交,如果代码没有任何新变化,则用来改写上一次commit的提交信息:git commit --amend -m [message]
重做上一次commit,并包括指定文件的新变化:git commit --amend [file1] [file2] ...
添加指定文件到暂存区:git add [file1] [file2] ..
添加指定目录到暂存区,包括子目录:git add [dir]
添加当前目录的所有文件到暂存区:git add .
添加每个变化前,都确认,同一个文件的多处变化,分次提交:git add -p
删除工作区文件,并且将这次删除放入暂存区:git rm [file1] [file2] ...
停止追踪指定文件,文件保留在工作区:git rm --cached [file]
改名文件,并且将这个改名放入暂存区:git mv [file-original] [file-renamed]
log
显示有变更的文件:git status
显示当前分支的版本历史:git log
显示commit历史,以及每次commit发生变更的文件:git log --stat
搜索提交历史,根据关键词:git log -S [keyword]
显示某个commit之后的所有变动,每个commit占据一行:git log [tag] HEAD --pretty=format:%s
显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件:git log [tag] HEAD --grep feature
显示某个文件的版本历史,包括文件改名:git log --follow [file]
git whatchanged [file]
diff
显示指定文件相关的每一次diff:git log -p [file]
显示过去5次提交:git log -5 --pretty --oneline
显示所有提交过的用户,按提交次数排序:git shortlog -sn
显示指定文件是什么人在什么时间修改过:git blame [file]
显示暂存区和工作区的差异:git diff
显示暂存区和上一个commit的差异:git diff --cached [file]
显示工作区与当前分支最新commit之间的差异:git diff HEAD
显示两次提交之间的差异:git diff [first-branch]...[second-branch]
显示今天你写了多少行代码:git diff --shortstat "@{0 day ago}"
show
显示某次提交的元数据和内容变化: git show [commit]
显示某次提交发生变化的文件:git show --name-only [commit]
显示某次提交时,某个文件的内容:git show [commit]:[filename]
remote
显示当前分支的最近几次提交:git reflog
下载远程仓库的所有变动: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 checkout [file]
恢复某个commit的指定文件到暂存区和工作区:git checkout [commit] [file]
恢复暂存区的所有文件到工作区git checkout .
重置暂存区的指定文件,与上一次commit保持一致,但工作区不变:git reset [file]
重置暂存区与工作区,与上一次commit保持一致:git reset --hard
重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变:git reset [commit]
重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致:git reset --hard [commit]
重置当前HEAD为指定commit,但保持暂存区和工作区不变:git reset --keep [commit]
新建一个commit,用来撤销指定commit,后者的所有变化都将被前者抵消,并且应用到当前分支:git revert [commit]
暂时将未提交的变化移除,稍后再移入:git stash
git stash pop
生成一个可发布的包:git archive

转载来源:阮一峰的网络日志。因为不想来回翻看别人的博客,就自己誊写一了一遍并进行记忆。

git命令初级的更多相关文章

  1. Git命令学习总结(-)

    入职的第一天,让git命令直接给难住了,汗!使用习惯可视化的工具对于命令行早就忘记的一干二净.还好,回家自己练习一下,总会没有错的.git就不做简介了,版本管理除了svn就是git了,其他的都无所谓了 ...

  2. 常用Git命令手册

    常用Git命令手册 此文只是对Git有一定基础的人当记忆使用,比较简略,初级学员强烈推荐廖雪峰老师的Git系列教程,通俗易懂,戳此处即可开始学习 1.安装Git Linux sudo apt-get ...

  3. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  4. 工作中常用的git命令

    一 常用Git命令 git clone:(区分SSH or HTTP) git init:初始化仓库 二 Git命令详解 Git Bash下,cd /c git clone,从远程Git版本库克隆一份 ...

  5. 常用 Git 命令清单

    我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...

  6. 常look的Git命令

    常用的Git命令   命令  简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply   应用补丁 git am  应用邮件格式补丁 git a ...

  7. ***Linux下使用git命令及github项目

    在linux下搭建git环境1.创建Github账号,https://github.com2.Linux创建SSH密钥: ssh-keygen  ##一直默认就可以了 3.将公钥加入到Github账户 ...

  8. 我所记录的git命令(非常实用)

    一.前言 记录一下工作中常用到的git命令,只是简单的笔记,欢迎大家交流... [ 顺便问下园友们,怎么感觉博客园发布的博客搜索有时都搜不到,后台编辑能填的都填写了,还是觉得搜索排名不高? 相同的标题 ...

  9. GIT命令行的使用

    新手了解 有不对的地方指点下 首先, 了解下什么是GIT,GIT是一款开元的分布式版本控制工具, 在世界上的所有分布式版本控制工具中,GIT是最简单,最流行,同时也是最常用的 相比于其他版本的控制工具 ...

随机推荐

  1. 利用Redis Sentinel实现redis主从自动切换

    redis主从配置很简单,只需要在slave的配置里加slaveof 192.168.0.100 6379(master的ip和端口) 如果master有密码再设置 masterauth passwo ...

  2. codevs 4228 小猫爬山 【搜索】By cellur925

    题目描述 Description Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). ...

  3. 原生JavaScript之实战 模拟重力场(篮球)

    成品图如下所示: 点击篮球让篮球掉下 搭建HTML+CSS代码 html: <div id="demo"></div> css: div{ width:10 ...

  4. 数学/找规律/暴力 Codeforces Round #306 (Div. 2) C. Divisibility by Eight

    题目传送门 /* 数学/暴力:只要一个数的最后三位能被8整除,那么它就是答案:用到sprintf把数字转移成字符读入 */ #include <cstdio> #include <a ...

  5. 贪心 UVALive 6832 Bit String Reordering

    题目传送门 /* 贪心:按照0或1开头,若不符合,选择后面最近的进行交换.然后选取最少的交换次数 */ #include <cstdio> #include <algorithm&g ...

  6. 关于python深度学习网站

      大数据文摘作品,转载要求见文末 编译团队|姚佳灵 裴迅 简介 ▼ 深度学习,是人工智能领域的一个突出的话题,被众人关注已经有相当长的一段时间了.它备受关注是因为在计算机视觉(Computer Vi ...

  7. RHEL5.6配置本地yum源

    试验环境:RedHat Enterprise Linux 5.6(虚拟机) 一.挂载镜像 配置yum源第一步需要挂载镜像,或者直接复制操作系统的光盘文件至操作系统目录中. 挂载镜像命令如下: moun ...

  8. Proactive Patching Overview

    1.Proactive Patching Overview Between Patch Set releases, Oracle's proactive patching program provid ...

  9. spring tool suite开发环境搭建

    先把是构建工具maven: maven里面有一个conf文件夹,然后里面有个setting.xml配置文件,先要把项目要的setting.xml覆盖这个原来的配置文件. 这个maven配置文件有一个作 ...

  10. Lync客户端证书安装

    安装完Lync客户端后,运行时Lync客户端时,报出如下错误: [原因解析] Lync客户端没有正确安装CA证书链. [解决办法] 第一种方法:将计算机加入域. 第二种方法:不加入域的处理方法: 1. ...