git是Linux创始人通过内核开发而创作的分布式版本的控制系统,而我们作为开发者需要开发与维护,避免不了版本的迭代和更新,git就是用来保存修改删除等操作的工具,可以记录代码改动情况,它能够保存代码的每个版本,每个版本文件中修改和删除git都会跟踪,通过追踪的方式使得开发者能够更有效率的获取到之前的版本,让开发的效率提高。
这里的HEAD指针指向master
通过 cat .git/HEAD查看
文章目录
- 查看git是否安装以及配置
 - 创建文件和修改文件内容
 - [版本回退(git reset)](#版本回退(git reset))
 - 撤销修改
 - 删除版本库文件
 - 分支管理
 - 远程仓库
 - 标签功能
 - 安装tree的命令
 
查看git是否安装以及配置
- git版本
 
            
            
              bash
              
              
            
          
          # 查看git版本
git --version
# 查看git的安装路径
which git
        - 关于创建git仓库
 
            
            
              bash
              
              
            
          
          #我是创建到了桌面
cd Desktop;
#创建目录进入
mkdir gitCode;
cd gitCode;
#初始化git仓库为空仓库
git init;
        - git中配置用户名和邮箱
 
            
            
              bash
              
              
            
          
          #添加用户名和邮箱操作
git config user.name "用户名";
git config user.email "邮箱";
#取消用户名及邮箱
git config --unset user.name;
git config ==unset user.email;
#添加全球用户名和邮箱操作(global)
git config --global user.name "用户名";
git config --global user.email "邮箱";
#取消全局用户名及邮箱
git config --global --unset user.name;
git config --global --unset user.email;
#查看配置情况
git config -l;
#查看当前目录的绝对路径
pwd;
        配置别名
            
            
              bash
              
              
            
          
          #可以将status状态改为别名st
git config --global alias.st status
        
创建文件和修改文件内容
            
            
              bash
              
              
            
          
          #创建文件
touch statement;
#使用vim来编辑文件
vim statement;
#当进入vim进行编辑,当编辑好后通过esc来进入命令模式,通过:wq回车退出保存.
#查看文件内容
cat statement;
        将本地仓库的文件放到暂存区
            
            
              bash
              
              
            
          
          #将该工作区的所有文件添加到暂存区
git add .
#指定文件可以多个包
git add docu1 docu2;
        取消暂存
            
            
              bash
              
              
            
          
          # 这里是查看当前仓库的状态查看是否对文件有修改
#绿色为暂存区文件,红色为没有放入暂存区
git status;
# 取消暂存
git rm --cached docu1 docu2;
        查看修改后的文件
            
            
              bash
              
              
            
          
          # 这里是查看当前仓库的状态查看是否对文件有修改
git status;
# 查看工作区和暂存区的差异(当add后再次进行修改)绿色为改动部分内容
git diff docu1;
# 查看版本库和工作区文件的区别
git diff HEAD -- docu1;
        提交到版本库(commit)
            
            
              bash
              
              
            
          
          git commit -m "文件的描述信息"
        查看提交记录日志
            
            
              bash
              
              
            
          
          git log --pretty;
#两种都可以
git log --pretty=oneline;
        版本回退(git reset)
通过版本回退,返回到之前其他的版本
例如公司老板不喜欢这一版本,认为上一版本更好,这时候需要回退,拿到其他版本。
| 回退版本库的命令(git reset) | |
|---|---|
--soft | 
只回退版本库中的结果 | 
--mixed(默认选项) | 
对版本库以及暂存区的内容进行回退,不回退工作区 | 
--hard | 
回退所有区域的内容,慎用!可能会把版本消除 | 
HEAD | 
表示的是当前版本(在后面加^表示上一个版本) | 

这里如果我们清屏或者是关闭terminal后,找不到log中的记录的提交id,当我们需要恢复的时候,我们可以通过relog来查看,并重写回退(这里如果及时发现可能不会将id冲掉,如果冲掉则无法回滚了)。
撤销修改
| 操作 | 工作区 | 暂存区 | 版本库 | 撤销解决方式 | 
|---|---|---|---|---|
| docu | git checkout --[filename] | |||
| add | docu | docu | git reset | |
| commit | docu | docu | docu | 条件:commit 之后没有push操作,git reset --hard HEAD^ | 
工作区的解决方式
            
            
              bash
              
              
            
          
          git checkout -- doucu
        
工作区暂存区存在
            
            
              bash
              
              
            
          
          git reset HEAD^ docu
        
在没有push情况下commit之后
            
            
              bash
              
              
            
          
          git reset --hard HEAD^
        
删除版本库文件
方法1
            
            
              bash
              
              
            
          
          # 删除工作区的内容
rm docu
# 将工作区变动放到暂存区
git add douc #"要删除的文件名"
# 最后提交变动
git commit -m "珊瑚的文件"
        方法2
            
            
              bash
              
              
            
          
          #使用git rm可以将本地仓库和暂存区的指定文件一起删除 
git rm docu
#可以查看一下通过git status
#删除文件提交
git commit -m "删除文件"
        分支管理
HEAD通过指针指向主分支(默认分支master/main.c),目前在工作的分支。
这里我们可以通过
tree .git/来查看树下的分支情况
- 查看本地分支命令
 
            
            
              bash
              
              
            
          
          git brach
# 创建本地分支后面加分支名字
#新分支指向的最近提交的一次内容
git branch branch_name
        切换分支
            
            
              bash
              
              
            
          
          # 切换分支
git check docu
        
            
            
              bash
              
              
            
          
          # 这个是新建一个分支并进行切换
git checkout -b docu
        
这里切换后分支默认是最新提交的一次数据,如果修改后,则新分支指向最新修改的一次,父亲节点则是上一次的数据。
合并分支
将分支合并到主分支中
            
            
              bash
              
              
            
          
          #通过一下命令将分支合并
git merge branch_name
        
- 查看合并分支可视图情况
 
            
            
              bash
              
              
            
          
          git log --graph --abbrev-commit
        删除分支
这里的前提不允许在该删除的分支下进行删除此分支操作。
            
            
              bash
              
              
            
          
          git branch -d branch_name
#删除远程仓库的分支
git push origin --delete branch_name
        bug分支
当我们在分支进行开发时,主分支出现bug,这时候我们需要将分支stash到当前分支的树下,然后切换到主分支创建一个修复bug的分支,进而合并
            
            
              bash
              
              
            
          
          #将当前正在开发的代码藏到该分支下
git stash
#当我们的bug修复好后重写切换到开发的分支下通过以下恢复之前开发的代码
git stash list
git stash pop
        
当我们开发完成之后,提交到版本库中时,因为我们已经将主分支master和修复bug分支进行了合并,这时候我们的开发分支与其合并会产生冲突,因为开发分支并没有修复bug分支的代码。
这时候我们可以先从本地分支对master的分支先进行合并,在本地仓库进行修改并提交
            
            
              bash
              
              
            
          
          git merge --no-ff -m "merge information" master
        这时候切换到master分支在对本地分支进行合并
强制删除分支
如果删除不打算合并的分支
            
            
              bash
              
              
            
          
          git branch -D master
        远程仓库
克隆远程仓库
通过远程仓库克隆命令克隆到本地仓库中
            
            
              bash
              
              
            
          
          git clone https://gitee.com/christianward/remote-git-code.git
        origin作为我们的远程仓库的默认名字,可以进行查看通过
            
            
              bash
              
              
            
          
          # 查看远程仓库名
git remote 
# 查看远程仓库的权限
git remote -v
        
将本地仓库传入到远程仓库中(push)

拉取本地仓库的内容(pull)
当我们在开发中,有其他成员上传了新的数据,这时候我们需要从远程仓库中获取到数据,可以使用以下命令。
            
            
              bash
              
              
            
          
          git pull origin master:master
#如果本地分支和远程分支相同则直接通过
git pull origin master
        
编辑不想git追踪的文件
            
            
              bash
              
              
            
          
          vim. .gitignore
*.so
#这里如果创建.so文件并add时会忽略
git add manager.so
#强制添加忽略文件 -f,即可强制放入暂存区
git add -f manager.so
#也可以将.gitignore中添加不排除文件
!manager.so
        这里如果想要查询的文件为什么被忽略可以通过以下命令
            
            
              bash
              
              
            
          
          git check-ignore- v e.so
        标签功能
标签通过每次提交,对提交后的最近版本进行较重要的标识标记。
标记
            
            
              bash
              
              
            
          
          # 进行标记 tag后面内容为标记的名称
git tag J1.0
        查询命令
            
            
              bash
              
              
            
          
          git tag
        删除命令
            
            
              bash
              
              
            
          
          git tag -d tag_name
        对标记进行描述
            
            
              bash
              
              
            
          
           git tag -a tag_name -m "Discribe"
        查看标签的描述信息以及对应信息
            
            
              bash
              
              
            
          
          git show tag_name
        
推送指定标签至远程仓库
            
            
              bash
              
              
            
          
          git push origin tag_name
        

推送所有标签至远程仓库
            
            
              bash
              
              
            
          
          git tag origin --tag
        

本地中删除标签并推送远程仓库
            
            
              bash
              
              
            
          
          git tag -d tag_name
git  push origin :tag_name
        
安装tree的命令
            
            
              bash
              
              
            
          
          brew install tree
        




