> 文章列表 > Git操作

Git操作

Git操作

基本命令

显示配置列表

  • git config --l(or list) :显示配置列表

基本命令

  • git init :创建版本
  • git status :查看版本库状态
  • git add xxx.xxx: 将文件纳入[[Git#暂存区|暂存区]]

  • git commit -m information xxx.xx

表示真正地纳入到[[Git#存储区域|版本库]]中 -m 表示提交时的信息(message),是必须输入的。 用于描述不同版本之间的差别信息

  • git commit -a -m “message”

-a 参数设置修改文件后不需要执行 git add 命令,直接来提交

  • git show: 查看当前提交
  • git log:查看日志
  • git log --graph --decorate --pretty=oneline --abbrev-commit `

—graph commit之间将展示连线
—decorate 显示commit里面的分支
—pretty=oneline 只显示commit信息的标题
—abbrev-commit 只显示commit SHA1的前7位

  • git restore xxxx.xxx:从版本库恢复文件

  • git remote:查看远程仓库
  • git remote -v/--version:查看仓库信息
  • git remote add $name $url:添加远程仓库
  • git remote remove $name:删除添加的远程仓库
  • git remote show $name:查看指定仓库的详细信息
  • git remote rename $name $newName:对远程仓库改名

  • git push <远程仓库名> <本地分支名>:<远程分支名>

注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>

  • git push <远程仓库名> :<远程分支名>

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。注意第一个分支(origin/master)是不可以被删除的,等同于 `git push <远程仓库名> --delete :远程仓库名

  • git push <远程仓库名> <本地分支名>

如果省略远程分支名,则表示将本地分支推送到与之存在Tracking(追踪关系)的远程分支,通常两分支同名。如果远程分支不存在,则会自动创建分支。

  • git push

如果当前分支只有一个追踪分支,那么仓库名都可以省略

  • git push -u <远程仓库名> <本地分支名>

如果当前分支与多个仓库存在追踪关系,则可以使用-u选项指定一个默认仓库,这样后面就可以不加任何参数使用git push

  • git push --all <远程仓库名>

不管是否存在对应的远程分支,将本地的所有分支都推送到远程仓库,这时需要使用–all选项。

  • git push -f(or force) <远程仓库名>

如果远程仓库的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程仓库。这时,如果你一定要推送,可以使用–force选项。上面命令使用–force选项,结果导致远程仓库上更新的版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用–force选项。

  • git push <远程仓库名> --tags

git push不会推送标签(tag),除非使用–tags选项


  • git fetch <远程仓库名>

将远程仓库的所有分支都拉取到本地,> fetch 后不带分支名,则是所有仓库里的分支
注意:所取得的远程分支在本地仓库上要用"远程仓库名/分支名"的形式读取。比如origin仓库的master,就要用origin/master读取。

  • git fetch <远程仓库名> <远程分支名>

这个命令可以用来测试远程仓库的远程分支branch1是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出一个异常


  • git pull <远程仓库名> <远程分支名>:<本地分支名>

注意这个远程分支名是不带origin/的前缀的(别名的前缀),有冲突的时候修改冲突即可,修改完毕add、commit

  • git pull <远程仓库名> <远程分支名>

上面命令表示,取回origin/<远程分支名>分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge

  • git pull origin

本地的当前分支自动与对应的origin仓库"追踪分支"(remote-tracking branch)进行合并。

  • git pull

如果当前分支只有一个追踪分支,连远程仓库名都可以省略


  • git branch 分支名称

创建分支
^f87e45

  • git branch -v

查看分支

  • git checkout 分支名称

切换分支
^92d695

  • git branch -d 分支名称

删除分支

  • git checkout -b 分支名称

[[Git#f87e45|创建其他分支]],并直接[[Git#92d695|切换到新的分支]]


  • git merge 分支名称

合并分支

相关概念

文件状态

  • untracked files(未追踪文件)

文件虽然放置到了版本库的文件目录中,被Git软件识别到了,但是未纳入到版本库管理中。所以属于未追踪文

  • cached file

暂存状态,认为此时文件只是一种临时草稿状态,随时可能会进行修改或删除,并不算真正的操作完成状态。所以并不会把文件纳入到版本库管理中。

  • modified

表示文件已经修改了

版本控制

版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

区域

GIt为了方便对文件进行版本控制,划分为三个区域

存储区域

Git软件用于存储资源得区域。一般指得就是.git文件夹

暂存区

Git用于比对存储区域和工作区域得区域。Git根据对比得结果,可以对不同状态得文件执行操作。

工作区域

Git软件对外提供资源得区域,此区域可人工对资源进行处理。

设置自己的帐号信息(第一次使用需要设置)

如果你是第一回使用Git软件,需要告诉Git软件你的名称和邮箱,否则是无法将文件纳入到版本库中进行版本管理的。这是因为在多人协作时,不同的用户可能对同一个文件进行操作,所以Git软件必须区分不同用户的操作,区分的方式就是名称和邮箱
当然了,你可能会说我就用本地库就行了,不需要进行多人协作,是不是就可以不用配置呢。这是不行的,因为Git软件的设计初衷本身就是针对于linux系统的分布式开发协同工作,所以它天生就是用于分布式协同工作的,这里无论你是否使用这个功能,它本身就是这么设计的。所以是一定要配置的

  • git config --global user.name "你的名字或昵称" :设置基本信息
  • git config --global user.email "你的邮箱" :设置邮箱

这里的 –global表示全局配置,后续的所有文件操作都会使用该用户名称及邮箱。此时在操作系统的用户目录,会产生新的配置文件

HEAD的概念

HEAD 是当前分支引用的指针,它总是指向某次commit,默认是上一次的commit。 这表示 HEAD 将是下一次提交的父结点。 通常,可以把 HEAD 看做你的上一次提交的快照。当然HEAD的指向是可以改变的,比如你提交了commit,切换了仓库,分支,或者回滚了版本,切换了tag等。