预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共48页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

GIT基础教程1、初识Git2、Git初始化创建版本库及第一次提交 首先建立一个新的工作目录,并在这个目录下建立版本库 #cd/path/to/my/workspace #mkdirdemo #cddemo #gitinit InitializedemptyGitrepositoryin/path/to/../demo/.git 从上面初始化的输出信息来看,工作区创建了隐藏目录.git #ls–aF ./../.git/ 这个隐藏的.git目录就是Git版本库 下面向工作区添加文件 #echo“Hello.”>welcome.txt 将这个文件添加到版本库 #gitaddwelcome.txt 这里还没有完,需要提交一次才能进入版本库 #gitcommit–m“initialized” 提交必须有提交说明,-m参数可以直接给出提交说明 为什么会有.git目录 在非工作区执行git命令会因为找不到.git目录而报错 #cd/path/to/my/workspace #gitstatus 在工作区建立a/b/c目录并进入 #mkdir–pa/b/c #cda/b/c 显示版本库目录 #gitrev-parse--git-dir 显示工作区根目录 #gitrev-parse--show-toplevel 显示工作区间根目录的相对目录 #gitrev-parse--show-prefix 显示当前目录到工作区的深度 #gitrev-parse--show-cdup gitconfig命令的参数区别 执行下面命令,将打开.git/config文件进行编辑 #gitconfig-e 执行下面命令,将打开/home/git/.gitconfig文件进行编辑 #gitconfig-e--global 执行下面命令,将打开/etc/gitconfig系统级配置文件进行编辑 #gitconfig-e--system 以上三个配置文件分别是Git版本库级别的配置文件、全局配置文件(用户主目录下)和系统级配置文件(/etc目录下)。其优先级别依次降低。 谁在提交? 在使用Git之前我们设置了全局变量user.name,如果不设置会出现什么后果呢 执行下面命令,删除全局变量中的user.name和user.email #gitconfig--unset--globaluser.name #gitconfig--unset--globaluser.email 这样一来,关于用户的设置就被清空了,尝试一下提交 #gitcommit--allow-empty-m“whodoescommit?” 由于没有设置用户,会给出一段警告。查看下提交记录 #gitlog 可以看出Git对于用户姓名进行了大胆猜测,猜测用户为当前终端登录用户。 为了保证提交者信息的准确性,需要对提交恢复用户设置 #gitconfig--globaluser.name“pang” #gitconfig--globaluser.emailpang@126.com #gitcommit--amend--allow-empty--reset-author 其中--amend参数表示是修补提交,对上一次提交进行修补,而不会产生新的提交。 小结3、Git暂存区没有差别,难道是被提交了?在看一下当前状态: #gitstatus-s Mwelcome.txt 两次状态输出有细微的差别,虽然都是M(modified)标示,但是位置不一样。gitadd执行前,M位于第二列,执行后位于第一列。 第一列表示版本库与暂存区的比较,第二列表示工作区与暂存区的区别。通过下面命令进一步体会: #echo“Byebye.”>>welcome.txt #gitstatus-s MMwelcome.txt #gitcommit-m“whichwersioncheckedin?” #gitstatus-s Mwelcome.txt 保存下我们的工作,后面的进度恢复会用到。 #gitstash 理解Git暂存区图中左侧是工作区,右侧是版本库。版本库包括暂存区,master分支,对象库等。 HEAD实际上是指向分支的一个游标。 图中objects标示的区域是Git的对象库。 当对工作区的修改的文件执行gitadd命令时,暂存区的目录会被更新,同时工作区的文件会被写入到对象库中。 当执行提交(gitcommit)时,master的目录树会根据暂存区做出相应的更新。 当执行gitresetHEAD命令时,暂存区的目录树会被master分支的目录树所替换。 当执行gitcheckout.命令时,会用暂存区的文件置换工作区的文件。(危险