Git的日常使用总结

Git的日常使用总结

Git的用途

Git是一个分布式的版本控制系统,可以用于管理项目。使用Git的操作主要有从资源库中克隆资源,对克隆的项目作添加或修改,并且可以查看改动了哪些内容,最后可以将这些修改通过推送操作提交到资源库中。此外,提交的修改可以撤消并重新提交。

安装及使用

在官网下载安装包即可进行安装,安装完成后在需要使用git的文件夹中点击右键即可看到“启动git bash”,这就可以通过命令行来进行git操作了。

基本概念

工作区:即电脑中能看到的目录。

版本库:工作区的隐藏目录.git,是Git的版本库,且不属于工作区,包含了index和HEAD等重要文件。

暂存区:存放于.git目录下的index文件中,包含有一棵目录树。用于保存修改过但未正式提交的文件。

对象库:位于.git/objects目录中,里面包含了创建的各种对象及内容。

分支:项目的每一次提交串起来可以形成一条时间线,这条线可能会在某个节点出现分岔,而这些每一个分岔都是一个分支,一个项目可能存在多个分支。其中最早创建的时间线叫主分支(master分支)。master指向该时间线上的最新一次提交,每次提交时master都会向前移动。每一条分支都可以由该分支上最新的那次提交来确定。

HEAD:HEAD相当于一个指针,指向项目当前的版本,也即指向当前分支。

常用命令

git init
$ git init
或
$ git init [target]

这个命令用来创建并初始化一个Git仓库。进入所选的文件夹,执行git init命令即可创建。或者在执行git init 时加上目标目录的路径来在该目录进行创建。创建之后该文件夹中会生成一个.git子目录,这个目录用于跟踪版本管理库,包含了资源的所有源数据,之后的许多操作都依赖此目录中的内容。

git clone
$ git clone [url]

这个命令用于将一个已有的Git仓库拷贝到本地,即用于复制一个项目。

比如对于GitHub上的项目,使用其clone的url来执行git clone即可将该项目的所有内容拷贝到本地目录中。

另外克隆时可以自己重新定义项目的名称,在指令中url后面加上该名称即可。

git status

可以用于查看项目的当前状态,也可以查看自上次提交后项目是否有修改。

git diff

可以查看git status的结果的详细信息

$ git diff                   (查看工作区中的改动)
$ git diff --cached          (查看暂存区中已缓存的改动)
$ git diff HEAD              (查看工作区与版本库中最新版本的区别)
$ git diff --stat            (显示摘要)
git add
$ git add <file>  (添加指定文件)
$ git add .		  (添加所有文件)

可以用于向项目中添加指定的文件,或添加当前项目的所有文件。执行git add后,暂存区的目录树被更新,同时对象库也会更新。其中对象库中会产生一个新的对象,其内容即为git add命令的目标文件的内容,且这个对象的ID会被记录到暂存区的文件索引中。因此暂存区中会包含有工作区中项目的改动的信息。

git commit

用于提交更改,执行后暂存区的目录树会写到版本库(对象库)中,master分支会相应地更新。

在进行提交之前,需要先配置用户名和邮箱,因为每次提交都要记录名字和邮箱地址。

$ git config --global user.name 'Drawspirit'
$ git config --global user.email 1296939008@qq.com

提交时加上-m可以直接在命令行中进行注释,否则会进入vim编辑器界面编写提交信息。

$ git commit -m "Add a new ......"

使用commit进行提交是从暂存区写到版本库中,因此只有修改并且add过的内容才会被提交。

git push
$ git push

可以将本地的提交推送到相应的远程库上(比如GitHub项目)。

git reset HEAD
$ git reset HEAD <file>

执行此命令时暂存区的目录树会被master分支指向的目录树替换。也就是将暂存区中的修改全部撤销。

git rm

可以用于删除文件。

$ git rm <file>

直接使用rm删除或在文件管理器中手动删除文件时,文件将从工作区中删除,git status指令会告知哪些文件被删除。如果此时执行git commit,则版本库中的相应文件也会被删除。

如果想要将文件从暂存区删除而工作区仍保留,则在指令后加上–cached。

$ git rm --cached <file>
git mv
$ git mv [file_name] [target_name]

可以用于移动或重命名一个文件或目录。

git checkout
$ git checkout .
$ git checkout -- <file>

此命令可以用暂存区中全部或指定的文件替换工作区中对应的文件。也就是将该文件在工作区中的修改全部撤销,即使其回到最近一次add或commit后的状态。此外checkout还能用于切换当前分支,加上参数-b还能用于创建分支。

git log

此命令可以显示提交日志,即提交的各个历史版本。列出来的信息包括commit_id,即版本号,可以用于版本回退,使用git reset --head就能回退到这些版本中的某一个。

git reset --hard commit_id

进行该操作时,实际上是改变HEAD的指向。

分支操作

创建分支
$ git checkout -b branch_name

该命令会创建一个名为branch_name的新分支,然后显示Switch to a new branch 'branch_name'表示当前以切换到该分支上。(实际上加上参数-b相当于git branch branch_name加上git checkout branch_name

查看分支
$ git branch

此命令列出所有分支,并且当前所在分支的前面会有*号。如果你的git bash有高亮的话当前分支还会显示不同的颜色。

合并分支
$ git merge branch_name

此命令可以将指定的分支合并到当前分支上。

使用git log时加上–graph参数可以查看分支合并图。

删除分支
$ git branch -d branch_name

这条命令会删除指定的分支。要注意的是不能用这条命令删除当前分支,否则会报错,因此想要删除某个分支时先要切换到别的分支上。

冲突

当在两个分支上对同一内容做了不同的修改时,若要将二者合并,就会产生冲突。此时Git无法自动合并分支,需要手动解决冲突。

常用步骤总结

当在工作区中对项目进行了修改并确认后,先使用git add保存修改到暂存区,然后用git commit提交到版本库以更新版本,最后用git push将本地提交推送到远程库中。

当想要放弃当前在工作区中的修改时,使用git checkout -- <file>可以撤销该修改,使工作区回到之前的状态。

当已经git add之后想放弃修改时,可以先git reset HEAD <file>然后再git checkout -- <file>

当已经git commit之后想放弃修改时,则使用git log列出历史版本,找到想要回到的版本的commit_id,然后git reset --hard commit_id即可回退到该版本。

当想要工作的过程更加安全时,可以选择新建分支,在新的分支上进行操作,这样就不会对主分支造成影响,当确认了新分支的内容之后,就可以将其合并到主分支,再将该新分支删除。

当两个分支出现冲突时,将无法自动合并,这时需要将合并失败的文件手动修改为新的内容后再提交,才能合并。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值