设为首页 加入收藏

TOP

关于GIT VCS的使用(公司资料)(一)
2016-04-23 17:39:05 】 浏览:909
Tags:关于 GIT VCS 使用 公司 资料

附件是git完全图解。下面是基本命令的解释,主要有:add, reset, checkout, pull, push, fetch, clone, init, tag等。

Ps:在commit时,需要注意一定要加-m参数,写上commit messages,否则会打开vim强制你写一个。

关于git flow,网上也有一些最佳实践,比如:如何正确使用Git Flow

1、Git add 详解

add将当前工作区的改动保存到暂存区。

在一次commit之前,可以进行多次add。也就是说,可以只改动一点就add,一次commit即可。

git add

pathspec可以是一个确定的文件,也可以用统配符,比如 git add *.c将add所有.c后缀的文件;

git add-AstagesAll

git add .stagesnew and modified,without deleted

git add -ustagesmodified and deleted,without new

使用实例:

在修改文件后,使用git status显示:

$ git status

On branch master

Changes not staged forcommit:(下列修改未加入暂存区,不会被提交)

(use "gitadd ..." to update what will be committed)(使用gitadd 将修改加入暂存区)

(use "gitcheckout -- ..." to discard changes in working d(使用git checkout -- 取消以文件的修改,所有修改都会被清除,只会清除工作区的文件修改,已经提交到暂存区的修改不受影响,即将工作区的相关文件用暂存区的文件替换掉。)

modified: welcome.txt

no changes added tocommit (use "git add" and/or "git commit -a")

在使用git add .后,git status显示:

$ git status

On branch master

Changes to becommitted:(这些更改需要被提交)

(use "gitreset HEAD ..." to unstage)(如 果后悔了,可以使用git reset HEAD 命令,将文件移出暂存区,恢复到工作区,下次commit时将不提交该文件。 git reset HEAD命令会将暂存区的文件恢复成HEAD所指向的状态,即恢复到版本库里保存的状态,工作区的文件不受影响)

modified: welcome.txt

beichen2012@BEICHEN2012-PC/F/leargit (master)

另:

git checkout HEAD 命令:会用版本库中的文件替换暂存区和工作区中的文件,工作区的修改会被清除,暂存区未提交的修改也会被清除。

2、git reset

git reset是重置命令,其默认值是用HEAD指向的版本库来重置暂存区,很少直接操作工作区(--hard除外),所以重置一般是用来重置暂存区的。

命令格式:git reset[ ] [ ]

a、--hard,例如:git reset --hard

替换指针指向,引用指向新的提交ID

替换暂存区,将引用指向的新的版本库文件替换到暂成存区,即暂存区文件将与新的版本库文件保持一致

替换工作区,工作区文件将同新的版本库文件保持一致

使用--hard参数,将会把引用指向新的(历史的)提交ID,并把暂存区和工作区文件同步成新的版本库文件,暂存区和工作区的所有原文件将丢失 。

b、--soft,如:git reset --soft

此命令只会把版本库的引用指向改变,但不会改变暂存区和工作区。

例如:git reset --softHEAD^,此命令使用后,工作区和暂存区保持不变,但是引用ID向前回退一次,当对更改不满意时,撤销最新的提交以便重新提交。与此功能相同的一个命令是: git commit --amend ,用于对最新提交重新提交以修补错误的提交说明或错误的提交文件。

c、--mixed,如:git reset --mixed 或git reset

此命令会改变引用的指向,并重置暂存区,不影响工作区。

git reset或 gitreset HEAD:仅用于将HEAD指向的版本库区内容重置到 暂存区,工作区不受影响,相当于将之前 git add命令stage到暂存区的修改撤出暂存区。

git reset -- filename或gitreset HEAD filename:仅将 filename文件的改动撤出暂存区(仅将filename文件从版本库中重置到暂存区),暂存区中的其它文件不变。相当于对gitadd filename的反操作。

3、git checkout

git checkout的默认值是暂存区(这点与reset命令不同),此检出命令主要用来覆盖工作区(如果不省略 参数,也会覆盖暂存区文件)

a、gitcheckout

用于切换 分支

git checkout -b

新建分支,并切换到该分支

b、gitcheckout或git checkout HEAD:

汇总显示工作区、暂存区与HEAD的差异

c、gitcheckout -- filename

用暂存区的文件来覆盖工作区的文件

git checkout -- . 或 git checkout . :用暂存区的文件覆盖所有工作区的文件,相当危险。

d、git checkout HEAD^(或是其他的commit id)

用HEAD^(或是其他的commit id)指向的版本库中的文件,替换当前工作区的文件,当前的工作区处于一个detached HEAD(游离HEAD),此命令可用于查看版本库的某一历史文件;如果修改了文件,也不会被保存,如果想要保存 ,使用:git checkout -b new_branch_name,创建基于当前游离HEAD的分支 。

4、git init,remote, clone, pull, push, fetch

a、在本地建立服务器仓库(远端仓库)

mkdir xx.git

cd xx.git

git init --bare

--bare参数表明创建一个“裸”仓库,该仓库不包含工作目录,仅包含git的一系列版本历史记录文件,也就是说不能在此目录下工作(不能使用git status查看状态等,但是可以用gitk查看历史)。目的是为了防止服务器仓库有人在操作某一分支,客户端有人向同样的分支提交而造成提交失败等一冲突问题。

b、clone命令

格式:git clone <本地目录名>

本地目录可以省略,则clone到当前目录

b.1)只clone某一分支

git clone–b xxxx.git

默认则clone所有分支,但是只显示master分支;

b.2)clone所有分支

git clone xx.git

git branch–a //显示所有的分支(包括隐藏的分支)

git checkout–b remote/origin/ //基于远程的branch分支创建本地branch分支并切换到branch分支

c、remote

为了便于管理,Git要求每个远程主机都必

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HM编码器代码阅读(21)――熵编码.. 下一篇Git 在团队中的最佳实践--如何正..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目