美文网首页
Git 笔记

Git 笔记

作者: tingshuo123 | 来源:发表于2018-10-26 16:13 被阅读8次

初始化 Git 仓库进入要作为为仓库的目录中,使用 git init 命令。
添加文件到Git仓库,分两步:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个需要提交的文件;
  2. 使用命令git commit -m <提交说明>,完成。

可以用 git status 查看工作区状态
如果通过 git status 查看到文件被修改过,可以用 git diff 查看修改内容

git log 可以查看提交历史,git log --pretty=oneline 可以查看简略的提交历史

tingshuo@LAPTOP-KIJFOIBO:~/learngit$ git log --pretty=oneline
234aac68f318a8373a546a976725252e1635ad28 (HEAD -> master) 添加 GPL
94443bff3384487b97e4d0af54aec88130f543c8 添加了 distrbuted
a08cd779d1bc1da4e70625f5543482037eab708e 添加了两行内容

其中前面的一长串是版本号,版本号后面的是提交说明
知道了版本号我们就使用git reset --hard 版本号 命令,可以回滚至任意版本,

tingshuo@LAPTOP-KIJFOIBO:~/learngit$ git reset --hard 234aac
HEAD is now at 234aac6 添加 GPL

HEAD 指的是当前版本,
还可以用 gitreflog 查看历史命令。

GIT 的名词解释:

  • 工作区(Working Directory)
    就是我们在电脑中正常的目录。

  • 版本库(Repository)
    工作区有一个隐藏目录 .git,这就Git的版本库。

    image
    其中版本库中的 stage 是暂存区,还有分支master

git add 命令其实是把修改的文件添加导暂存区;

add命令

git commit命令把暂存区的所有内容提交到当期分支;

commit命令

git add 命令其实就是把工作区文件的修改放到暂存区(Stage),然后,执行git commit命令暂存区的所有修改提交到分支。

Git跟踪并管理的是修改,而非文件,每次修改,如果不用git add到暂存区。那么使用 commit 提交时就不会把修改添加到分支 master

如果你修改了文件,想放弃修改时,可以使用放弃工作区修改命令:git checkout -- 文件名

如果你不但改了,还提交到了 暂存区时,想要放弃修改,你需要执行两个命令,首先要放弃暂存区修改git reset HEAD 文件名,然后放弃工作区修改:git checkout -- 文件名

git checkout 命令的作用其实是:用版本库里的版本替换工作区的版本。

git rm 文件名 从工作区删除文件,并将删除修改提交到暂存区,其后可以用 git commit -m "提交说明" 将修改提交到仓库。

如果是用文件管理器或者Liunx命令误删了,可以用 git checkout -- 文件名从远程仓库恢复

远程仓库

创建 SSH Key 命令(Linux在Shell中输入 Windows 在 Git Bash 中输入):
ssh-keygen -t rsa -C "xxx@xxx.com"
用自己的邮箱, 一路按回车使用默认值就可以了,会在用户家目录下生成 .ssh 目录,目录下有 id_rsa(密钥),id_rsa.pub(公钥),连个文件。

登录 Gitee 在个人设置中的SSH设置添加公钥,名字随便命名,将刚刚生成的 id_rsa.pub 里的文本内容输入保存即可。

添加一个远程仓库 git remote <远程仓库名> <远程仓库地址>, 如 git remote add gitee git@gitee.com:tingshuo123/learngit.git, 远程仓库可以有多个,名字不相同即可。

提交到远程仓库git push gitee master
如果提交时发生以下错误:

image.png
是文件冲突了,可以先拉下来合并
git pull origin master

再上传

git push gitee master

这样会保留冲突的文件。

也可以用强制推送,只是这样会舍弃远程仓库的冲突文件

git push origin master -f

分支

创建分支并切换到分支:git checkout -b devgit checkout 加参数 -b 表示创建。相当于下面两个命令:

创建分支:git branch 分支名
切换分支:git checkout 分支名

查看分支:git branch,前面带*号的表示当前分支

合并分支:git merage 分支名,将指定分支合并到当前分支。

删除分支:git branch -d 分支名

如果Git无法自动合并分支时,看可以手动解决冲突再提交,解决冲突就是把Git合并失败的文件手动编辑成我们需要的内容,然后提交。

查看分支合并图:git log --graph --pretty=oneline --abbrev-commit

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以团队合作分支因该是这样的:

分支图

储存当前工作区:git stash
查看储存的工作区:git stash list
恢复储存的工作区:git stash apply
删除工作区:git stash drop
恢复同时删除工作区:git stash pop
如果有多个,恢复指定工作区

相关文章

网友评论

      本文标题:Git 笔记

      本文链接:https://www.haomeiwen.com/subject/oacltqtx.html