git

git介绍

git跟踪文件是按照快照来对比的,每个文件都会有个快照和校验码,git的仓库的内容一般如下.他有三个类型的对象,分别时提交对象,树对象,blob对象,分别存储(提交的信息,树对象的指针,作者邮箱),(记录着文件的目录以及blob对象的索引),(blob则保存着文件的对象)
在这里插入图片描述做些修改后再次提交,那么这次产生的提交对象会包含一个指向上次提交对象(父对象)的指针。
在这里插入图片描述Git 的分支,其实本质上仅仅是指向提交对象的可变指针。 Git 的默认分支名字是 master。 在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支。 它会在每次的提交操作中自动向前移动。
在这里插入图片描述

基本的安装和配置

安装

sudo apt install git

配置文件

/etc/gitconfig 和 ~/.gitconfig

  • 配置方法
    $ git config --global user.name “John Doe”
    $ git config --global user.email johndoe@example.com
    $ git config --global core.editor emacs
  • git config --list查看配置的内容
获取帮助
  • git help config

Git基础

获取 Git 仓库
git init					//初始化仓库
现在存在一个文件夹.git
结构如下:
-rwxrw-rw-  1 zz zz   888 Apr 28 23:17 GetMac.py
drwxrwxr-x  8 zz zz  4096 Apr 29 17:23 .git
-rwxrw-rw-  1 zz zz 47683 Apr 28 02:00 icon.png
-rwxrw-rw-  1 zz zz  1099 Apr 28 23:26 MacOpen.py
-rwxrw-rw-  1 zz zz  1687 Apr 28 23:26 make_package.py
-rwxrw-rw-  1 zz zz   582 Apr 28 14:53 run.py
-rwxrw-rw-  1 zz zz   749 Apr 28 23:26 send_package.py
-rwxrw-rw-  1 zz zz  4654 Apr 29 12:03 Windown.py
git add *.py				//开始跟踪文件
git commit -m 'initial project version'
git clone https://github.com/libgit2/libgit2		//仓库的克隆
记录每次更新到仓库
git status						//检查当前的文件状态,git add 是把文件缓存下来,修改过后进行git add那就重新缓存了
添加一个新文件.gitignore,此文件的作用时忽略文件的状态
$ cat .gitignore
*.[oa]
*~
git diff //查看缓存的内容和现在的内容.找出差异
git commit //提交更新,现在的status没有了,直到你再一次进行文件的变动
git rm 		//从暂存区移除文件
git mv file_from file_to//文件的改名
git log					//提交的历史.-p -2显示最后的两条,--stat

撤销操作
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。


取消暂存的文件,比如你执行了git add *
但是你可以取消一些文件
git reset HEAD xxx

git checkout -- CONTRIBUTING.md
撤销对文件的修改
远程仓库的使用

首先得配置ssh的秘钥

$ ssh-keygen -t rsa -C "your_email@youremail.com"
成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。
回到github上,进入 Account Settings(账户配置),左边选择SSH Keys,Add SSH Key,title随便填,粘贴在你电脑上生成的key。
$ ssh -T git@github.com查看是否链接成功
然后就是配置文件
$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"
添加远程地址
$ git remote add origin git@github.com:yourName/yourRepo.git
$ git push origin master 推送



$ git remote -v				//远程仓库的查看
$ git remote add pb https://github.com/zylgzz/IpGuet			//添加远程仓库的地址
$ git remote add origin git@github.com:yourName/yourRepo.git	//添加远程仓库的地址
$ git push origin master 										//ssh配置了就不用输入账号密码了
$ git push pb master 											//这样的推送需要密码
$ git fetch origin												//抓取后新的项目
git remote show origin											//查看远程仓库的更多的信息
$ git remote rename origin paul									// 可以讲远程仓库地址更换名字
git remote rm paul												//移除远程仓库地址
标签的使用

标签分为轻量标签和附注标签.

 git tag v1.4-lw			//标签的创建,轻量级
 $ git show v1.4-lw 		//标签的查看
commit 349c285570c79f046c65f3067a3e1e0c6621a67e
Author: zylgzz <zylgcmd@qq.com>
Date:   Mon Apr 29 17:42:27 2019 +0800

    readme commit

diff --git a/README b/README
new file mode 100644
index 0000000..9db1631
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+拥有出校器的学校存在一种状态,校方给出的出校器的版本往往是基于windowns的,然而如果使用其他的系统,我们不得不寻找新的方式去替代出校器的联网方式
diff --git a/icon.png b/icon.png
new file mode 100755
index 0000000..2600a06
Binary files /dev/null and b/icon.png differ



 git tag -a v1.4 -m 'my version 1.4'
 git tag
v1.4
v1.4-lw
git show v1.4
输出显示了打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息
Tagger: zylgzz <zylgcmd@qq.com>
Date:   Tue Apr 30 11:08:56 2019 +0800

my version 1.4

commit 349c285570c79f046c65f3067a3e1e0c6621a67e
Author: zylgzz <zylgcmd@qq.com>
Date:   Mon Apr 29 17:42:27 2019 +0800

    readme commit

diff --git a/README b/README
new file mode 100644
index 0000000..9db1631
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+拥有出校器的学校存在一种状态,校方给出的出校器的版本往往是基于windowns的,然而如果使用其他的系统,我们不得不寻找新的方式去替代出校器的联网方式
diff --git a/icon.png b/icon.png
new file mode 100755
index 0000000..2600a06
Binary files /dev/null and b/icon.png differ


git tag -a v1.2 9fceb02		//对以前的标签的修改
git tag -d v1.4-lw			//标签的删除
git push origin v1.5		//推送标签
git 别名
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status

git 分支

分支的创建
git branch testing

在这里插入图片描述

HEAD 指向当前所在的分支,

在这里插入图片描述

git checkout testing //分支的切换

在这里插入图片描述

分支的具体的操作

现在项目如下
在这里插入图片描述
现在因为需要,所以在C2的地方创建一个分支,

$ git checkout -b iss53  ==$ git branch iss53   and  $ git checkout iss53
现在有两个分支,且HEADzaiiss53那里

在这里插入图片描述
对相关的文件进行修改之后,需要回到master,然后创建了一个新的分支hotfix

git commit iss53
git checkout master
git checkout -b hotfix

在这里插入图片描述现在进行hotfix和master的合并

$ git checkout master
$ git merge hotfix

在这里插入图片描述

回到iss53继续操作

$ git checkout iss53

在这里插入图片描述现在讲iss53和master合并

$ git checkout master
$ git merge iss53

在这里插入图片描述在这里插入图片描述因为进行合并了,所以不需要iss53那个分支了,进行删除

 git branch -d iss53

合并遇到遇到冲突

$ git status
找打冲突,修改即可
$ git mergetool//图形化界面解决冲突

分支的管理
git branch			//可以查看所有的分支
git branch -v		//可以查看分支的最后一次的提交
git branch --merged //哪些分支已经合并到当前的分支
git push origin --delete serverfix//删除远程的分支
git branch -vv						//查看所有的远程的分支
 git checkout --track origin/serverfix//跟踪远程分支
 git push origin serverfix			//推送分支

官网的参考https://git-scm.com/book/zh/v2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值