美文网首页
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