Git即简单又全面教程(一)

一:Git是什么?
Git是目前世界上最先进的分布式版本控制系统。
工作原理 / 流程:

二:SVN与Git的最主要的区别?

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

 

三、在windows上如何安装Git?

Git-2.17.0-64-bit.exe是 windows版的Git,如下:

安装步骤:

安装成功后,进入目标目录,然后鼠标右击,就可以看到Git相关菜单

本地库初始化

注意:

.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。

git的命令和unix的名称相似

设置签名

如果想要将本地的项目提交的远程仓库的话,必须要设置签名。签名的作用就是用来标识用户,以区分不同的开发人员。

设置签名有两种方式,一种是为单个仓库单独设置,这种方式只针对单个仓库有效;另一种是全局配置,采用这种方式配置后,所有仓库都有效。如果对两种方式都进行了配置,那么会优先使用单个仓库配置方式的配置信息。配置格式如下:
单个仓库


git config user.name 用户名
git config user.email 邮箱

全局配置


git config --global user.name 用户名
git config --global user.email 邮箱

或者

该种方式配置信息会保存在系统盘的系统用户目录下的.gitconfig文件中,保存格式同上面一样。

一般情况下都是配置成全局有效即可,简单,不用为每个仓库都设置签名。当需要为某个仓库配置不同的信息时,只需要单独再为这个仓库按照方式一配置一下即可。

 

四、基本操作

状态查看

git status 查看工作区、暂存区状态

添加
git add [file name] 将工作区的“新建/修改”添加到暂存区

提交
git commit -m "注释" [file name] 将暂存区的内容提交到本地库

 

查看历史记录

git reflog 

HEAD@{移动到当前版本需要多少步}

移动到哪个版本

