git命令的使用

1、git基础入门

1.1 基础概念

git是一个开源的分布式版本控制系统,用于敏捷高效的处理或大或小的项目,更是一个内容管理系统(CMS),工作管理系统。

git和snv差异

  1. git是分布式的,svn不是
  2. git把内容按元数据方式存储,而svn是按照文件
  3. git没有一个全局的版本号,而svn有
  4. git的内容完整性要优于svn。

1.2 安装

window平台安装,安装包下载地址

https://gitforwindows.org/

安装时候按照提示步骤,一步一步安装就行了。安装完成就可以使用git工具,还有一个图形界面的项目管理工具。

图形管理工具

git命令行

1.2 git配置

git提供了一个git config的工具,用来配置读取相应的工作环境变量

在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings\$USER

1、配置个人的用户名和邮件

使用了global选项,以后所有的项目都会默认使用这里配置的用户信息

  1.  
    git config --global user.name 'youname'
  2.  
    git config --global user.email test@163.com

2、查看配置信息

  1.  
    git config --list //所有的配置信息都会列出来
  2.  
    git config user.name //查看姓名
  3.  
    git config user.email //查看邮箱

 

3、工作流程图

 

 

1.3 git工作区、暂存区、版本库概念

  • 工作区:电脑里面能看到的目录
  • 暂存区:英文stage或者index,在.git目录下的index文件,暂存区也叫索引。
  • 版本库:工作区有个隐藏的目录.git,这个不算工作区,而是git的版本库

2、git基本操作

2.1 git初始化:git init

git使用init来初始化仓库,因为很多命令都需要在仓库里面使用,因此首先需要初始化,初始化以后,仓库下回多出来一个.git目录(隐藏文件,可在文件夹设置里面把隐藏文件显示),.git目录下包括了所有的元数据。如果需要某个文件当做仓库,只需要再当前目录下,在执行git init命令。

git init
 

 

2.2 创建仓库:git init 【directory】 

使用指定目录作为git仓库,执行这个命令,会生成一个newrepo的文件,作为git仓库,newrepo里面也有一个.git目录

git init newrepo
 

2.3 拷贝(克隆)项目:git clone [url]

使用git clone从仓库中拷贝代码,也可以克隆项目到指定文件夹。url是git仓库地址,directory本地目录。

  1.  
    git clone [url]
  2.  
    git clone [url] [directory]

2.4 查看项目的当前状态:git status

查看当前项目的状态,更改了那些文件。如果你新建了文件,添加了文件到缓存,修改了文件,想知道有没有提交,都可以执行这个命令,来查看相关的文件信息,和你的操作轨迹。

git satus
 

2.5 新建文件等文件操作命令:touch [filename]

  1.  
    touch a // 创建一个a文件
  2.  
    echo 1234 >> a // 把1234这个内容放入a文件
  3.  
    cat a // 打开a文件 读取出a文件中的内容
  4.  
    mkdir test // 创建test文件夹
  5.  
    rm 文件名 // 删除文件

2.6: 降文件添加到缓存区:git add [filename]

将文件添加到缓存,如果是多个文件,在命令行后面新增文件名即可。

  1.  
    git add test.js//把test.js提交到缓存
  2.  
    git add test.js one.html//把test,one提交到缓存区
  3.  
    git add .//把所有文件提交到缓存区

2.7 提交文件到本地仓库:git commit

执行git commit将缓存区内容添加到仓库中。每次提交都会记录你的名字与邮箱,所以要提前设置一下。-m添加注释

  1.  
    git commit //提交到仓库
  2.  
    git commit -m '注释内容' //提交到仓库,添加备注信息
  3.  
    git commit -am ''//提交到仓库,添加备注信息,文件已经放入仓库,直接提交添加备注,不用add,commit。

2.8 提交代码到远程仓库:git push

git push //把文件上传到远程仓库
 

2.9 更新代码,从远程仓库拉取代码:git pull

git pull //从远程仓库拉取代码,类似svn的update
 

2.10 取消已缓存的内容:git reset head /[filename]

取消赢缓存的内容(git add提交到缓存里面的文件),

git reset head,取消所有缓存的内容(当前版本);

git reset [filename],取消指定文件的内容。取消以后,可执行status查看文件状态;

  1.  
    git reset head
  2.  
    git reset test.js

2.11 删除文件:git rm 【file】

从git里面移除某个文件,执行git rm [file]命令;

如果要删除暂存区的的文件,则执行git rm -f [file]命令;

如果要删除暂存区的文件,但是又要保留在工作目录中,执行 git rm --cached [file];

从工作区删除删除目录,git rm -r [directory ]

  1.  
    git rm test.js
  2.  
    git rm -f test.js
  3.  
    git rm --cached test.js
  4.  
    git rm -r test

2.12、比较文件:git diff

如果文件已经修改了,还么有提交,可以执行 git diff命令,来查看差异

2.13 查看提交日志:git log/relog

查看命令历史,查看仓库的操作历史

  1.  
    git log
  2.  
    git reflog
  3.  
    git log -n//查看近期提交的n条记录
  4.  
    git log -p//查看提交的详细记录

2.14 快速打开图形操作界面:gitk

gitk
 

