git是Linux创始人通过内核开发而创作的分布式版本的控制系统,而我们作为开发者需要开发与维护,避免不了版本的迭代和更新,git就是用来保存修改删除等操作的工具,可以记录代码改动情况,它能够保存代码的每个版本,每个版本文件中修改和删除git都会跟踪,通过追踪的方式使得开发者能够更有效率的获取到之前的版本,让开发的效率提高。
这里的HEAD指针指向master
通过 cat .git/HEAD查看
文章目录
- 查看git是否安装以及配置
- 配置别名
- 创建文件和修改文件内容
- 将本地仓库的文件放到暂存区
- 取消暂存
- 查看修改后的文件
- 提交到版本库(commit)
- 查看提交记录日志
- 版本回退(git reset)
- 撤销修改
- 工作区的解决方式
- 工作区暂存区存在
- 在没有push情况下commit之后
- 删除版本库文件
- 方法1
- 方法2
- 分支管理
- 切换分支
- 合并分支
- 删除分支
- bug分支
- 强制删除分支
- 远程仓库
- 克隆远程仓库
- 将本地仓库传入到远程仓库中(push)
- 拉取本地仓库的内容(pull)
- 编辑不想git追踪的文件
- 标签功能
查看git是否安装以及配置
- git版本
# 查看git版本
git --version
# 查看git的安装路径
which git
- 关于创建git仓库
#我是创建到了桌面
cd Desktop;
#创建目录进入
mkdir gitCode;
cd gitCode;
#初始化git仓库为空仓库
git init;
- git中配置用户名和邮箱
#添加用户名和邮箱操作
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;
配置别名
#可以将status状态改为别名st
git config --global alias.st status
创建文件和修改文件内容
#创建文件
touch statement;
#使用vim来编辑文件
vim statement;
#当进入vim进行编辑,当编辑好后通过esc来进入命令模式,通过:wq回车退出保存.
#查看文件内容
cat statement;
将本地仓库的文件放到暂存区
#将该工作区的所有文件添加到暂存区
git add .
#指定文件可以多个包
git add docu1 docu2;
取消暂存
# 这里是查看当前仓库的状态查看是否对文件有修改
#绿色为暂存区文件,红色为没有放入暂存区
git status;
# 取消暂存
git rm --cached docu1 docu2;
查看修改后的文件
# 这里是查看当前仓库的状态查看是否对文件有修改
git status;
# 查看工作区和暂存区的差异(当add后再次进行修改)绿色为改动部分内容
git diff docu1;
# 查看版本库和工作区文件的区别
git diff HEAD -- docu1;
提交到版本库(commit)
git commit -m "文件的描述信息"
查看提交记录日志
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^ |
工作区的解决方式
git checkout -- doucu
工作区暂存区存在
git reset HEAD^ docu
在没有push情况下commit之后
git reset --hard HEAD^
删除版本库文件
方法1
# 删除工作区的内容
rm docu
# 将工作区变动放到暂存区
git add douc #"要删除的文件名"
# 最后提交变动
git commit -m "珊瑚的文件"
方法2
#使用git rm可以将本地仓库和暂存区的指定文件一起删除
git rm docu
#可以查看一下通过git status
#删除文件提交
git commit -m "删除文件"
分支管理
HEAD通过指针指向主分支(默认分支master/main.c),目前在工作的分支。
这里我们可以通过tree .git/
来查看树下的分支情况
- 查看本地分支命令
git brach
# 创建本地分支后面加分支名字
#新分支指向的最近提交的一次内容
git branch branch_name
切换分支
# 切换分支
git check docu
# 这个是新建一个分支并进行切换
git checkout -b docu
这里切换后分支默认是最新提交的一次数据,如果修改后,则新分支指向最新修改的一次,父亲节点则是上一次的数据。
合并分支
将分支合并到主分支中
#通过一下命令将分支合并
git merge branch_name
- 查看合并分支可视图情况
git log --graph --abbrev-commit
删除分支
这里的前提不允许在该删除的分支下进行删除此分支操作。
git branch -d branch_name
#删除远程仓库的分支
git push origin --delete branch_name
bug分支
当我们在分支进行开发时,主分支出现bug,这时候我们需要将分支stash到当前分支的树下,然后切换到主分支创建一个修复bug的分支,进而合并
#将当前正在开发的代码藏到该分支下
git stash
#当我们的bug修复好后重写切换到开发的分支下通过以下恢复之前开发的代码
git stash list
git stash pop
当我们开发完成之后,提交到版本库中时,因为我们已经将主分支master和修复bug分支进行了合并,这时候我们的开发分支与其合并会产生冲突,因为开发分支并没有修复bug分支的代码。
这时候我们可以先从本地分支对master的分支先进行合并,在本地仓库进行修改并提交
git merge --no-ff -m "merge information" master
这时候切换到master分支在对本地分支进行合并
强制删除分支
如果删除不打算合并的分支
git branch -D master
远程仓库
克隆远程仓库
通过远程仓库克隆命令克隆到本地仓库中
git clone https://gitee.com/christianward/remote-git-code.git
origin作为我们的远程仓库的默认名字,可以进行查看通过
# 查看远程仓库名
git remote
# 查看远程仓库的权限
git remote -v
将本地仓库传入到远程仓库中(push)
拉取本地仓库的内容(pull)
当我们在开发中,有其他成员上传了新的数据,这时候我们需要从远程仓库中获取到数据,可以使用以下命令。
git pull origin master:master
#如果本地分支和远程分支相同则直接通过
git pull origin master
编辑不想git追踪的文件
vim. .gitignore
*.so
#这里如果创建.so文件并add时会忽略
git add manager.so
#强制添加忽略文件 -f,即可强制放入暂存区
git add -f manager.so
#也可以将.gitignore中添加不排除文件
!manager.so
这里如果想要查询的文件为什么被忽略可以通过以下命令
git check-ignore- v e.so
标签功能
标签通过每次提交,对提交后的最近版本进行较重要的标识标记。
标记
# 进行标记 tag后面内容为标记的名称
git tag J1.0
查询命令
git tag
删除命令
git tag -d tag_name
对标记进行描述
git tag -a tag_name -m "Discribe"
查看标签的描述信息以及对应信息
git show tag_name
推送指定标签至远程仓库
git push origin tag_name
推送所有标签至远程仓库
git tag origin --tag
本地中删除标签并推送远程仓库
git tag -d tag_name
git push origin :tag_name