【Git】git再学习

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/feng_zhiyu/article/details/82421876

更多学习内容:

Git服务器的搭建以及常用git命令

Windows下Git使用入门(GUI工具:TortoiseGit)

Git命令

1.初始化

git init  # 在一个文件夹下执行此条命令是告诉git我要对文件进行版本控制,git会初始化一个工作区

2.配置

git config user.name “名字”

git config user.email “邮箱”

3.状态

git status #查看当前状态,获知哪些文件有待提交或着已修改

4.分区

添加&提交

 

git add 文件名

git commit [-m “提交的注释”]

5.设置忽略规则

在git工作区的根目录创建.gitignore: > .gitignore

忽略文件的命令:

echo “a.o” >> .gitignore #表示忽略a.o文件

echo “*.o” >> .gitignore #表示忽略以.o结尾的文件

echo “out/” >> .gitignore #表示忽略out文件夹下的所有文件

6.快照

 

7.日志

git log [-number]#查看日志; number这个参数表示最近number次的提交记录

git log --oneline #每条提交记录只用一行展示

git log -1 -p #-1用来展示最近一次的提交;-p参数用来展示提交或修改的内容

gitk #图形化界面的方式查看提交

Ps:使用gitk前需要执行安装命令: sudo apt-get install gitk

8.差异比较&版本检出

master

 

C1是一次提交;master是一个分支,指向最新的提交,可以理解为一个指针;HEAD是一个标签,指向当前的分支

现在有了一个新的提交C2,它是基于已经有C1的基础上的提交。master会指向新的提交C2。

master是一个分支的名称,HEAD指向当前分支。它们仅仅是指针,指向某一个提交码。

差异

不带参数的调用

    git diff filename

这种是比较 工作区和暂存区

比较暂存区与最新本地版本库

    git diff --cached  filename

比较工作区和最新版本

    git diff HEAD filename

比较工作区与指定的 commit -id 的差异

    git diff commit-id  filename

比较暂存区与指定 commit-id 的差异

    git diff --cached commit-id  filename

比较两个 commit -id 的差异

    git diff commit-id commit-id

取出历史版本

git checkout filename #从缓存区取出历史文件到工作区

git checkout HEAD filename #从版本库取出历史文件到工作区和缓存区

9.分支

HEAD总是指向当前分支

新建分支

git branch dev  #创建一个名为dev的分支

git branch #查看当前的所有分支

git checkout dev #切换到dev分支

假设此时dev分支出现了bug,切换到master分支

创建并切换到bugfix分支:  git checkout -b bugfix

分支合并

Ps: 下面的例子中额bugfix分支是基于master分支,也就是bugfix中的文件包含master分支的所有文件。

切换到master分支,将bugfix分支整合到master分支

git checkout master

git merge bugfig

删除分支 git branch -d bugfix

Ps:下面的dev分支和master分支的文件没有包含关系。 master整合dev分支是git通过新建一个分支来实现的。 具体见下面的例子。

解决冲突

模拟冲突情景:

当两个git用户从服务器上克隆了当前的git版本库,然后同时对其中的空文件1进行修改,然后提交并上传到服务器,这时候发生冲突了。 那么需要我们手动解决冲突。 打开所改动的文件,保存两个用户修改的内容,其余多余的东西删除。具体见例子。

 

打开文件1后。内容如下:

当前的意思是当前分支也就是master分支添加了内容add on master,”====”分隔符; dev分支添加了add on dev到文件1中。

只保留第2行和第4行的内容。

通过命令git log --graph --oneline 以图的形式且每次提交在一行展示查看日志如下:

        从上面的日志可以看出,master从另一个分支合并了C4,C5,C6后,然后合并了dev分支,再在maser分支向文件1添加了add on master内容,在dev分支向文件1中添加了add on dev内容,并且master分支合并了dev分支【这里手动解决了冲突】。 当前位于master分支。

 

学习和使用Git重点:分支、解决冲突、版本回退、权限管理等。

猜你喜欢

转载自blog.csdn.net/feng_zhiyu/article/details/82421876