项目实用Git版本控制

Git,作为这个世界上目前最先进的分布式版本控制系统,其强大的管理能力,意味着其复杂程度。今天我来与大家分享以下日常中常用的命令操作的学习心得。

第一条:邮箱用户名更改操作指令。

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
$ git config --list
  使用** --global **将电脑上的所有git仓库都配置成使用以下用户名和邮箱,若要单独设置某一文件项目的用户名和邮箱,则在文件项目的根目录下去掉 **--global** 指令即可。配置完成使用 **--list **进行配置的查询,在单独配置的某一文件项目下面查看的配置是全局配置+当前项目的配置, 使用的时候git会优先使用当前文件项目的配置信息。

第二条: 使用git指令创建文件夹

$ mkdir learngit
$ cd learngit
$ pwd
 **mkdir** 指令创建文件项目,创建完成 **cd** 文件名进到文件项目下面,**pwd **指令用于显示当前文件项目所在的目录。

第三条: 初始化git仓库

$ git init

**git init **指令将当前文件项目变为git管理的仓库。初始化成功的项目文件,文件夹中会自动生成 .git 目录,这个目录是Git来跟踪管理版本库的。若是没有看到 .git 目录,说明 .git 处于隐藏状态,使用 ls -ah 指令就可以看见被隐藏的 .git 目录,当然当前仓库下面的所有目录都会展现出来。


第四条: 添加文件到git仓库

$ git add 文件名

git add 指令将当前文件项目中的所有文件添加到git仓库,提交过而没有进行修改的文件不会重复提交。同时,该指令可反复多次使用,提交多个文件。


第五条: 把文件提交到仓库

$ git commit -m "wrote a readme file"

**git commit **将 add 指令添加的文件提交到git 仓库中, -m 后面跟着本次提交记录的说明,一般为本次添加修改文件的说明。同时,add 指令多次添加的文件 **commit **指令可一次提交到git仓库。


第六条: 查看修改过的文件

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

git status 指令可随时查询git管理下的所有文件状态,以上指令输出的结果为某些文件被修改过了,但还没有提交当前修改。当然 status 查询只是显示哪个文件被修改过了,若想知道对文件具体内容的修改,要使用以下指令:

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

该指令的输出结果会准确定位到修改所在行及修改的内容。


小结1

修改过的文件要重新提交到git仓库,git add 指令将修改过的文件添加到仓库,可使用 status 查询当前仓库的状态:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   readme.txt

此时,该输出结果告诉我们将要提交的文件中已经包含修改过的文件,再使用 git commit将文件提交到仓库当中。
此时,再次使用 **status **指令查看当前仓库的状态,以下输出结果表明已没有可提交的修改。

$ git status
On branch master
nothing to commit, working tree clean

小结2:

对于提交过的文件可以使用以下命令,查看工作区和当前版本库里面最新内容的区别,以便查询是否提交有遗漏的地方。

$ git diff HEAD -- readme.txt 
diff --git a/readme.txt b/readme.txt
index 76d770f..a9c5755 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,4 @@
 Git is a distributed version control system.
 Git is free software distributed under the GPL.
 Git has a mutable index called stage.
-Git tracks changes.
+Git tracks changes of files.

第七条: 查询提交历史记录

$ git log

使用 git log 指令查询commit 提交的历史记录,每条记录的具体显示信息为提交的commit版本号,提交时间及当次提交的记录说明。若只需要版本号信息,可添加参数:

$ git log --pretty=oneline

第八条: 历史版本回退

HEAD 表明当前仓库所在版本,HEAD^ 表示上一个版本,HEAD^^ 表示上上个版本,写到往上一百个版本时,就是HEAD~100

$ git reset --hard HEAD^
HEAD is now at e475afc add distributed

使用 git reset 指令可回退到指定的版本。以上指令回退到上一版本,若要回退版本时间较远,可直接输入要回退到的版本号(版本号不一定要写全,git会自动去找对应的版本,但是要有唯一性,不然git可能会找到多个版本好,此时就无法回退了)。

$ git reset --hard 1094a
HEAD is now at 83b0afe append GPL

若命令行关闭,后悔回退版本,想恢复到最新版本时,可使用以下命令:

$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file

git reflog 指令可以查看指令历史,记录了操作者的每一次指令,可找到最新的版本号,在进行版本恢复。
git log 指令可以查看提交历史,可以确定要回退到哪个版本。


第九条: 撤销修改

$ git checkout -- 文件名

使用 git checkout 指令可以将文件在工作区的修改撤销到上一个add 或commit的状态,回到上一个commit或是add的状态取决于是否又对修改过的文件进行过添加。若没有添加到暂存区即没有 add,则回到上一个commit的版本状态;若添加到了暂存区,又做了修改,则回到上一个 add 的状态。

$ git reset HEAD readme.txt
Unstaged changes after reset:
M    readme.txt

若修改过的文件已经通过** add** 指令添加到暂存区,则使用 git reset HEAD 把暂存区的修改撤销掉,重新放回工作区。

小结3:

git reset 指令既可以回退版本,也可以把暂存区的修改回退到工作区。当使用 HEAD 时,表示为最新的版本。
回退工作区版本使用 **git checkout, 回退暂存区版本使用 git reset HEAD;**若本地修改,同时添加到了暂存区,分两步,**git reset HEAD **回退暂存区修改,重新放回工作区,在 git checkout 撤销工作区修改。


第十条: 删除文件

$ git rm 文件

若工作区的文件被删除了,版本库中的状态和工作区则不一样了,此时可以删除版本库中的文件,使用** git rm** 文件删除仓库中的文件,在 git commit 提交,版本库中的文件就被删除了。

若文件时被误删的,想要把工作区的文件恢复回来,则使用 checkout ,原理则是将版本库的版本替换工作区的版本,所以无论是修改还是删除都可使用 **checkout **。

$ git checkout -- test.txt

第十一条: 查看分支

$ git branch

git branch 指令查看当前所在分支。


第十二条: 切换分支

$ git checkout 分支名

git checkout 分支名 指令切换到指定分支。


第十三条: 创建分支

$ git branch 分支名

git branch 分支名 指令则创建分支**。**


第十四条: 创建并切换分支

$ git checkout -b dev
Switched to a new branch 'dev'

git checkout 加上 -b 相当于以下两条指令。

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

第十五条: 删除分支

$ git branch -d 分支名

git branch -d 分支名 指令删除指定分支。


第十六条: 合并分支

$ git merge dev

git merge 分支名 指令合并指定分支代码到当前所在分支。

**小结4: **
合并代码后时有可能会有冲突,此时使用 git status 指令可查询冲突文件。


第十七条: 查询分支合并情况

$ git log --graph

git log --graph 指令可查看分支的合并图。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值