GIT的基本应用

GIT 涉及到的几个工作区

       工作区、暂存区、版本库

 

入门:

一、           gitsvn的主要区别

  git是一个分布式的版本控制工具,而svn是一个集中式版本控制工具。

二、           git工具安装

  首先下载git:https://git-scm.com/download/

  安装完成后,右键菜单和开始菜单中会出现git相关选项。

   

 

三、           git使用

1、 进入git命令行

  进入待创建版本库的目录后,在右键菜单中选择“Git Bash”,弹出Git命令窗口(也可以在任意路径打开git命令窗口,使用cd命令进入版本库目录):

   

 

2、 初始化用户名和邮箱

  “git config  --global user.name “用户名” ”命令配置用户名。

  “git config  --global user.email “邮箱地址” ”命令配置邮箱。

   

 

3、 初始化版本库

  输入“git init”将当前文件夹初始化为版本库目录,

   

 

  这时可以看到文件夹中有一个名为“.git”的文件夹,千万不要删除这个文件夹。

   

 

4、 提交文件到缓存区

  添加文件HelloGit.java到该目录下

   

 

  然后使用“git add HelloGit.java”命令,将该文件添加到版本库缓存区。

   

   使用“git commit  -m “” ”命令提交缓存区的内容。-m后的引号内添加文字说明。

  

 

     

5、 对比修改内容

  此时如果对HelloGit.java内容进行更改

  

 

  使用“git diff 文件名”可以看到更改的内容:

  

  也可以使用git status查看状态

   

  修改文件后,需要再次使用“git add 文件名”将文件添加到缓存区,添加后重新查看状态

   

  使用commit命令提交缓存区更改内容。

   

6、 查看历史版本

  使用git log命令可以查看历史版本列表

  

 

7、 回退历史版本

  使用git reflog命令可查看版本号

  

  使用 “git reset --hard 版本号”来回退至该版本。

  

 

8、 删除文件

  在工作目录创建文件,添加到缓存区并提交。

  

   使用命令“rm 文件名”删除该文件,并查看状态。

  

  注:删除后需要使用commit命令提交。

9、 撤销修改

  对HelloGit.java文件内容进行修改,查看状态或查看修改内容,

  

  使用“cat 文件名”命令查看文件内容

  

  使用“git checkout -- 文件名”回复至版本库缓存区当前内容,再次查看文件内容,可以发现修改的内容已经被撤销。

  

  注:撤销只能撤销更改后未提交到缓存区的内容。如果已经提交到缓存区或者commit,可以使用版本回复功能。

 

一、Git这个版本控制系统非常的强大,这里介绍git的基本用法:

  git init                                     -- 初始化(进入项目的目录执行)

  git  config  --list                      -- 查看git 的配置信息

git config  --global user.name “用户名” ”命令配置用户名。

git config  --global user.email “邮箱地址” ”命令配置邮箱。

git status                                         查看状态                        

git commit  -m  “提交的注释”                            提交, 将暂存区的所有文件提交到本地仓库 

git commit   a.txt                               添加,将文件直接由工作区提交到版本仓库,不经过 暂存区

git log                                               查看提交日志的历史

git log -1                                          查看最近一次提交的日志

git log -2                                          最近两次

git log --oneline                               以一行显示

git push   origin  master                   将提交到本地仓库的代码推送到远程仓库

git pull     origin  master                   从远程仓库跟新代码到本地

git clone   url                                   从远处仓库克隆一个到本地

git diff                                              比较工作区与缓存区之间的差别(含有文件内容详细的差异)

git diff     --stat                                比较工作区与缓存区之间的差别(列出有差异的文件)

git diff --cached   或者     git diff --staged                        比较缓存区与版本之间的差别

git diff HEAD                                    比较工作区与本地仓库之间区别

git   checkout                            取出历史版本

git   checkout     file                        单独检出某个文件  checkout 的是暂存区的文件(若没有提交到暂存区,暂存区的文件和本地版本仓库的一致)

git   reset --hard    HEAD                    恢复到最新的状态

 

二、实际应用的一些比较操作: 

   1.比较工作空间与暂存区的差异

    git  diff 

   2.比较工作空间与本地仓库的差异

     git diff HEAD

  3.比较暂存区与本地仓库的差异

    git  diff --staged  /  git  diff --cached 

远程仓库地址设置相关: 

  ①.增加远程仓库

  git remote add <name> <url>

  ② 删除远程仓库

 git remote remove <name>

   ③更新远程仓库

