设为首页 收藏本站
查看: 1524|回复: 0

[经验分享] git全局配置及文件改变状态详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-23 10:20:48 | 显示全部楼层 |阅读模式
本文git为1.9.6版本:

一、git全局配置
二、git初始化本地仓库
三、git文件状态详解
四、git文件撤销、恢复操作


git提交流程层次如下:
wKioL1QZnOnACof9AACZsKXdmaQ003.jpg

git repository 视为线上code集中管理服务器;也就是我们的code最后的位置;
git staging area 视为我们本地的code集中管理服务器,可认为code的中间的暂留区(以相对repository来说);

git working directory 视为我们本地编辑的code,也就是代码编辑处;
1:全局配置
1
2
3
4
5
leo@LEO-PC /d/User/leo/Desktop/git (master)
$ git config --global user.name "lansgg"

leo@LEO-PC /d/User/leo/Desktop/git (master)
$ git config --global user.email "coffee_lanshan@sina.com"




这里配置 --global选项其实就是在修改家目录下的.getconfig文件
如我的:
1
C:Usersleo.getconfig



内容:
1
2
3
4
5
6
7
8
[user]
    name = lansgg
    email = coffee_lanshan@sina.com
[color]
    ui = true
[core]
    autocrlf = true
    excludesfile = C:\Users\leo\Documents\gitignore_global.txt



当我们修改此文件,比如将name=test (内容已经修改)

1
$ git config --get user.name



wKioL1QZorOR6ByQAAEIxOsfZpE246.jpg
这里的用户名及邮件地址都是在提交代码的时候进行标识的,显示提交人的信息;
2:初始化本地git仓库
本地新建一个目录;执行git init ;
1
2
$ mkdir git
$ git init



执行后的变化就是多了一个.git目录;
1
2
3
4
5
6
7
leo@LEO-PC /d/User/leo/Desktop/git (master)
$ ls -a .git
.   COMMIT_EDITMSG  config       hooks  info  objects
..  HEAD            description  index  logs  refs

leo@LEO-PC /d/User/leo/Desktop/git (master)
$



.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。

index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引。

3、git文件状态详解
3.1、现在新建我们的code;
1
2
3
4
5
6
leo@LEO-PC /d/User/leo/Desktop/git (master)
$ touch README.txt

leo@LEO-PC /d/User/leo/Desktop/git (master)
$ cat hello.rb
puts "hello world!"



我们要将he.rb 、README 提交到本地git repository;
3.2、首先查看文件的状态
1
$ git status



wKioL1Qaw9fgQYswAACCrMV_pNQ840.jpg


1
$ git status -s



wKiom1QayN2j1SdNAAEsVHZICPU028.jpg

根据输出信息可以看出,README.txt hello.rb 两个文件处于master branch(主分支),这两个文件处于未追踪文件,也就当我们执行git commit(用于提交到图中的仓库)命令的时候不会将他们提交到git repository;
上图 -s 表示简要信息;( ?? )两个问号也有很重要的意义;
第一个 ? 主要表示staging area 和 repository 两个区域间的文件变化,一般会有两个字母来表示(A、M <绿色>);A  表示此文件已经是在追踪文件,M 表示此文件已经在staging area区域修改,还没有提交到repository。
第二个 ? 主要表示working directory 和 staging area 两个区域间的文件变化,M <红色> 表示此文件已经working directory区域修改,还没有提交到staging area

下面开始演示:git add 表示将文件进行追踪;
1
2
$ git add README.txt
$ git add hello.rb



再次查看文件状态
1
$ git status -s



wKioL1Qaye2i-LqkAACvhbbQbng968.jpg

可以看到两个文件已经处于 A 状态 (追踪)现在这两个文件处于staging area区域; changes to be committed 可以进行提交了;输出信息提示,可以使用git reset HEAD  将文件恢复于未追踪状态;
wKioL1QaypjSCg2ZAAHNRhyk3D0616.jpg

恢复到已经追踪的状态,进行提交测试;
1
$ git commit -m "first commit"     #-m 表示提交此代码时进行描述;我们这里描述为“first commit”



wKioL1Qay8aDvNfpAAGFhOaNxr8545.jpg

可以看到wording directory clean 已经将此两个文件提交到repository;(从staging area区域),并查看文件状态时,不在输出任何东西
3.2 修改本地code,再查看文件状态
1
$ echo 'puts "hello world!" '>> hello.rb



1
$ git status -s




wKiom1Qa0_fAt58sAAJaCVn8ZMo997.jpg

第二个 ? 的地方出现了M <红色> 表示此文件已经在working directory区域修改;输出信息提示,hello.rb文件已经modified ; 命令  git add && git checkout && git commit -a  (图示都有) 下面讲;
如何将此文件提交到repository
1
2
$ git add hello.rb
$ git commit -m "second commit" hello.rb



wKiom1Qa1diDPH6LAAEaK8irxy4604.jpg

或者使用:
1
$ git commit -a -m "second commit"



此命令将跳过git add 这一步~
4、撤销、恢复
4.1、修改本地working directory 的code ;然后撤销修改,也就说从staging area区域取出此code覆盖当前working directory的code;
测试如下:
1
2
3
4
$ echo 'puts "hello world!"' >> hello.rb     #修改本地code
$ git status -s                              #查看文件的状态,有差异
$ git checkout hello.rb                      #从staging area区域取出此code
$ git status -s                              #再次查看该文件的状态,无差异,并且代码恢复到了之前的代码



wKiom1Qa1z7R340dAAMUN3vNTWM915.jpg

4.2、修改本地working directory的code,并且进行追踪(add 到 staging area区域);然后我们想撤销本地code的修改,那我们可以从repository仓库拉出此code覆盖到staging area,然后再从staging area区域取出覆盖到working directory区域;测试如下:
1
2
3
4
5
6
7
8
$ echo 'puts "hello world!"' >> hello.rb
$ git status -s
$ git add hello.rb
$ git status -s
$ git reset hello.rb
$ git status -s
$ git checkout hello.rb
$ git status -s                     # 每一步都进行了文件状态差异的核对;



wKiom1Qa5W7yiiGfAAK9_1gP39o830.jpg
我们也可以不用这么麻烦,可以直接从 repository 区域拉取出来直接覆盖到 working directory 区域:
1
2
3
4
5
6
$ echo 'puts "hello world!"' >> hello.rb
$ git status -s
$ git add hello.rb
$ git status -s
$ git checkout HEAD hello.rb
$ git status -s





可以看到已经从git repository 拉取此文件并进行了覆盖~



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25206-1-1.html 上篇帖子: apache与nginx优雅屏蔽svn与git目录 下篇帖子: CentOS安装Git(git安装命令全集整理版)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表