git基本命令

Git:
什么是“版本控制”?我为什么要关心它呢? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
在本书所展示的例子中,我们对保存着软件源代码的文件作版本控制,但实际上,你可以对任何类型的文件进行版本控制。
你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后
是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统通常还意味着,
就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。

分布式版本控制系统:
于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial、Bazaar
以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,
事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。更进一步,许多这类系统
都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定
不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

三种状态
好,请注意。 如果你希望后面的学习更顺利,记住下面这些关于 Git 的概念。 Git 有三种状态,你的文件可能处于其中之一:
已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的保存在本地数据库中。 已修改
表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。
Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,
拷贝的就是这里的数据。

工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作`‘索引’',不过一般说法还是叫暂存区域。

基本的 Git 工作流程如下:
1.在工作目录中修改文件。
2.暂存文件,将文件的快照放入暂存区域。
3.提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
如果 Git 目录中保存着的特定版本文件,就属于已提交状态。 如果作了修改并已放入暂存区域,就属于已暂存状态。 如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。 在Git 基础一章,你会进一步了解这些状态的细节,并学会如何根据文件状态实施后续操作,以及怎样跳过暂存直接提交。

git基本命令

查看本地git用户名如下

git --version   //查看git的版本信息
git config --global user.name   //获取当前登录的用户
git config --global user.email  //获取当前登录用户的邮箱

如果没有获取到用户配置,则只能拉取代码,不能修改 要是使用git,你要告诉git是谁在使用,即告诉git你是谁,命令如下

git config --global user.name 'userName'    //设置git账户,userName为你本地git的一个名字,名字可以随便取
git config --global user.email 'email'

创建文件夹和切换到文件夹如下

mkdir dirName 	//创建文件夹”dirName”
cd dirName		//切换到” dirName” 下

git clone远程指定并设置深度分支:

git clone --depth=1 -b branch_name git_repo_url //--depth=1:表示指定深度为当前branch一个commit. branch_name:指定的分支名和路径. 远程的URL

git 在当前branch添加远程分支并fetch

git remote set-branches origin branch_name //set-branches 添加branch指令, branch_name 远程branch名字和路径
git fetch --depth 100 origin branch_name //fetch远程branch到本地
git checkout -b load_new_branch_name origin/branch_name //基于origin的branch_name在本地创建load_new_branch_name 

git discard 单个文件

git restore path/fime_name //fime_name:需要discard的文件名
or
git checkout -- path/fime_name //-- 前后有空格, fime_name:需要discard的文件名

git commit -m 提交换行

git commit -m "第一行comment //输入第一行文字后enter
第二行 comment //输入第二行的文字后enter
第三行 comment" //输入第三行的文件后补全双引号结束 commit comment 输入

git 回退commit并保留更改

git reset --soft commitId //输入要回退到的commitId号.更改的文件会保留下来,只对commit号的回退 

git最常用的命令如下:

git init 			//在当前文件夹下,初始化一个仓库,同时生成.git文件夹
touch filename 	//创建文件
ls –al			//查看文件
ls -l

cat filename 		//查看文件
git status 		//显示目录的状态,有没有添加或者修改文件
git add filename 	//将文件增加到缓存出
git add –A		//全部文件添加到缓存处
git commit –m “备注信息”	//增加到版本库中

从stage(index,暂存区) 里面删除文件,当你提交(commit)之后文件就会删除了。如下

git rm -- cached  filename

回退暂存区里的文件(还原为HEAD commit里面该文件的状态),会撤销从上一次提交(commit)之后的一些操作,如下

git reset HEAD filename 	

Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如’git checkout new_branch’就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如’git checkout app/model/user.rb’就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚(用暂存区中的内容或者版本库中的内容覆盖掉工作区),命令如下

git checkout new_branch	//切换到new_branch分支上
git checkout filename	//回滚到上一个版本

查看版本命令如下

git log 				//查看版本
git reflog			//查看所有commit版本
git log --oneline

将当前的工作目录完全回滚到指定的版本号,假设如下图,我们有A-D提交的版本,其中C的版本号是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,执行了’git reset –hard bc30124e8c32ee6e4f58f63015512f1c5ba5f7a7 '那么结果就只剩下了A-C三个提交的版本,命令如下

git reset 	–hard   版本号	

标签管理,命令如下

git tag 						//查看所有标签 name是标签的名字,如:V1.0.1
git tag name					//创建标签,为当前版本打标签
git tag –a name –m “comment”	//指定提交信息, 指定标签说明
git tag –d name				//删除标签
git push origin name			//标签发布
git tag name 该版本ID 		//为历史版本打标签:
git show name					//查看某一标签

分支管理branch,命令如下

git branch name 			//新建分支,name分支的名字
git branch					//查看所有分支
git checkout name 		//切换到name分支
git branch –d name		//删除分支
git merge name			//合并分支
git commit –a –m “comment”	//在分支上提交新的版本如果在合并分支是有冲突(在两个分支上都修改了同一个文件file),
							//则使用git status 或者git diff查看两个分支上有什么区别,在其中一个分支上修改该文件file,然后 git add file 和git commit -m “comment”,就ok了。

与撤销有关,命令如下

git checkout --filename		//撤销工作区的修改
git reset HEAD filename		//撤销暂存区的修改
git reset --hard 该版本ID 	//回退到历史版本 
git reset --hard HEAD^		//回退到上个版本(上上版本是HEAD^^,也可用HEAD~2表示)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值