git全局配置及文件改变状态详解

简介:

本文git为1.9.6版本:


一、git全局配置

二、git初始化本地仓库

三、git文件状态详解

四、git文件撤销、恢复操作


git提交流程层次如下:

wKioL1QZmZLSIoqTAADqrDRk-Xk515.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:\Users\leo\.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

wKioL1QZnOnACof9AACZsKXdmaQ003.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

wKioL1QZorOR6ByQAAEIxOsfZpE246.jpg

1
$ git status -s

wKioL1Qaw9fgQYswAACCrMV_pNQ840.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

wKiom1QayN2j1SdNAAEsVHZICPU028.jpg

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

wKioL1Qaye2i-LqkAACvhbbQbng968.jpg

恢复到已经追踪的状态,进行提交测试;

1
$ git commit -m  "first commit"      #-m 表示提交此代码时进行描述;我们这里描述为“first commit”

wKioL1QaypjSCg2ZAAHNRhyk3D0616.jpg

可以看到wording directory clean 已经将此两个文件提交到repository;(从staging area区域),并查看文件状态时,不在输出任何东西

3.2 修改本地code,再查看文件状态

1
echo  'puts "hello world!" ' >> hello.rb
1
$ git status -s


wKioL1Qay8aDvNfpAAGFhOaNxr8545.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

wKiom1Qa0_fAt58sAAJaCVn8ZMo997.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                               #再次查看该文件的状态,无差异,并且代码恢复到了之前的代码

wKiom1Qa1diDPH6LAAEaK8irxy4604.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                      # 每一步都进行了文件状态差异的核对;

wKiom1Qa1z7R340dAAMUN3vNTWM915.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

wKiom1Qa5W7yiiGfAAK9_1gP39o830.jpg

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



本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1556924
相关文章
|
2月前
|
存储 前端开发 开发工具
Git Hooks实战:提交前检查修改文件中是否包含调试代码
Git Hooks实战:提交前检查修改文件中是否包含调试代码
47 0
|
3月前
|
存储 开发工具 git
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
68 0
|
2月前
|
安全 Shell 网络安全
【Git】TortoiseGit(小乌龟)配置SSH和使用
【Git】TortoiseGit(小乌龟)配置SSH和使用
148 0
|
1月前
|
开发工具 数据库 数据安全/隐私保护
【Git】—— git的配置
【Git】—— git的配置
【Git】—— git的配置
|
2月前
|
存储 开发工具 git
Git 教程:解密 .gitignore 文件、合并分支、解决冲突、及 Git 帮助
如果你忘记了命令或命令的选项,你可以使用 Git 帮助。 在命令行中,有几种不同的使用帮助命令的方式: git command -help - 查看特定命令的所有可用选项 git help --all - 查看所有可能的命令 让我们看看不同的命令。
213 3
|
2月前
|
Shell 开发工具 git
查看 Git 中某个文件的提交历史记录(log)
要查看 Git 中某个文件的提交历史记录(log),你可以使用 `git log` 命令并指定文件名作为参数。以下是一些常用的方法来查看某个文件的 Git log: 1. **查看文件的完整提交历史**: ```bash git log -- <filename> ``` 这里的 `--` 是可选的,用于分隔命令行选项和文件名。 2. **查看文件的简要提交历史**: ```bash git log --oneline -- <filename> ``` --oneline` 选项会以一行显示每个提交,使输出更简洁。 3. **查看文件的提交历史并显示每次提交的差异**: ```
|
2月前
|
网络安全 开发工具 数据安全/隐私保护
[Git]关联远程库的两种方法及配置
本篇文章对gitee公钥配置、同电脑连接多个gitee账号公钥配置等方法进行阐述, 如果文中阐述不全或不对的,多多交流。
71 0
[Git]关联远程库的两种方法及配置
|
3月前
|
SQL 开发工具 git
git 修改文件后revert
如果你想撤销对一个文件的修改,可以使用`git checkout`命令。 假设你想撤销名为`file.txt`的文件的修改,你可以执行以下命令: ``` git checkout -- file.txt ``` 这将把`file.txt`文件恢复到最后一次提交的状态。如果你想撤销所有修改,可以使用`git checkout -- .`命令。 如果你已经提交了修改,并且想要撤销提交,可以使用`git revert`命令。这将创建一个新的提交,撤销之前的提交。假设你想撤销最后一次提交,可以执行以下命令: ```sql git revert HEAD ``` 这将创建一个新的提交,撤销最
|
3月前
|
存储 网络安全 数据处理
git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理
git远程操作,推送【push】,拉取【pull】,忽略特殊文件,配置别名,标签管理

相关实验场景

更多