git reset --hard [[局部索引值]

基于索引值操作[推荐]

 git reset --hard [局部索引值]
 git reset --hard a6ace91
使用^符号:只能后退
 git reset --hard HEAD^ ;注:一个^表示后退一步,n 个表示后退 n 步
使用~符号:只能后退
 git reset --hard HEAD~n
 注:表示后退 n 步

移动到第一个版本

reset 命令的三个参数对比

--soft 参数

仅仅在本地库移动 HEAD 指针

 

--mixed 参数

在本地库移动 HEAD 指针,重置暂存区

 

--hard 参数

在本地库移动 HEAD 指针,重置暂存区、工作区

 

删除文件并找回

前提:删除前,文件存在时的状态提交到了本地库。

操作:git reset --hard [指针位置]

 删除操作已经提交到本地库:指针位置指向历史记录

 删除操作尚未提交到本地库:指针位置使用 HEAD

撤销文件

一:撤销修改:

命令 git checkout --readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销

命令git reset --hard [指针位置] 可以撤销,暂存区和本地库的文件


王东@DESKTOP-46G41C7 MINGW64 /e/gittest
$ git init   #git初始化
Initialized empty Git repository in E:/gittest/.git/

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ vim readme.txt #创建一个readme.txt文本,并添加内容为aaaaaa

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ cat readme.txt #查看readme.txt文本内容
aaaaaaaa

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git status     #查看git状态
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        readme.txt

nothing added to commit but untracked files present (use "git add" to track)

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git add readme.txt   #将readme.txt文本添加到暂存区
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git status        #查看git状态
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   readme.txt


王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git commit -m "create new file,content is aaaaa" readme.txt  #提交readme.txt文件到本地库
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.
[master (root-commit) 5cc2be2] create new file,content is aaaaa
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git status   #查看git状态
On branch master
nothing to commit, working tree clean

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ vim readme.txt  #添加bbbbbb,cccccc内容到readme.txt文件

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ cat readme.txt   #查看readme.txt文件内容
aaaaaaaa
bbbbbbbb
cccccccc

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git status  #查看git状态
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   readme.txt

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

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git commit -m "content add bbbbbbb,cccccccc" readme.txt  #将readme.txt文件提交到本地库

warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.
[master 6499fbb] content add bbbbbbb,cccccccc
 1 file changed, 2 insertions(+)

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git status      #git状态
On branch master
nothing to commit, working tree clean

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ vim readme.txt   #添加ddddd字符串到readme.txt文件

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ cat readme.txt
aaaaaaaa
bbbbbbbb
cccccccc
dddddddd

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git status   #查看git状态
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   readme.txt

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

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git checkout -- readme.txt  #撤销工作区readme.txt修改的内容,暂存区和本地库撤销不了

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ cat readme.txt   #发现工作区添加的ddddddd内容以及被删除
aaaaaaaa
bbbbbbbb
cccccccc

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ vim readme.txt   #添加eeeee,fffff内容到readme.txt文件

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ cat readme.txt   #查看readme.txt文件内容
aaaaaaaa
bbbbbbbb
cccccccc
eeeeeeee
ffffffff

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git status    #git状态
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   readme.txt

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

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git add readme.txt  #将readme.txt文件添加到暂存区

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git commit -m "content add eeeeee,ffffff" readme.txt  #将readme.txt文件添加到本地库
[master 240c7f4] content add eeeeee,ffffff
 1 file changed, 2 insertions(+)

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git checkout -- readme.txt  #撤销readme.txt文件的操作

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ cat readme.txt     #查看readme.txt文件内容,发现内容没有被撤销,证明checkout命令,无法撤销本地库的文件
aaaaaaaa
bbbbbbbb
cccccccc
eeeeeeee
ffffffff

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ vim readme.txt #将readme.txt文件添加gggggg字符串

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ cat readme.txt
aaaaaaaa
bbbbbbbb
cccccccc
eeeeeeee
ffffffff
gggggggg

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   readme.txt

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

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git add readme.txt  #将readme.txt文件添加到暂存区

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git checkout -- readme.txt #撤销暂存区readme.txt文件内容

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ cat readme.txt #查看readme.txt文件内容,发现内容没有被撤销,证明checkout命令没有办法撤销暂存区文件内容
aaaaaaaa
bbbbbbbb
cccccccc
eeeeeeee
ffffffff
gggggggg


#####本地库文件回复########
王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git reflog  #查看本地库历史文件提交日志
240c7f4 (HEAD -> master) HEAD@{0}: commit: content add eeeeee,ffffff
6499fbb HEAD@{1}: commit: content add bbbbbbb,cccccccc
5cc2be2 HEAD@{2}: commit (initial): create new file,content is aaaaa


王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ git reset --hard 240c7f4 #利用reset --hard命令撤销本地库文件内容
HEAD is now at 240c7f4 content add eeeeee,ffffff

王东@DESKTOP-46G41C7 MINGW64 /e/gittest (master)
$ cat readme.txt #发现ggggg字符串被撤销
aaaaaaaa
bbbbbbbb
cccccccc
eeeeeeee
ffffffff

比较文件差异

操作: git diff [文件名]

 将工作区中的文件和暂存区进行比较

  git diff [本地库中历史版本] [文件名]

 将工作区中的文件和本地库历史记录比较

 不带文件名比较多个文件

删除

一般情况下,可以直接在文件目录中把文件删了,或者使用如上rm命令:rm aaa.txt ,如果我想彻底从版本库中删掉了此文件的话,可以再执行commit命令 提交掉,请看如下操作:

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一篇git使用教程Git使用教程 Git是一种分布式版本控制系统,用以管理计算机源代码的更改。以下是几个简单Git命令,它们将帮助你开始使用Git: ## 1. 安装Git 如果你还没有安装Git,请首先安装GitGit可以从其官方网站上下载。 ## 2. 设置用户名和邮箱 每次你提交代码时,Git都会使用你提供的用户名和邮箱地址。 ``` git config --global user.name "Your Name" git config --global user.email "youremail@yourdomain.com" ``` ## 3. 创建一个新的本地存储库 创建一个新本地存储库的命令是: ``` git init ``` ## 4. 向本地存储库中添加文件 要向本地存储库中添加文件,使用以下命令: ``` git add filename ``` ## 5. 提交更改 使用以下命令将文件提交到本地存储库: ``` git commit -m "提交描述信息" ``` ## 6. 查看提交历史记录 以列出先前提交到本地存储库的所有更改: ``` git log ``` ## 7. 创建一个分支 要在项目中创建一个新分支,请使用以下命令: ``` git branch new_branch_name ``` ## 8. 切换到一个分支 切换到一个分支的命令是: ``` git checkout branch_name ``` ## 9. 合并分支 要将分支合并到当前分支,请使用以下命令: ``` git merge branch_name ``` ## 10. 将本地分支推送到Git服务器 使用以下命令将本地分支推送到Git服务器: ``` git push origin local_branch_name:remote_branch_name ``` 这些是Git的基础知识和命令。掌握这些命令可以让你更好地了解Git,从而更好地管理你的代码。更多关于Git的资料可以在Git官方网站上找到。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值