zoukankan      html  css  js  c++  java
  • git 使用总结

    参考
     
    一、安装
    1. 从官网下载安装包 
     
    2. 查看命令: 
    1)查看是否安装git, 以及安装的版本
    $ git --version
    2)查看安装目录:
    $ which git
    二、安装完成后,设置账户
    $ git config --global user.name “Your name"
    $ git config --global user.email “email@exp.com"
    三、创建版本库
    1. 创建空目录
    $mkdir learngit
    $cd learngit
    $pwd
    pwd: linux 查看当前目录绝对路径
     
    2.将空目录变成git可管理仓库
    $git init
     
    Initialized empty Git repository in /Users/zmm/learngit/.git/
    .git是隐藏文件,可用 ls -ah 查看
     
    3.将文件添加到版本库(创建文件)
    只能跟踪记录文本文件的修改,因为文本文件有编码,图像、视频没有。
     
    将文件readme.txt 放到learnt目录(或子目录)下,其内容如下:
    Git is a version control system.
    Git is free software.
    1)把文件放到git仓库方式:
    $git add readme.txt
    (无显示)
    提交多个文件用空格隔开
    $git add file1 file2 file3
    提交所有变化(的文件)
    $git add -A #-A <=> -all, 是".""-u"功能命令的集合
    提交所有变化到暂存区,包括文件修改内容,新文件,不包括删除文件
    $git add .
    提交已经被add的文件(修改或删除文件,不包括新文件)
    $git add -u  #-u <=> -update
    2)把文件提交到仓库
    $git commit -m “wrote a read file"
    [master (root-commit) cb 926e7] wrote a readme file 
    1 file changed, 2 insertions(+)
    create mode 100644 readme.txt
    4.修改文件
    1)修改readme.txt->
    Git is a distributed version control system.
    Git is free software.
    2)查看修改
    $git status
    (能告诉状态:是否修改,但是不能告诉具体修改的信息)
     
    另外一种,查看difference
    $git diff
    查看最近两次提交之间有哪些文件有修改
    $git diff HEAD HEAD^ --stat
    3)提交修改
    与提交新文件一样
    $git add readme.txt
    $git commit -m “add distributed"
    4)撤销add修改
    仅从暂存区删除文件
    $ git rm --cached "filepath" 

    从暂存区删除文件 + 删除物理文件

    $ git rm --f "filepath"
    5.版本回退(已提交)
    1)修改readme.txt->
    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    2)提交, 与提交新文件一样
    $ git add readme.txt
    $ git commit -m "append GPL"
    3)查看日志
    $git log
    或
    $git log --pretty==oneline
    过滤除版本号及填写日志外的其他信息
     
    4)回退到上一个版本
    $git reset --hard HEAD^
    5)查看内容(linux命令)
    $cat readme.txt
    6)恢复至某版本
    $git reset --hard 3628164 (版本号不用写全,只用写前几位)
    7)查看每次提交的版本的版本号
    $git reflog
    6.管理修改
    将工作区修改放入暂存区
    $git add filename
    将暂存区修改提交
    $git commit -m “a log"
    查看git状态
    $git status
    查看文件内容
    $cat filename
    查看工作区与版本库最新版本区别
    $git diff HEAD -- readme.txt
    7.撤销修改(未提交)
    1)文件未add(添加至缓冲区),丢弃工作区修改
    $git checkout —— filename # 丢弃某个文件
    $git checkout ——. # 丢弃全部
    2)文件已add(添加至缓冲区),首先撤销缓冲区修改,然后丢弃工作区修改
    $git reset HEAD filename
    $git checkout — filename
    3)文件已commit到本地分支,但未git push到远程服务器
    $git log # 得到你需要回退一次提交的commit id
    $git reset --hard <commit_id> # 回到某个想要的版本
    $git reset --hard HEAD^ # 回到最新的一次提交(windows 下该命令后面需要再加^, 或者"head^"
    $git reset HEAD^ # 代码保留, 回到git add之前
    8.删除文件
    删除步骤
    • 工作区删除文件
    $rm readme.txt
    • 暂存区删除文件
    $git rm readme.txt
    • git版本库删除文件(提交)
    $git commit -m “remove readme.txt"
    删错恢复,恢复至最近的最新版本
    $git checkout --readme.txt
     
    9.远程仓库
    • 创建SSH Key
    $ssh -keygen -t rsa -C “my email@exp.com"
    • 登录github(将远程仓库建立在github,交由github托管)
     
    • 设置github 的SSH keys
    title任意
    key= /User/zmm/.ssh/id_ras.pub内容
     
    10.在本地添加远程仓库
     
    1)需要先在github创建版本库 ,然后根据相应命令行提示操作
     
    2)在本地添加远程仓库
    $ git remote add origin git@github.com:fortunely/learngit.git

    "git@github.com:fortunely/learngit.git"为自己在远程github创建版本库生成的仓库地址

     
    3)切换工作区间
    如果提示错误:
    fatal: Not a git repository (or any of the parent directories): .git
    是因为没有将当前工作区间切换到git工作区(用$git init初始化过)
     
    4)将内容推送到远程仓库
    第一次推送 master分支,加上-u ,git会把本地master推送至远程master新分支,并且关联起来
    $git push -u origin master
    后续推送
    $git push origin master
     
    11.从远程仓库克隆
    从远程仓库下载至本地
    SSH方式
    $git clone git$github.com:fortunely/gitskills.git
     
    HTTPS方式
    $git clone https://github.com/fortunely/datastructure.git
    12.创建合并分支
    1)创建dev分支,然后切换到dev分支
    $git checkout -b dev
    相当于
    $git branch dev
    $git checkout dev
    2)查看当前分支, 带*表示当期分支
    $git branch
     
    3)修改文件->提交
    $git add readme.txt
    $git commit -m “branch test"
    4)合并指定分支到当前分支
    $git merge dev
    5)删除分支
    $git branch -d dev
    13.解决冲突
    1)创建新分支feature1
    $git checkout -b feature1
    2)修改文件->添加并提交
    $git add readme.txt
    $git commit -m “AND simple"
    3)切换至master分支
    $git checkout master
    4)修改文件->添加并提交(与上一次修改不同)
    $git add readme.txt
    $git commit -m “& simple"
    5)合并分支
    $git merge feature1
    导致冲突产生文件用
    <<<<<<< HEAD
     
    =======
     
    >>>>>>> feature1
    标记出了不同分支内容, 修改这些标记的内容,然后保存,再提交
    $git add readme.txt
    $git commit -m “conflict fixed"
    6)查看分支合并情况
    $ git log --graph --pretty=oneline --abbrev-commit
    或者
    $ git log --graph
    删除feature1分支
    $git branch -d feature1
    14.分支管理
    1)禁用Fast forward模式,因为这种模式下删除分支后,会丢掉分支信息;禁用ff模式,merge时产生新commit
     
    2)创建并切换分支dev
    $git checkout -b dev
    3)修改文件->提交
    $git add readme.txt
    $git commit -m “add merge"
    4)切换回master分支
    $git checkout master
    5)准备合并dev分支,同时禁用fast forward
    $git merge --no-ff -m “merge with no-ff” dev

    -m 参数的意思是创建一个新的commit

     
    6)查看分支历史
    $git log --graph --pretty=oneline --abbrev-commit
    7)分支使用策略
    master作为稳定版本
    dev分支作为开发版本,不稳定
    每个开发者都在dev分支上干活,并且有自己分支
     
     
     
     
     
     
     
     
  • 相关阅读:
    PatentTips
    PatentTips
    PatentTips
    PatentTips
    PatentTips
    PatentTips
    PatentTips
    PatentTips
    How to build and run ARM Linux on QEMU from scratch
    How to debug Android Native Application with eclipse
  • 原文地址:https://www.cnblogs.com/fortunely/p/14877716.html
Copyright © 2011-2022 走看看