zoukankan      html  css  js  c++  java
  • git命令

    一、Git与SVN的对比

    1)Git是分布式的SCM,SVN是集中式的。
    2)Git每个历史版本存储完整的文件,SVN存储文件差异。
    3)Git可离线完成大部分操作,SVN则依赖于网络。
    4)Git有着更优雅的分支和合并实现。
    5)Git有更强的撤销修改和修改历史版本的能力。
    6)Git速度更快,效率更高。

    二、Git安装与简单配置

    三、Git命令

    查看版本  git  --version

    查看计算机里有哪些git版本 并选择您想使用的版本

    查看计算机里有哪些git版本which -a git

    配置.bash_profile文件,选择自己需要的版本 vim .bash_profile

    加入需要制定环境相对路径   export PATH '/user/local/git/bin:$PATH'

     编辑过后 重新载入 base_profile 

    配置自己的git 信息

    配置自己的用户名 git config --global user.name xud

    配置自己的用户邮箱 git config --global user.email xud@123.com

    git配置的三个级别

    system 针对于一个系统   <  global 针对于一个用户  <  local 针对于一个仓库

    查看git文档  

    git config --help

    git help config

    重命名git 命令

    git config --global alias.co checkout

    git config --global alias.br branch

    git config --global alias.st status

    git config --global alias.ci commit

    初始化一个git仓库

    git init git_test    创建了一个叫git_test 的仓库,并在你制定的目录下边建立了一个git_test文件夹。同时在文件夹中生成了.git

    git init --bare git_bare_test  生成一个裸的仓库,它不带.git文件,也就是不带工作区。

    git clone

    gi clone http://github.com/ypsc.git

    Git仓库的三个区域

    working directory:工作区

    staging area:暂存区

    history repository:历史仓库

    Git工作区直接跟暂存区打交道暂存区跟版本库打交道

    从工作区中添加内容到暂存区

    将暂存区的内容提交到版本库

    从版本库中检出内容到工作区

    git add 主要用于把我们要提交的文件信息添加到暂存区中

    git add -u  把所有tracked文件中被修改过或已删除文件的信息添加到暂存区。它不会处理untracted的文件

    git add -A 表示把所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到暂存区

    git add -i 查看所有修改过或已删除文件但没有提交的文件

    git add . 添加所有文件

    git commmit:把暂存区内容添加到版本仓库中

    git commit -m '提交的问题描述'

    git status 查看工作区、暂存区和版本库的差异情况

    git  rm  在git中我们可以通过git rm命令把一个文件删除,并把它从git的仓库管理系统中移除。但是最后要之心git commit 才真正提交到git仓库中

    git rm  -a

    git commit -m '删除了一个文件'

    删除暂存区中的a文件,要用–cached参数

    git rm --cached a

    git mv:git文件重命名或移动路径时使用命令

    git mv a c 将 a文件命名为c文件

    gitignore:把不需要跟踪的文件添加到这个文件中就可以避免跟踪了。在这个文件中可以使用通配符。

    有些时候文件夹里没有这个文件,你可以自己手动建一个.gitignore文件。

    四、Git分支

    当我们想给已经上线的一个项目添加一个新功能,可以增加一个新分支,在分支上编写代码,等这个新功能开发完毕之后,再把这个新功能合并到主分支上。

    git本地创建分支  git branch test   //创建一个test分支

    创建了分支,我们并没有直接到这个分支上,而还是在个主分支上。我们需要用切换分支命令切换到新创建的test分支上

     git branch 不带参数,列出本地已经存在的分支,并且在当前分支前面会加“*”号标记

    git branch -r  列出远程分支

    git branch -a 列出远程分支和本地分支

    重命名分支,如果newbranch名字分支已经存在,则需要使用 -M强制重命名,否则,使用-m进行重命名

    git branch -m oldbranch newbranch  

    git branch -M old branch newbranch

    删除branchname分支

    git branch -d /-D branchname

    删除远程 branchname分支

    git branch -d -r branchname

    Git给分支起别名(也叫打标签)

    git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象。建议使用附注标签。

    创建轻量标签  git tag v0.1.2 -light

    创建附注标签 git tag -a v0.1.2 -m '0.1.2'版本

    创建轻量标签不需要传递参数,直接制定标签名称即可。
    创建附注标签时,参数a即annotated的缩写,制定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。

    在学习这个给分支起别名的操作前,我们要会使用一个查看Log日志的命令,用这个命令查出我们现在的Git情况,然后再给它起名。

    查看版本历史示意图:

    git log --oneline --decorate --graph  --all

    git tag 'v0'  51bcb0d

    我们可以起个别名 git config --global alias.log "git log --oneline --decorate --graph  --all"

    就可以用 git log 来查看日志了

    分支之间的切换

    git chekout daily //切换到daily分支上

    切换分支前保存本地的修改和暂存区的修改

    当我们在一个分支上作了修改,提交到了暂存区,但是没有提交到版本库中。这时我们要切换分支(比如切换到master分支 git checkout master),系统会报错,提示我们暂存区有文件没有提交。如果我们还不想提交文件,这时我们就可以使用下边的命令把暂存区的文件保存起来

    git stash save -a  'stash1'  //把当前分支的内容藏起来

    git stash list  //可以查看那我们藏匿的内容

    git stash pop --index stash@{0}

    我们这时候用git status命令查看一下git状态,会发现我们藏匿的东西已经还原回去了。这条命令不仅恢复了藏匿的内容,并删除了藏匿区的内容,由多个动作组成。如果我们只想还原暂存区的藏匿内容,但并不删除藏匿区内容的话,可以使用下边这条命令。

    本地合并分支

    git merge branchName

    merge分两种

    1)fast-farword merge

    master分支衍生出来的

    2)non-fast-farword merge

    三方合并分支

    git checkout:还原工作区

    git checkout --master.txt  //用它来还原我们的工作区 用暂存区的内容覆盖工作区的内容

    git reset:还原暂存区

    当我们把工作区的内容用 git add .提交到暂存区后,我们可以使用git Reset fileName 命令来还原暂存区的内容,实例命令如下

    git reset master.txt  //输入此命令后,可以用git status 查看Git状态,发现已经没有差别了

    git checkout  INITIAL_COMMIT --master.txt    //还原其他历史版本信    //INITIAL_COMMIT是一个版本的引用

    git clean:清除没有跟踪的文件

    git clean -n 查看我们没有跟踪和可移除的工作区内容,也就是将要被删除的内容

    git clean -f 查看后我们可以下边的命令删除内容

    git clean -n -x  //用git clean 命令查看将要被移除.gitignore指定的不提交文件

    git clean -X -f  //用git clean -X -f 密令删除.gitignore,注意这里的X是大写的X

    git revert :产生新的提交,覆盖以前的提交

    git revert HEAD

    git远程写作的主要命令

    我们在学习远程仓库命令之前要先学会基本的Github操作,然后在Github上新建一个仓库。

    我们先下载一个Github的桌面应用,下载地址为:http://desktop.github.com

    下载后我们填写好用户名和密码,之后就可以用github的Git Shell来执行这些命令了

    git clone:克隆远端仓库到本地

    gi clone http://github.com/ypsc.git

    git fetch:获取远端仓库的所有内容,包括所有分支内容

    先进入本地仓库目录,然后用git fetch命令来获取远端仓库的所有内容。相当于是从远程获取最新版本到本地,不会自动merge

    git fetch origin master

    git log -p master .origin/master

    git merge origin/master

    首先从远程的origin的master主分支下载最新的版本到origin/master分支上,然后比较本地的master分支和origin/master分支的差别,最后进行合并。

    git fetch origin master:tmp

    git diff tmp

    git merge tmp

    从远端获取最新的版本到本地的tmp分支上,之后进行比较合并

     git pull,是git fetch 和 git merge的操作合并

    git pull origin master

    上述命令其实相当于git fetch 和git merge,在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并

    git push:命令御用将本地分支的更新,推送到远程仓库主机上。

    git push <远程主机名><本地分之名>:<远程分支名>

    分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push 是<本地分支>:<远程分支>.
    如果省略本地分支名,则表示将本地分支推送与之存在“追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

    git push origin daily

    上面命令表示,将本地分daily分支推送到origin筑基的master分支。如果后者不存在,则会被新建。
    如果省略本地分支名,则表示删除指定远程分支,因为这等同于推送一个空的本地分支到远程分支。

    git push origin :daily  ==  git push origin  --delete daily

    上面命令表示删除origin主机的master分支。
    如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略

    git push origin 

    上面命令表示,将当前分支推送到origin主机的对应分支。
    如果当前分支只是一个追踪分支,那么主机名都可以省略

    git push 

    如果我们想要推送一个tag的话,可以使用下边的命令:

    git push --tags

    用push删除远程分支

    git push --delete origin feacher

    本文摘自网上git命令大全。 

  • 相关阅读:
    tomcat发布的class中有一部分类会生成同名的XXX$1.class
    报错:The method encodeBase64String(byte[]) is undefined for the type Base64
    bootstrap中的fileInput上传文件时,文件名称中有-(中划线)改为了_下划线
    java中去html/jsp等前台页面&nbsp;造成的空格
    # 50 个最常被问到的 Selenium 面试问题和答案
    # 为什么测试人员学习测试自动化(仍然)如此困难
    # 如何引进高级的 IT 自动化项目:一个 3 步走计划
    **Selenium IDE、Selenium RC 和 WebDriver 之间有什么区别?**
    pandas 数据分析好的博文
    pandas contains 函数
  • 原文地址:https://www.cnblogs.com/xuniannian/p/9440916.html
Copyright © 2011-2022 走看看