git remote set-url origin <newurl>

 

 

三、常见的一些回退操作

 1.添加到暂存区的文件想退回到工作区

git reset HEAD  fileNAme

 2.添加到暂存区的所有文件想退回到工作区

git reset HEAD  

 3.将已经提交的代码回退 revert

    ①  git log   --找到提交的commitID

     ②git  revert  commitID    --将这个批次提交的所有的文件执行回退,即对应提交的逆操作,增加的删除,删除的增加,会产生一条提交的记录恢复上次的提交

 

回退相关的提交操作包含计较的记录(实质上是指针指向了前一个版本):

 

Git log和reflog

1.log

   log命令可以显示所有提交过的版本信息。显示信息如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

Administrator@USER-20171026MG MINGW64 ~/Desktop/lyf (master)

$ git log

commit e1bdff6e4830e09383078c860f45334d03771b03 (HEAD -> master)

Author: lyf1995 <506833107@qq.com>

Date:   Sat Dec 16 11:47:59 2017 +0800

 

    第二次提交

 

commit 62e67397d7891610ed7db7edab0e10619d9d8f0e

Author: lyf1995 <506833107@qq.com>

Date:   Sat Dec 16 11:06:10 2017 +0800

 

    my第一次提交

  如果觉得信息显示太繁琐  可以加上参数  --pretty=oneline[只会留下commit  id (版本号 (用SHA1字串表示))和 提交版本时的描述信息] 显示效果如下:

1

2

3

4

Administrator@USER-20171026MG MINGW64 ~/Desktop/lyf (master)

$ git log --pretty=oneline

e1bdff6e4830e09383078c860f45334d03771b03 (HEAD -> master) 第二次提交

62e67397d7891610ed7db7edab0e10619d9d8f0e my第一次提交

2.reflog

  如果在回退以后又想再次回到之前的版本,git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录

1

2

3

4

5

6

7

8

9

10

Administrator@USER-20171026MG MINGW64 ~/Desktop/lyf (master)

$ git reflog

e1bdff6 (HEAD -> master) HEAD@{0}: commit: 第二次提交

62e6739 HEAD@{1}: reset: moving to HEAD^

8113f0d HEAD@{2}: reset: moving to HEAD^

dc6bb4e HEAD@{3}: reset: moving to dc6bb4e

8113f0d HEAD@{4}: reset: moving to HEAD^

dc6bb4e HEAD@{5}: commit: my.txt增加44444内容

8113f0d HEAD@{6}: commit: 文件增加33333内容

62e6739 HEAD@{7}: commit (initial): my第一次提交

 

   3.

            ① 通过执行  git  reflog  找到需要恢复的版本号 

            ② 通过 执行 git  reset --hard   commitid   完成恢复操作

    场景:

  使用git reflog命令可查看版本号

  

  使用 “git reset --hard 版本号”来回退至该版本。

  

 

 

三、Git忽略规则和.gitignore规则不生效的解决办法

  Git忽略规则:

在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如果没有这个文件,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:

# 此为注释 – 将被 Git 忽略

*.sample    # 忽略所有 .sample 结尾的文件
!lib.sample    # 但 lib.sample 除外
/TODO  # 只忽略根目录下的TODO目录,不作用于子目录下的TODO
build/     # 忽略所有build目录下的文件 包括子目录下的build, 例如 /build  /lib/build
doc/*.txt   # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/**/*.pdf  # 忽略doc下以及子目录下的.pdf
*.a  # 所有 .a 后缀的文件都忽略
!lib.a  # 不忽略lib.a, 尽管上面忽略了所有的 .a 文件

 

.gitignore规则不生效的解决办法

把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

 

 

四、GIT 删除本地仓库文件的操作方式

具体操作
拉取远程的Repo到本地(如果已经在本地,可以略过) 
$ git clone xxxxxx
在本地仓库删除文件 
$ git rm 我的文件
在本地仓库删除文件夹 
$ git rm -r 我的文件夹/
此处-r表示递归所有子目录,如果你要删除的,是空的文件夹,此处可以不用带上-r。
提交代码 
$ git commit -m"我的修改"
推送到远程仓库(比如GitHub) 
$ git push origin xxxxxx
 

 

