zoukankan      html  css  js  c++  java
  • zzGiti学习心得

    什么是Git

    • Git 是分布式版本控制系统。
    • CVS 和 SVN 是集中式的版本控制系统。
    • 集中式版本控制系统,版本库是集中存放在中央服务器里,必须联网才能工作。
    • 分布式版本控制系统的安全性要高些,每个人电脑里都有完整的版本库,不需要联网。
    • 安装 Git 后,使用 git config 配置信息,使用 --global 参数,表示该机器上所有的 Git 仓库都使用这个配置。
    
     
    
     

    创建版本库

    • 版本库:仓库(repository),可理解成一个目录,Git 管理该目录下所有文件。
    • 初始化一个仓库:git init 把当前的目录变成 Git 可以管理的仓库,空仓库。
    • 添加文件到 Git 仓库,两步骤:
      • git add file   // file 表示文件名,可添加多个 (git add . 匹配所有文件)
      • git commit -m "xxx" // xxx 表示提交内容信息,最好有意义,便于查看

    查看工作区的状态

    • git status 查看仓库当前的状态。
    • git diff 查看修改内容,如 git diff file.txt 查看 file.txt 修改内容。

    版本回退

    • git log 显示从最近到最远的提交日志,嫌输出信息太多,可以加上 --pretty=oneline 参数。
    • git reset --hard HEAD^ 回退上一个版本,HEAD 指向的版本是当前版本,HEAD^ 上一个版本,HEAD^^ 上上一个版本。
    • git reset --hard commit_id 指定回到未来的某个版本,其中commit_id表示你要回到未来那个版本的id。
    • git reflog 查看命令历史,记录版本对应的 commit_id。

    工作区和暂存区

    • 工作区:电脑里能看到的目录。
    • 版本库:工作区中有一个隐藏的目录 .git,它就是 Git 的版本库。
    • Git 的版本库包括 stage 的暂存区,Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针 HEAD
    • 使用 git add 只是把文件提交到暂存区,然后使用 git commit 命令,才是真正把暂存区的所有内容都提交到当前分支。

    管理修改

    • git diff HEAD -- file 可以查看工作区和版本库里面最新版本的区别。
    • 每一次修改,必须先使用 git add 提交到暂存区,要不然不会加入到 commit 中。

    撤销修改

    • git checkout -- file 把 file 文件在工作区的修改全部撤销。
    • 如果使用了 git add到暂存区,没有 commit,可以用命令 git reset HEAD file 把暂存区的修改撤销掉,重新放回工作区;再使用撤销修改命令。

    删除文件

    • 命令 git rm file 用于删除文件 file。

    远程仓库

    • GitHub 提供 Git 仓库托管服务。
    • 本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的。
    • 步骤一:创建 SSH Key:ssh-keygen -t rsa -C "steveLau@github.com" (Windows 下打开 Git Bash); 用户主目录里找到 .ssh 目录,里面有 id_rsa(私钥) 和 id_rsa.pub(公钥) 两个文件。
    • 步骤二:在 GitHub 里,添加 “SSH Key”,在 Key 文本框里粘贴 id_rsa.pub 文件的内容。

    添加远程仓库

    • 本地已经创建一个 Git 仓库后,又想在 GitHub 创建一个 Git 仓库,并且让这两个仓库进行远程同步。
    • 步骤一:在 GitHub 上新建一个仓库 Git-GitHub,复制SSH:git@github.com:steveLauwh/Git-GitHub.git。
    • 步骤二:在本地的仓库下运行命令:git remote add origin git@github.com:steveLauwh/Git-GitHub.git,关联远程仓库。
    • 步骤三:把本地库的所有内容推送到远程库上:git push -u origin master
    • 以后只要本地提交 git push origin master,就可以把本地 master 分支的最新修改推送到 GitHub。

    从远程库克隆

    • 远程库已经准备OK,使用 git clone 克隆一个本地库,如:git clone git@github.com:steveLauwh/Git-GitHub.git
    • Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

    从远程库更新到本地库

    • git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master
    • git log -p master.. origin/master //比较本地的仓库和远程参考的区别
    • git merge origin/master //把远程下载下来的代码合并到本地仓库,远程的和本地的合并

    创建与合并分支 (看作指针的移动)

    • master 分支为 Git 主分支,HEAD 指向当前分支。
    • 创建 dev 分支,然后切换到 dev 分支上: git checkout -b dev;等同于以下两条命令:创建分支 git branch dev 和 切换分支 git checkout dev
    • git branch 列出所有分支,当前分支前面会标有一个 * 号。
    • 步骤一:git checkout master 切换回 master 分支。
    • 步骤二:git merge dev 将 dev 分支的内容合并到 master 分支上。
    • 步骤三:git branch -d dev 合并完成后,将 dev 分支删除。

    解决冲突

    • 当 Git 无法自动合并分支时,就必须首先手动解决冲突。解决冲突后,再提交,合并完成。
    • git log --graph 查看分支合并图。

    分支管理策略

    • master 分支应该是非常稳定的,仅用来发布新版本,平时不能再上面干活。
    • 使用 git merge 命令合并分支时,加上 --no-ff 参数,表示禁用 Fast forward,合并后的历史有分支。
    
     

    Bug 分支

    • git stash 将当前工作现场“存储”起来,等以后恢复现场后继续工作。
    • git stash list 查看工作现场存储位置。
    • Git 把 stash 内容存在某个地方,恢复有两个办法:
      • 用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除
      • 用git stash pop,恢复的同时把stash内容也删了

    Feature 分支

    • 开发一个新 feature,最好新建一个分支。
    • 如果要丢弃一个没有被合并过的分支,可以通过 git branch -D 分支名 强行删除。

    多人协作 (*)

    • git remote 查看远程库的信息。

    • git remote -v 显示更详细的信息。

    • 步骤一:用git push origin branch-name推送自己的修改。

    
     
    • 步骤二:如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并。

    • 步骤三:如果合并有冲突,则解决冲突,并在本地提交。

    • 步骤四:如果没有冲突或解决,再执行步骤一进行推送。

    • 另外,git pull 提示“no tracking information”,那么使用在本地创建分支和远程分支链接关系没有创建, 使用 git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致。

    
     

    标签管理

    • 发布一个版本时,通常先在版本库上打一个标签 tag,这样就可以确定打标签时刻的版本。
    • tag 就是一个让人容易记住的有意义的名字,它跟某个 commit 绑在一起。

    创建标签

    • git tag <name> 就可以打一个标签。
      
       
    • git tag 查看所有标签。
    • 找历史提交的commit id:git log --pretty=oneline --abbrev-commit
    • 当忘了打标签,找到历史的 commit id,然后使用 git tag <name> commit-id
      
       
    • git show <tagname> 查看标签信息。
    • git tag -a <tagname> -m "xxxxx"可以指定标签信息。
    • git tag -s <tagname> -m "xxxxx"可以用PGP签名标签。

    操作标签

    • git push origin <tagname> 可以推送一个本地标签。
    • git push origin --tags 可以推送全部未推送过的本地标签。
    • git tag -d <tagname> 可以删除一个本地标签。
    • 先删除本地标签,再 git push origin :refs/tags/<tagname> 可以删除一个远程标签。
      
       

    使用 GitHub

    • 参与各种开源项目。
    • 步骤一:在 GitHub 上,可以任意 Fork 开源仓库,然后从自己的账号下 git clone。
    • 步骤二:在本地进行修改,利用 Git 推送到 GitHub 上
    • 步骤三:在 GitHub 上发起 pull request 给官方仓库来贡献代码。

    自定义 Git

    • git config --global color.ui true 命令输出不同颜色。
    • 编写 .gitignore 文件的作用是让 Git 忽略特殊文件。
    • 所有配置文件可以直接在线浏览:https://github.com/github/gitignore。
    • .gitignore 文件本身要放到版本库里,并且可以对 .gitignore 做版本管理。
    • 配置别名
      • 当前用户的 Git 配置文件放在用户主目录下的一个隐藏文件 .gitconfig 中。
      • 每个仓库的Git配置文件都放在.git/config文件中。

    在 README.md 中插入图片

    在 GitHub 中使用 README.md 文件,这是一个 Markdown 文件,该文件中插入图片是有一定的格式。

    https://github.com/用户名/repository仓库名/raw/分支名master/图片文件夹名称/***.png or***.jpg

  • 相关阅读:
    VysorPro助手
    Play 2D games on Pixel running Android Nougat (N7.1.2) with Daydream View VR headset
    Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset
    Native SBS for Android
    ADB和Fastboot最新版的谷歌官方下载链接
    How do I install Daydream on my phone?
    Daydream Controller手柄数据的解析
    蓝牙BLE传输性能及延迟分析
    VR(虚拟现实)开发资源汇总
    Android(Java)控制GPIO的方法及耗时分析
  • 原文地址:https://www.cnblogs.com/cx2016/p/12926157.html
Copyright © 2011-2022 走看看