关于git:git

68次阅读

共计 5023 个字符,预计需要花费 13 分钟才能阅读完成。

罕用 Git 命令应用教程

0x01 Git 配置

1. 在装置实现 Git 后,开始正式应用前,是须要有一些全局设置的,如用户名、邮箱。

设置的次要命令是 git config:


git config --global user.name "your name"      // 设置全局用户名
git config --global user.email "your email"    // 设置邮箱

其中,–global 指定为全局配置,不应用该参数,则为以后所在仓库配置。

2. 除了用户名、邮箱之外,还有很多的配置能够用来自定义 Git,如:

git config --global color.ui true        // 让 Git 显示不同的色彩
git config core.ignorecase true            // 让 Git 对仓库中的文件大小写敏感

3. 查看所有的曾经做出的配置:

`git config -l
git config`

0x02 根底操作

1. 创立 Git 版本库

在本地创立 Git 版本库,须要应用 git init 命令。

首先,你须要新建一个寄存版本库的目录,而后进入到该目录所在门路,而后执行:

git init
而后查看目录构造中,就能够看到蕴含有 .git 子目录,这就阐明创立版本库胜利了。

git init

2. 将文件增加到版本库

要将一个文件纳入到版本库治理,首先要将其增加到暂存区(这里不做深刻介绍),而后能力提交到仓库中。

2.1 将文件增加到暂存区,应用的是 git add:

git add Readme.md        // 增加单个文件到暂存区
git add .                // 将当前目录下所有批改增加到暂存区,除依照规定疏忽的之外

留神:这边空文件夹是不会被增加到暂存区中的。

git add

2.2 将暂存区中的文件,提交到仓库中。须要应用 git commit:

git commit // 如果暂存区有文件,则将其中的文件提交到仓库
git commit -m ‘your comments’ // 带评论提交,用于阐明提交内容、变更、作用等
留神:这边间接用 git commit 提交,会先弹出增加评论的页面。

git commit

3. 查看仓库的状态

不管咱们是新建了文件,将文件退出暂存区,或者其余的批改等等,咱们都能够通过:

git status
来随时查看仓库中文件的状态。这个应该是应用 Git 做版本控制过程中,我应用最多的一个命令。

4. 查看仓库中的具体批改

很常常的,咱们对某个文件做了批改,但过不久就遗记了。这时候就能够通过 git diff 来查看具体的批改内容。

git diff    // 查看版本库中所有的改变
git diff Readme.md        // 查看具体文件的改变
git diff

5. 查看提交历史记录

有的时候,你会须要查看本人做过哪些提交,来回顾本人实现的局部。或者须要寻找某个具体的提交来查看过后的代码。这里须要用到:

git log     // 显示所有提交的历史记录
git log --pretty=oneline    // 单行显示提交历史记录的内容
在 git log 的输入内容中,能够看到每次提交的 ID,是一个 40 位的字符串。

git log

6. 版本回退

有了 git log 来查看提交的历史记录,咱们就能够通过 git reset –hard 来回退到咱们须要的特定版本,而后应用过后的代码进行各种操作。


git reset --hard HEAD^        // 回退到上一个提交版本
git reset --hard HEAD^^        // 回退到上上一个提交版本
git reset --hard 'commit_id'    // 会退到 commit_id 指定的提交版本
git reset --hard

7. 回到未来的某个提交

当退回到某个提交的版本当前,再通过 git log 是无奈显示在这之后的提交信息的。然而,通过 git reflog 能够获取到操作命令的历史。

因而,想要回到未来的某个提交,先通过 git reflog 从历史命令中找到想要回到的提交版本的 ID,而后通过 git reset --hard 来切换。

git reflog
git reset --hard 'commit_id'
git reflog

8. 撤销批改

撤销批改同样包含两方面的内容,因为仓库中的文件在提交之前,可能在工作区中,尚未在版本控制范畴内,也可能在暂存区中。