2.15 查看文件信息:ls

  1.  
    ls // 查看当前路径下面的所有文件名
  2.  
    ls 文件夹名 // 查看对应文件夹中的内容
  3.  
    ls -l // 拉出最近git提交记录以及对应修改的文件名
  4.  
    ls -l -a // 拉出最近git提交记录以及对应修改的文件名,隐藏的文件也会显示

2.16 文件目录操作:cd

  1.  
    cd ~ // 将工作路径快速切换到root
  2.  
    cd - // 将工作路径切换到上一状态
  3.  
    cd ../ // 切回到上一个工作路径
  4.  
    cd 文件夹名 // 进入某个目录
  5.  
    cd / // 进入根目录

2.17 常见分支操作:

  1.  
    git branch //列出本地所有分支
  2.  
    git branch 分支名 // 新建分支
  3.  
    git branch // 查看当前所有分支
  4.  
    git checkout 分支名 // 检出分支
  5.  
    git checkout -b 分支名 // 创建并切换分支
  6.  
    git checkout commitId 文件名(文件路径下的文件名) 还原这个文件到对应的commitId的版本
  7.  
    (例如src/page/attendance/attendanceSum.vue我想把它还原到2个版本之前 首先git log src/page/attendance/attendanceSum.vue找到对应想要还原的版本
  8.  
    复制版本提交的commitID 然后执行git checkout commitID src/page/attendance/attendanceSum.vue
  9.  
    这样就把attendanceSum.vue这个单个文件 还原到了对应版本)
  10.  
    git branch -v // 查看分支以及提交hash值和commit信息
  11.  
    git merge 分支名 // 把该分支的内容合并到现有分支上
  12.  
    git branch -d 分支名 // 删除分支
  13.  
    git branch -D 分支名 // 强制删除 若没有其他分支合并就删除 d会提示 D不会
  14.  
    git branch -m 旧分支名 新分支名 // 修改分支名
  15.  
    git branch -M 旧分支名 新分支名 // 修改分支名 M强制修改 若与其他分支有冲突也会创建(慎用)
  16.  
    git branch -r // 列出远程分支(远程所有分支名)
  17.  
    git branch -a // 查看远程分支(列出远程分支以及本地分支名)
  18.  
    git fetch // 更新remote索引
  19.  
    git push -u origin 分支名 // 将本地分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push 也可解决 git建立远程分支关联时出现fatal ... upstram的问题

2.17 标签操作:git tag

  1.  
    git tag // 查看列出所有打过的标签名
  2.  
    git tag -d 标签名 // 删除对应标签
  3.  
    git tag 标签名字 // 在当前仓库打个标签
  4.  
    git tag foo -m "message" // 在当前提交上,打标签foo 并给message信息注释
  5.  
    git tag 标签名 哈希值 -m "message" // 在某个哈希值上打标签并且写上标签的信息
  6.  
    git tag foo HEAD~4 // 在当前提交之前的第4个版本上 打标签foo
  7.  
    git push origin --tags // 把所有打好的标签推送到远程仓库
  8.  
    git push origin 标签名 // 把指定标签推送到远程仓库
  9.  
    git stash // 把暂存区的内容 暂时放在其他中 使暂存区变空
  10.  
    git stash list // 查看stash了哪些存储
  11.  
    git stash pop // 将stash中的内容恢复到当前目录,将缓存堆栈中的对应stash删除
  12.  
    git stash apply // 将stash中的内容恢复到当前目录,不会将缓存堆栈中的对应stash删除
  13.  
    git stash clear // 删除所有缓存的stash
  14.  
    git pull --tags // 把远程仓库的标签也拉取下来
  15.  
    git push origin :refs/tags/远程标签名 // 删除远程仓库的标签

2.18 远程同步操作

  1.  
    # 下载远程仓库的所有变动
  2.  
    $ git fetch [remote]
  3.  
     
  4.  
    # 显示所有远程仓库
  5.  
    $ git remote -v
  6.  
     
  7.  
    # 显示某个远程仓库的信息
  8.  
    $ git remote show [remote]
  9.  
     
  10.  
    # 增加一个新的远程仓库,并命名
  11.  
    $ git remote add [shortname] [url]
  12.  
     
  13.  
    # 取回远程仓库的变化,并与本地分支合并
  14.  
    $ git pull [remote] [branch]
  15.  
     
  16.  
    # 上传本地指定分支到远程仓库
  17.  
    $ git push [remote] [branch]
  18.  
     
  19.  
    # 强行推送当前分支到远程仓库,即使有冲突
  20.  
    $ git push [remote] --force
  21.  
     
  22.  
    # 推送所有分支到远程仓库
  23.  
    $ git push [remote] --all

3、提交代码步骤

3.1 查看当前状态:git status

第一步,查看当前文件状态,git status,查看修改了那些文件,红色字体就是修改的文件。

3.2 添加文件到缓存区:git add .

如果one.vue,test.vue你都都想提交执行git add .

如果只提交一个文件,执行 git add one.vue,提交指定的文件。

再执行 status看一下,是否全部提交成功。

3.3 提交代码到本地仓库:git commit -m 'xx'

提交代码(提交已经加到缓存区里面的代码)到本地仓库

3.4 从远程主机更新代码:git pull [主机] [分支]

取回远程主机某个分支的更新,再与本地的指定分支合并

3.5提交代码到远程仓库:git push [主机] 【分支】

 

posted @ 2020-09-11 15:28  你的雷哥  阅读(419)  评论(0编辑  收藏  举报