zoukankan      html  css  js  c++  java
  • git使用(上)-----基本的方法

    git应该是一项必须要掌握的工具.先简述它和SVN的区别

    • SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了.
    • Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上.既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了.

    1. 配置文件

    • 查看配置的方法
      git config --list
    • 用户名和邮箱地址的作用
    • 用户名和邮箱地址是本地Git客户端的一个变量,不随git库而改变。
    • 每次commit都会用用户名和邮箱纪录。
    • github的contributions统计就是按邮箱来统计的。
    • 查看用户名和邮箱地址:
      git config user.name git config user.email
    • 修改用户名和邮箱地址:
      git config --global user.name "username" git config --global user.email "email"

    2. 基本使用

    • git中文件的各个状态

      • unstaged - git仓库中没有此文件的相关记录
      • modified - git仓库中有这个文件的记录,并且此文件当前有改动
      • staged - 追加,删除或修改的文件被暂时保存,这些追加,删除和修改并没有提交到git仓库 -------暂存区
      • commited - 追加或修改的文件被提交到本地git仓库(git仓库中大部分都是这种文件,所以git status不显示这些文件)-----仓库
    • 初始化一个仓库
      git init
      在当前文件夹下生成.git目录,完成初始化,此时此文件夹下的所有文件处于unstaged状态

    • 追加文件
      git add <filename>
      文件变为staged状态,其他文件还是unstaged状态

    • 提交到版本库
      git commit -m "your_index"

    • 管理修改
      要随时掌握工作区的状态,使用git status命令。
      如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

    • 撤销修改

      • 放弃工作区的修改------让这个文件回到最近一次git commit或git add时的状态。已经添加到暂存区的执行后恢复到添加到暂存区的状态
        git checkout -- file
      • 将暂存区的修改撤销掉--------执行完后记得工作区的修改并未执行,应该继续按上一条命令修改工作区
        git reset HEAD file
    • 删除文件

      • 误删了工作区的文件
        git status命令会立刻告诉你哪些文件被删除了,接着使用
        git checkout -- filename git checkout
        其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
      • 确实要删除文件. 版本库中删除该文件,那就用命令删掉,并且git commit:
        git rm <filename> git commit -m "your_index"
    • 版本回退
      - 回退回上一个版本
      git reset --hard HEAD^
      在Git中,用HEAD表示当前版本,也就是最新的提交3,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100.
      - 另一种方法是使用commit id. 使用命令 git log 查看历史记录 , 获取前面的一大串类似3628164...882e1e0的是commit id(版本号)
      使用命令进行任意版本的切换
      git reset --hard commit_id

      • 注对于查询版本号:
        穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
        要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

    3. 远程仓库

    • 测试环境ubuntu
      由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要进行设置
    • 创建SSHkey
      - 第1步
      ssh-keygen -t rsa -C "youremail@example.com"
      此过程中一路回车,使用默认值可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
      - 第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
    • 关联远程仓库
      git remote add origin git@server-name:path/repo-name.git
    • 推送至远程库
      由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
      git push -u origin master
      从现在起,只要本地作了提交,就可以通过命令:
      git push origin master
    • 从远程库克隆
      git clone git@server-name:path/repo-name.git
    1. 分支管理
    • 查看和切换分支
      git branch (查看所有的分支及当前处于哪个分支) git branch (查看所有的分支及当前处于哪个分支) git branch -v (查看所有的分支的详细信息) git branch --merged (查看已经合并的分支) git branch --no-merged (查看还没合并的分支) git checkout [branch-name] (切换到某个分支)
    • 新建分支
      git branch [branch-name] (新建一个分支) git checkout -b [branch-name] (创建+切换分支)
    • 删除分支
      git branch -d [branch-name] 或者 git branch -D [branch-name] (强制删除某个还未合并的分支)
    • 远程分支管理
      查看远程仓库:git remote -v //查看你当前项目远程连接的是哪个仓库地址。
      添加远程仓库:git remote add [name] [url]
      删除远程仓库:git remote rm [name]
      修改远程仓库:git remote set-url --push [name] [newUrl]
      拉取远程仓库分支:git pull [remoteName] [localBranchName]
      推送分支到远程仓库:git push [remoteName] [localBranchName]
      git push origin newline (origin是我本地的远程仓库的名字,对远程仓库的称呼, newline是本地将提交到远程的分支的名字)
      查看远程分支: git branch -r
    • 删除远程分支命令
      git push origin :remote_branch 或者 git push origin --delete remote_branch
    • 合并分支
      git merge [branch-name] git merge [branch-name]
      ex. 将分支btest合并到主分支master
      git checkout master git merge btest
    欢迎关注我的专属博客http://dyleaf.cn/
  • 相关阅读:
    Django cache (缓存)
    Django CSRF
    Django 中的 Cookie 和 Session
    Django views 中的装饰器
    Ajax 基础
    JavaScript 对象
    Django ORM 操作
    Django 视图
    Django 路由系统
    Django 模版语言
  • 原文地址:https://www.cnblogs.com/Dyleaf/p/7191332.html
Copyright © 2011-2022 走看看