8.1 抛弃工作区中文件的批改

git checkout -- Readme.md    // 如果 Readme.md 文件在工作区,则抛弃其批改
git checkout -- .            // 抛弃当前目录下所有工作区中文件的批改
留神:git checkout -- 中的 -- 是必须的。git checkout --

8.2 抛弃曾经进入暂存区的批改

git reset HEAD Readme.md     // 将 Readme.md 复原到 HEAD 提交版本的状态
git reset HEAD

9. 删除文件

在文件未增加到暂存区之前,对想删除文件能够间接物理删除。或者通过 git checkout — file 来抛弃。如果文件曾经被提交,则须要 git rm 来删除:

git rm Readme.md     // 删除曾经被提交过的 Readme.md

留神:git rm 只能删除曾经提交到版本库中的文件。其余状态的文件间接用这个命令操作是出错的。

git rm

git rm 与 先 rm 而后 git add 的区别

rm and git add

更具体的能够参考:”git rm” 和 “rm” 的区别

留神:上图中的后果是在 git 1.9.1 版本上的操作。在 git 2.0 以上两者没有区别了。

0x03 分支治理

分支是版本控制系统中很重要的一个概念,在 Git 中新建、合并等分支的操作十分轻量便捷,因而咱们会很常常的用到。

1. 查看分支

查看分支应用 git branch:git branch        // 查看本地分支信息
git branch -v     // 查看绝对具体的本地分支信息
git branch -av     // 查看包含近程仓库在内的分支信息

留神:在 git branch 的输入内容中,有一个分支,后面带有 * 号,这标识咱们以后所在的分支。

2. 创立分支

当咱们要修复一个 Bug,或者开发一个新个性,甚至是在初学的时候怕打乱原来的代码,都能够新建一个分支来防止对原来代码的影响。

git branch dev // 新建一个名称为 dev 的分支

3. 切换分支

当咱们创立完分支当前,咱们须要切换到新建的分支,否则,所有的批改,还是在原来的分支上。事实上,所有的改变,只能影响到以后所在的分支。

git checkout dev    // 新建完 dev 分支当前,通过该命令切换到 dev 分支

4. 创立并切换分支

git checkout -b dev        // 新建 dev 分支,并切换到该分支上
这个命令合并了前两个独立的命令,平时应用中个别这样应用。

5. 合并分支

当咱们修复实现一个 Bug,或者开发实现一个新个性,咱们就会把相干的 Bug 或者 个性的上批改合并回原来的主分支上,这时候就须要 git merge 来做分支的合并。

首先须要切换回最终要合并到的分支,如 master:

git checkout master        // 切换回 master 分支
git merge dev            // 将 dev 分钟中的批改合并回 master 分支

合并回主分支的时候,前面可能会面临到抵触的问题。抵触的解决暂不在这里阐明。

6. 删除分支

当之前创立的分支,实现了它的使命,如 Bug 修复完,分支合并当前,这个分支就不在须要了,就能够删除它。

git branch -d dev // 删除 dev 分支

0x04 近程仓库

下面的所有命令都是针对本地仓库的操作。当咱们心愿多集体来合作时,会将代码公布到一个对立的近程仓库,而后多集体在本地操作当前,在推送到近程仓库。其他人合作时,须要先同步近程仓库的内容,再推送本人的批改。

1. 从近程仓库克隆

如果你本地没有仓库,心愿从已有的近程仓库上复制一份代码,那么你须要 git clone。

git clone https://github.com/git/git.git     // 通过 https 协定,克隆 Github 上 git 仓库的源码
git clone linfuyan@github.com/git/git.git    // 通过 ssh 协定,克隆 Github 上 git 仓库的源码

留神:git clone 前面的仓库地址,能够反对多种协定,如 https,ssh 等。

2. 增加近程仓库

如果你曾经有了一个本地仓库,如之前创立的 git-guide,而后你打算将它公布到近程,供其他人合作。那么应用:

