Git 常用命令记录

Git常用命令

新建代码库

# 在当前目录初始化一个Git代码库
git init .

# 在当前目录创建一个 为 test 的库并创建相应的文件夹
git init test

# 将在线库克隆下来
git clone [url] 

配置

Git的设置文件为,gitconfig,他可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)

# 查看当前Git配置信息
git config --list

# 用文本的方式编辑Git配置文件
git config -e [--global]         ## 注:--global代表全局配置

# 设置提交代码时的用户信息
# 一般在新装完Git后都需要进行配置
git config [--global] user.name 用户名
git config [--global] user.email 邮箱

新增/删除 文件

此处做一个记录,为了给自己看一下
工作流
你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,指向你最近一次提交后的结果。

图片[1]-Git 常用命令记录-魔王のBlog

自己对于此处的理解:
工作目录是自己进行编写的目录,而git add后的文件就会进入暂存区,表示等待老大确认,否则只是暂时保存在那,不会对真实代码进行任何的操作,当我们对其进行commit确认打上标签后,他就知道在push的时候自己需要上传上去了,否则不会有任何操作。

# 添加指定文件到暂存区
git add [file1] [file2].....

# 添加指定目录到暂存区,包括子目录
git add [dir]

# 添加当前目录的所有文件到暂存区
git add .

git add . | git add * | git add -u 的区别
git add . 提交新文件(NEW)和被修改(modified)文件,不包括被删除的文件(deleted)
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add -A 是提交所有的变化(侧重点在-A 这样会将所有操作全部添加到暂存区)

自己的了解:
git add . 将文件添加到暂存区,可以将new状态和modify状态添加到暂存区,但无法添加文件被删除的状态
git add -u 将文件的modified状态和delete状态提交到暂存区,但不提交新增文件的状态
git add -A 上面两个的集合体,将所有状态全加进去。

# 删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2]......                  # 与直接rm删除的区别在于,如果在linux中直接rm -rf 删除,最后还是需
                                              # 要git add -u 去将删除操作提交到暂存区。

# 停止追踪指定文件,但是该文件依然会保留在工作区
git rm --cached [file]

# 改名文件,并将这个改名放入暂存区
git mv [文件1] [文件1-new]

代码提交

# 提交暂存区到仓库(`HEAD`)
git commit -m "备注"

# 提交暂存区的指定文件到仓库区
git commit [file1] [file2] .... -m "备注"

# 提交工作区自上次commit之后的变化,直接到仓库区
# 解释:等于绕过git add,直接将 修改 和 删除 的文件提交到仓库里
git commit -a

# 提交时显示所有diff信息(也可以说是 提交时显示所有改动信息)
git commit -v

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend -m 备注

# 重做上一次commit,并包括指定文件的新变化
git commit --amend [file1] [file2]

分支

# 列出所有本地分支
git branch

# 列出所有远程分支
git branch -r (remote)

# 列出所有本地分支和远程分支
git branch -a

# 新建一个分支,但依然停留在当前分支
git branch [branch-name]

# 新建一个分支,并切换到该分支
git checkout -b [branch]

# 切换到指定分支,并更新工作区
git checkout [branch-name]

# 切换到上一个分支
git checkout -

# 建立追踪关系,在现有分支与指定的远程分支之间
git branch --set-upstream [本地分支] [远程分支]

# 合并指定分支到当前分支
git merge [分支]

# 选择一个commit,合并进当前分支
# 简单来说就是挑选某个单独的commit,将其合并进现在所处理的分支里,并不对所有修改进行合并
git cherry-pick [commit]

# 删除分支
# 本地
git branch -d [branch-name]
# 远程
git push origin --delete [branch-name]
git branch -dr [remote/branch]

标签

tag 的理解

什么是tag?
tag是git版本库的一个标记,指向某个commit的指针。
tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 …这样的标签。
tag感觉跟branch有点相似,但是本质上和分工上是不同的:
tag 对应某次commit, 是一个点,是不可移动的。
branch 对应一系列commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。
所以,两者的区别决定了使用方式,改动代码用 branch ,不改动只查看用 tag。
tag 和 branch 的相互配合使用,有时候起到非常方便的效果,例如:已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布就可以检出 v2.0 的代码作为一个 branch ,然后作为开发分支。

# 列出所有tag
git tag

# 新建一个tag在当前commit
git tag [tag]

# 新建一个tag在指定commit
git tag [tag] [commit]

# 删除本地tag
git tag -d [tag]

# 删除远程tag
git push origin :refs/tags/[tagsName]

# 查看tag信息
git show [tag]

# 提交指定tag
git push [remote] [tag]

# 提交所有tag
git push [remote] --tags

# 新建一个分支,指向某个tag
git checkout -b [branch] [tag]
© 版权声明
THE END
喜欢就支持一下吧
点赞8
分享
评论 抢沙发

请登录后发表评论