zoukankan      html  css  js  c++  java
  • Git常用命令及操作

    Git常用命令及操作

    环境配置

    设置用户名称和email

    git config --global user.name "tom"
    git config --global user.email "tom@test.com"
    

    每次Git提交都会使用该用户信息。

    查看配置信息

    # 查看所有配置信息
    git config -l
    
    # 查看全局用户配置
    git config --global --list
    
    # 查看系统配置
    git config --system --list
    

    C:UsersAdministrator.gitconfig 查看登录用户的配置 --global全局

    D:Gitetcgitconfig Git安装目录下 --system系统

    获取Git仓库

    获取Git仓库通常有两种方式:

    • 在本地初始化一个Git仓库

    • 从远程仓库克隆

    创建本地git 仓库

    # 创建目录
    mkdir [projectName]
    cd [projectName]
    
    # 初始化仓库
    git init
    

    远程仓库克隆

    git clone [url]

    工作目录、暂存区以及版本库概念

    • Workspace:工作区,就是你平时存放项目代码的地方
    • Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
    • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
    • Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

    文件的四种状态

    概念

    untracked 未跟踪(未被纳入版本控制)

    tracked 已跟踪(被纳入版本控制)

    • Unmodified 未修改状态

    • Modified 已修改状态

    • Staged 已暂存状态

    Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

    Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

    Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !

    Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

    文件状态操作

    # 查看文件状态
    git status
    
    # 查看文件状态(输出信息更加简洁)
    git status –s
    
    # 将未跟踪的文件加入暂存区
    git add [filename]
    
    # 添加所有文件到暂存区
    git add .
    
    # 将暂存区的文件取消暂存
    git reset [filename]
    
    # 提交暂存区中的内容到本地仓库 -m 提交信息
    git commit -m "消息内容" 
    
    # 删除本地仓库文件
    git rm [filename]
    
    # 查看日志记录
    git log
    

    .gitignore忽略文件

    在主目录下建立".gitignore"文件,此文件有如下规则:

    1. 忽略文件中的空行或以井号(#)开始的行将会被忽略。
    2. 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
    3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
    4. 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
    5. 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
    #为注释
    *.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
    !lib.txt     #但lib.txt除外
    /temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp
    build/       #忽略build/目录下的所有文件
    doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
    

    远程仓库操作

    查看远程仓库

    # 查看远程仓库(默认origin)
    git remote 
    
    # 显示所有远程仓库
    git remote -v
    
    # 添加远程仓库
    git remote add [remote-name] [url]
    
    # 移除无效的远程仓库
    git remote rm [remote-name]
    

    注意:git remote rm [name]只是从本地移除远程仓库的记录,并不会真正影响到远程仓库

    从远程仓库中抓取与拉取

    git fetch origin [branch-name]是从远程仓库获取最新版本到本地仓库,不会自动merge。

    git pull origin [branch-name]是从远程仓库获取最新版本并merge到本地仓库。

    注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories

    推送到远程仓库

    git push [remote-name][branch-name] 可以将其推送到远程仓库。

    例如:git push origin master 推送master主分支到远程仓库.

    Git分支

    Git 的master分支并不是一个特殊分支。 它跟其它分支没有区别。 之所以几乎每一个仓库都有 master 分支,是因为git init 命令默认创建它。

    # 列出所有本地分支
    git branch
    
    # 列出所有远程分支
    git branch -r
    
    # 列出所有本地分支和远程分支
    git branch -a
    
    # 新建一个分支,但依然停留在当前分支
    git branch [branch-name]
    
    # 新建一个分支,并切换到该分支
    git checkout -b [branch-name]
    
    # 推送至远程仓库分支 
    git push origin [branch-name]
    
    # 合并指定分支到当前分支
    git merge [branch-name]
    
    # 删除分支
    git branch -d [branch-name]
    
    # 删除远程分支
    git push origin --delete [branch-name]
    git branch -dr [remote/branch]
    

    合并分支: 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没办法合并它们,同时会提示文件冲突。此时需要我们打开冲突的文件并修复冲突内容,最后执行git add命令来标识冲突已解决

    删除分支: 如果要删除的分支中进行了一些开发动作,此时执行上面的删除命令并不会删除分支,如果坚持要删除此分支,可以将命令中的-d参数改为-D

    master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

    Git标签

    # 列出所有tag
    git tag
    
    # 新建一个tag在当前commit
    git tag [tag]
    
    # 新建一个tag在指定commit
    git tag [tag] [commit]
    
    # 删除本地tag
    git tag -d [tag]
    
    # 删除远程tag
    git push origin :refs/tags/[tagName]
    
    # 查看tag信息
    git show [tag]
     
    # 提交指定tag
    git push [remote] [tag]
     
    # 提交所有tag
    git push [remote] --tags
    
    # 新建一个分支,指向某个tag
    git checkout -b [branch] [tag]
    
  • 相关阅读:
    05.Linux Startup & Shutdown
    04.Linux Disk Partition & Mount Point
    03Oracle数据查询(二)
    02Oracle数据查询(一)
    01Oracle数据库系统环境搭建
    02域名的选择技巧与注册实战
    01快速认识阿里云网站建设
    Linux文件操作
    Linux目录操作
    Linux根目录介绍
  • 原文地址:https://www.cnblogs.com/liulyuan/p/13983010.html
Copyright © 2011-2022 走看看