git remote add origin your_remote_git_repo        // 为本地仓库增加近程仓库

3. 推送本地的内容到近程仓库

当本地仓库中,代码实现提交,就须要将代码等推送到近程仓库,这样其余合作人员能够从近程仓库同步内容。

git push -u origin master // 第一次推送时应用,能够简化前面的推送或者拉取命令应用
git push origin master    // 将本地 master 分支推送到 origin 近程分支
留神:git push -u origin master,第一次应用时,带上 -u 参数,在将本地的 master 分支推送到近程新的 master 分支的同时,还会把本地的 master 分支和近程的 master 分支关联起来。

4. 从近程仓库获取最新内容

在多人合作过程中,当本人实现了本地仓库中的提交,想要向近程仓库推送前,须要先获取到近程仓库的最新内容。

能够通过 git fetch 和 git pull 来获取近程仓库的内容。git fetch origin master    
git pull origin master
git fetch 和 git pull 之间的区别:git fetch 是仅仅获取近程仓库的更新内容,并不会主动做合并。git pull 在获取近程仓库的内容后,会主动做合并,能够看成 git fetch 之后 git merge。留神:倡议多应用 git fetch。

5. 查看近程仓库信息

git remote [-v] // 显示近程仓库信息

6. 建设本地分支和近程分支的关联

在本地仓库中的分支和近程仓库中的分支是对应的。个别状况下,近程仓库中的分支名称和本地仓库中的分支名称是统一的。

有的时候,咱们会须要指定本地分支与近程分支的关联。


git branch --set-upstream 'local_branch' origin/remote_branch

7. 批改本地仓库对应的近程仓库地址

当近程的仓库地址发生变化时,须要批改本地仓库对应的近程仓库的地址。次要利用在工程迁徙过程中。

git remote set-url origin url

0x05 标签治理

在我的项目开发过程中,当一个版本公布实现时,是须要对代码打上标签,便于后续检索。获取处于其余的起因,须要对某个提交打上特定的标签。

1. 创立标签

git tag -a 'tagname' -m 'comment' 'commit_id'
-a 参数指定标签名,-m 增加备注信息,'commit_id' 指定打标签的提交。

2. 查看所有标签

git tag // 查看本地仓库中的所有标签

3. 查看具体标签信息

git show tagname

4. 删除本地标签

如果打的标签出错,或者不在须要某个标签,则能够删除它。

git tag -d tagname

5. 删除近程标签

git push origin :refs/tags/tagname

git push origin --delete tagname

git push origin :tagname

6. 推送标签到近程仓库

打完标签当前,有须要推送到近程仓库。

6.1 推送单个标签到近程仓库

git push origin tagname
6.2 一次性推送所有标签到近程仓库。

git push origin --tags

0x06 进阶操作

1. 长期保留批改

在执行很多的 Git 操作的时候,是须要放弃以后操作的仓库 / 分支处于 clean 状态,及没有未提交的批改。如 git pull,git merge 等等,如果有未提交的批改,这些将无奈操作。然而做这些事件的时候,你可能批改了比拟多的代码,却又不想抛弃它。那么,你须要把这些批改长期保存起来,这就须要用到 git stash。

1.1 长期保留批改,这样仓库就能够回到 clean 状态。

git  stash        // 保留本地仓库中的长期批改。留神:能够屡次的 git stash 来保留不同的长期批改。

1.2 查看长期保留。当你长期保留当前,前面还是要取回来的,那它们在哪里呢?

git stash list // 显示所有长期批改

1.3 当咱们解决完其余操作时,想要复原长期保留的批改。

git stash apply        // 复原所有保留的长期批改
git stash pop        // 复原最近一次保留的长期批改

1.4 或者,咱们前面感觉长期保留不想要了,那能够抛弃它。

git stash clear // 抛弃所有保留的长期批改

正文完
 0