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

    1. 创建版本库

    初始化一个Git仓库,使用 git init 命令

    添加文件到Git仓库,分两步:

    • 第一步,使用命令 git add <file>,注意,可反复多次使用,添加多个文件;

    • 第二步,使用命令 git commit ,完成。

    注意:

    • git add <file> 可以添加单个文件到暂存区;git add -A 可以添加所有改动文件到暂存区

    • git commit -m "xxx" 可以提交所有暂存区文件到分支;同样,该操作也可以使用 git commit -a 命令来执行

    2. 时光机穿梭

    使用 git status 命令可以查看当前仓库状态

    使用 git diff 命令可以仓库前后修改的内容

    2.1 版本回退与回退后复位

    2.1.1 版本回退

    • git log 命令显示从最近到最远的提交日志,里面包含提交说明和版本id

    • git log --pretty=oneline 可以查看简化后的提交日志

    • git log --pretty=oneline --abbrev-commit 可以查看最简提交日志

    那么,版本回退需要使用 git reset 命令

    • git reset --hard HEAD^ 回退到上一个版本

    • git reset --hard HEAD^^ 回退到上上一个版本

    • git reset --hard HEAD~100 回退到前100个版本

    2.1.2 回退后复位

    • git reflog 命令记录你的每一次命令,以此可查看每次的版本id

    版本复位依然需要使用到 git reset 命令

    • git reset --hard 8888888

    2.2 撤销修改

    2.2.1 撤销工作区修改

    git checkout -- file 用于撤销工作区修改

    例如: git checkout -- readme.txt 撤销readme.txt文件在工作区的修改

    git checkout -- file
    命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令

    2.2.2 撤销暂存区修改

    git reset HEAD file 用于撤销暂存区修改

    例如: git reset HEAD readme.txt 撤销readme.txt文件在暂存区的修改,重新放回工作区

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

    2.3 删除文件

    删除工作区文件 test.txt 后,使用 git rm test.txt 可以继续从版本库删除该文件

    删除工作区文件 test.txt 后,使用 git checkout -- test.txt 可以从版本库恢复该文件至工作区

    3. 远程仓库

    3.1 先本地,后远程

    首先创建本地仓库,然后创建远程仓库,最后将两者关联起来

    1. 远程仓库创建好后,在本地仓库下运行如下命令

    git remote add origin git@github.com:michaelliao/learngit.git

    2. 下一步,就可以把本地库的所有内容推送到远程库上

    git push -u origin master

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

    3.2 先远程,后本地

    使用克隆命令直接克隆远程库即可

    git clone git@github.com:michaelliao/gitskills.git

    4. 分支管理

    4.1 创建与分支合并

    查看分支:git branch

    创建分支:git branch <name>

    切换分支:git checkout <name>

    创建+切换分支:git checkout -b <name>

    合并某分支到当前分支:git merge <name>

    删除已被合并的分支:git branch -d <name>

    删除未被合并过的分支:git branch -D <name>

    4.2 解决分支合并冲突

    git log --graph 可以查看分支合并图

    git log --graph --pretty=oneline 可以查看分支合并图简图

    git log --graph --pretty=oneline --abbrev-commit 可以查看分支合并最简图

    4.3 分支管理策略

    通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
    合并时添加参数 --no-ff 可以禁用快速合并模式,由于这会产生一个提交,所有需要添加 -m 参数把commit描述写进去

    实例:

    git merge --no-ff -m "merge with no-ff" dev

    禁用快速合并模式合并 dev 分支到当前分支

    4.4 多人协作

    查看远程库信息,使用 git remote

    查看远程库详细信息,使用 git remote -v

    本地新建的分支如果不推送到远程,对其他人就是不可见的;

    推送分支:
    推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
    git push origin master
    如果要推送其他分支,比如dev,就改成:
    git push origin dev

    从本地推送分支,使用 git push origin branch-name,如果推送失败,先用 git pull 抓取远程的新提交;

    在本地创建和远程分支对应的分支,使用 git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

    建立本地分支和远程分支的关联,使用 git branch --set-upstream branch-name origin/branch-name

    从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

    5. 标签管理

    5.1 创建标签

    创建标签,首先需要切换到需要打标签的分支上

    查看所有tag: git tag

    给最新commit即HEAD打标签: git tag <name>

    给指定commit打标签: git tag <name> 888888

    创建带有说明的标签,用-a指定标签名,-m指定说明文字: git tag -a <name> -m "version 0.1 released" 888888

    查看某一标签说明: git show <name>

    5.2 操作标签

    删除本地标签: git tag -d <tagname>

    推送指定本地标签到远程: git push origin <tagname>

    推送全部尚未推送到远程的本地标签: git push origin --tags

    删除远程标签:

    1. 先从本地删除: git tag -d <tagname>
    2. 再从远程删除: git push origin :refs/tags/<tagname>
  • 相关阅读:
    java 语言里 遍历 collection 的方式
    struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
    mysql 查看表的类型
    memcached—向memcached中保存Java实体需注意的问题
    一个关于 UIPickerView 的 bug
    Wireshark数据抓包教程之安装Wireshark
    Mysql第四天 数据库设计
    产品经理怎样才干把一件事做出色
    Tokyo Tyrant(TTServer)系列(三)-Memcache协议
    Unity3D
  • 原文地址:https://www.cnblogs.com/YSPyishuihan/p/6895522.html
Copyright © 2011-2022 走看看