0 基础

    我们知道Git有三大区(工作区、暂存区、版本库)以及几个状态(untracked、unstaged、uncommited),下面只是简述下Git的大概工作流程,详细的可以参见本博客的其他有关Git的文章【链接】。 

  (1)打开你的项目文件夹,除了隐藏的.git文件夹,其他项目文件位于的地方便是工作区,工作区的文件需要添加到Git的暂存区(git add),随后再提交到Git的版本库(git commit)。

  (2)首次新建的文件都是untracked状态(未跟踪),此时需要git add到暂存区,Git便会在暂存区中生成一个该文件的索引,文件此时处于uncommited状态,需要git commit生成版本库。添加到了版本库之后,再对文件进行修改,那么文件的状态会变为unstaged状态。

    简单的认识了Git的工作流程,接下来便可以看看如何删除错误添加到暂存区或版本库里的文件了!

 

1 删除错误添加到暂存区的文件

    有时你在工作区新建了文件TestFile,并且已经将它添加到了暂存区,git会告知,现有有一个文件未提交到版本库,如下图:

 

 

 

1.1 仅仅删除暂存区里的文件    

    此时你想撤销错误添加到暂存区里的文件,可以输入以下命令:

  1. git rm --cache 文件名

     

    

    上面的命令仅仅删除暂存区的文件而已,不会影响工作区的文件,如上图,TestFile.txt仍然存在,此时输入下面命令,git会告知有一个未跟踪的文件TestFile.txt。

  1. git status

     

 

1.2 删除暂存区和工作区的文件

  1. git rm -f 文件名

     

    工作区的文件也被删除了。

    

 

 

2 删除错误提交的commit

    有时,不仅添加到了暂存区,而且commit到了版本库,这个时候就不能使用git rm了,需要使用git reset命令。

    错误提交到了版本库,此时无论工作区、暂存区,还是版本库,这三者的内容都是一样的,所以在这种情况下,只是删除了工作区和暂存区的文件,下一次用该版本库回滚那个误添加的文件还会重新生成。

    这个时候,我们必须撤销版本库的修改才能解决问题!

    git reset有三个选项,--hard、--mixed、--soft。

//仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
git reset --soft 版本库ID

 

//仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --mixed 版本库ID

 

//彻底将工作区、暂存区和版本库记录恢复到指定的版本库
git reset --hard 版本库ID

    那我们到底应该用哪个选项好呢?

    (1)如果你是在提交了后,对工作区的代码做了修改,并且想保留这些修改,那么可以使用git reset --mixed 版本库ID,注意这个版本库ID应该不是你刚刚提交的版本库ID,而是刚刚提交版本库的上一个版本库。如下图:

    (2)如果不想保留这些修改,可以直接使用彻底的恢复命令,git reset --hard 版本库ID。

    (3)为什么不使用--soft呢,因为它只是恢复了版本库,暂存区仍然存在你错误提交的文件索引,还需要进一步使用上一节的删除错误添加到暂存区的文件,详细见上文。

 

 

 

 

 

 

 

五、乱码的解决方案

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VSCode是一款功能强大的代码编辑器,它内置了对Git的支持,可以方便地进行版本控制和团队协作。下面是VSCode应用Git的一些常用功能和操作步骤: 1. 初始化仓库:在VSCode中打开一个项目文件夹后,可以通过点击左侧的源代码管理图标(类似于一个分支的图标)来初始化一个Git仓库。 2. 克隆远程仓库:在VSCode中选择“克隆存储库”选项,输入远程仓库的URL,选择本地存储路径,即可将远程仓库克隆到本地。 3. 提交更改:在编辑器中对代码进行修改后,可以通过点击源代码管理图标旁边的加号按钮来将修改添加到暂存区,然后点击对勾按钮来提交更改。 4. 查看历史记录:点击源代码管理图标旁边的时钟按钮,可以查看提交的历史记录,包括每次提交的作者、时间和提交消息。 5. 分支管理:点击源代码管理图标旁边的分支按钮,可以创建、切换和删除分支,还可以合并分支和解决冲突。 6. 推送和拉取:点击源代码管理图标旁边的三个点按钮,可以选择推送本地更改到远程仓库或者拉取远程仓库的最新更改到本地。 7. 解决冲突:当多个人同时修改同一个文件时,可能会产生冲突。VSCode提供了解决冲突的工具,可以通过点击冲突标记来选择保留哪个版本的更改。 8. 查看差异:在源代码管理面板中,可以选择两个提交来比较它们之间的差异,以便查看具体的更改内容。 以上是VSCode应用Git的一些基本操作,希望对你有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值