zoukankan      html  css  js  c++  java
  • Git的安装和使用记录

    Git是目前世界上最先进的分布式版本控制系统(没有之一),只用过集中式版本控制工具的我,今天也要开始学习啦。廖雪峰的git教程我觉得很详细了,这里记录一下步骤以及我终于学会用Markdown了,真的是好学又好用。

    安装Git

    下载安装包git for windows,直接默认选项安装。
    安装完成后,在开始菜单里找到“Git”->“Git Bash”,会弹出一个命令窗口,继续配置。

    $ git config --global user.name "Name"
    $ git config --global user.email "email address"
    

    git config命令的--global参数表示你这台机器上所有的Git仓库都会使用这个配置。

    创建版本库repository和文件添加修改删除

    1. 我在D盘创建了一个空目录learngit
    $ cd d:
    $ mkdir learngit
    $ pwd
    Administrator@OEM-20121127FJC MINGW32 /d/learngit (master)
    

    pwd命令用于显示当前目录。master是Git自动创建的第一个分支branch,有一个指针HEAD指向master
    2. 通过git init命令初始化Git仓库,把这个目录变成Git可以管理的仓库。

    $ git init
    
    1. 编写一个txt文件添加到目录下,把文件添加到仓库需要两步
      • $ git add file将文件添加到暂存区Stage,可添加多个文件。
      • $ git commit -m "本次提交的说明"将暂存区的文件提交到当前分支,-m后面输入的是本次提交的说明,有助于查看更新记录。
    2. git status可以查看仓库当前状态,git diff file可以查看修改内容。
      提交修改和提交新文件是一样的步骤。
    3. git log命令可以查看提交日志,用来确定回滚版本。
    4. HEAD表示当前版本,HEAD^表示上一个版本,往上i个版本表示为HEAD~i。 回滚操作为:
    $ git reset --hard HEAD^
    
    1. git reflog可以查看命令日志,以便回滚操作之后需要再回到新的版本。通过commit id回到需要的版本。
    $ git reset --hard commitID
    
    1. git checkout --file可以撤销修改,有以下两种情况:
      • 工作区文件修改后没有放到暂存区,撤销修改则回到和版本库一模一样的状态;
      • 工作区文件修改后已经添加到暂存区,之后有改动,撤销修改则回到和暂存区一样的状态。此时如果要丢弃修改,首先使用git reset HEAD file命令把暂存区的修改撤销掉,将暂存区文件放回工作区,然后回到第一种情况。

    对于已经提交到版本库的修改,需要使用回滚操作。
    9. 删除文件的两种情况:
    + 从版本库中删除文件,使用git rm file命令并git commit
    + 在工作区误删的文件,可以从版本库恢复git checkout --file。虽然可以恢复,但是只能是恢复最近一次提交的文件。

    github远程仓库

    关联远程库

    git是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置。

    1. 使用cd ~/.ssh查看是否已经有ssh密钥,没有则使用如下命令生成密钥:
    $ ssh-keygen -t rsa -C "email address"
    
    1. 按三个回车,密码为空,最后得到了两个文件:私钥id_rsa和公钥id_rsa.pub
    2. 登陆GitHub,打开“Account settings”,“SSH and GPG Keys”页面add ssh key,Key文本框里贴上公钥的内容。
    3. 在GitHub创建一个Git仓库learngit
    4. 在本地的learngit仓库下运行命令,添加后,远程库的名字就是origin:
    $ git remote add origin git@github.com:github用户名/learngit.git
    
    1. 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程,第一次推送master分支时,加上-u参数将本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    $ git push -u origin master
    

    之后使用$ git push origin master即可。可以通过git push --help查看命令帮助。

    克隆远程库

    $ git clone git@github.com:github用户名/仓库名.git

    分支

    分支的创建、合并、删除

    $ git branch branch_name  //创建分支
    $ git checkout branch_name  //切换分支
    $ git checkout -b branch_name  //创建并切换到branch_name分支
    $ git branch  //查看所有分支,当前分支前面带*
    $ git merge branch_name   //合并branch_name分支到当前分支
    $ git branch -d branch_name  //删除分支
    

    冲突

    当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

    $ git log --graph命令可以看到分支合并图。

    bug分支

    修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

    当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

    $ git stash
    $ git stash list  //查看保存的工作现场
    $ git stash apply  //恢复
    $ git stash drop  //删除stash内容
    $ git stash pop  //恢复并删除stash内容
    

    feature分支

    开发一个新feature,最好新建一个分支;

    如果要丢弃一个没有被合并过的分支,可以通过$ git branch -D branch_name强行删除。

    多人协作

    多人协作的工作模式通常是这样:

    • 首先,可以试图用$ git push origin branch_name推送自己的修改;

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

    • 如果合并有冲突,则解决冲突,并在本地提交;

    • 没有冲突或者解决掉冲突后,再用 $ git push origin branch_name推送就能成功!

    • 如果$ git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令$ git branch --set-upstream branch_name origin/branch_name建立本地分支和远程分支的关联。

  • 相关阅读:
    Android Stuido无法下载jcenter库
    android studio的Gradle一直在sync的办法
    mysql dual表的用途及案例
    编码-解码
    循环神经网络RNN
    项目中遇到的chrome 浏览器跨域方案
    angular 不同组件间通过service传递数据
    angular -moment.js瘦身
    windows10电脑共享文件问题记录
    解决vue本地构建热更新卡顿的问题“75 advanced module optimization”解决方案
  • 原文地址:https://www.cnblogs.com/czzaiba/p/5813107.html
Copyright © 2011-2022 走看看