git 常用命令

获得版本库

  • git init

  • git clone

查看信息

  • git help

  • Git log

    ​ 查看提交日志

  • git diff

    ​ 比较文件在不同状态中的文件区别

版本管理

  • Git add

    ​ 加入到版本暂存区中

    ​ . 表示当前文件夹都纳入到暂存区

  • git commit

    ​ 将暂存区的文件提交到git版本库中

  • git rm

    ​ git rm 版本库中的文件

远程协作

  • git pull

    ​ 将远程版本库中的文件拉取到本地

  • git push

    ​ 将本地版本库中的文件推送到远程库

Git配置

git 查看版本

  • git —version

首次使用前的配置

对于user.name与user.email来说,有3个地方可以设置

  • 1,/etc/gitconfig (几乎不用) 对于操作系统的 git config —system

  • 2,~/.gitconfig (很常用) 对于所有的git项目 git config —global

  • 3,针对于特定的项目的 .git/config文件中 对于特定的项目 git config —local

     git config --local user.name 'lihao'
     git config --local user.email '[email protected]'
     git config user.name
     git config user.email
     
     //重置
      git config --local user.name 'lisan'
      
      //删除
      git config --local --unset user.name
      
      
    

git的提交更新

提交更新,每次准备提交前,先用 git status 看下,是不是都已暂存起来了,然后在运行提交命令。

  • Git commit
  • git commit -m 'init'
  • Git commit —amend -m 'init' 修改最后一次提交的message
  • git commit -am 'init' 添加到索引库并提交 不用写add了

git 删除文件

  • 删除文件
  • Git rm readme

以上两者区别

Git rm :

  • 删除了一个文件
  • 将被删除的文件纳入到暂存区(stage,index)
  • git rm --cached -r .idea 从暂存区删除

如果恢复文件

git reset HEAD index.php 由暂存区恢复到工作区

git checkout — index.php 丢弃工作区删除文件的内容

rm:

​ 将文件删除了,这时,被删除的文件并未纳入缓存区当中.

如果恢复文件:

git checkout — index.php

git 重命名

git mv from_file to_file

Git 查看提交历史

  • git log
  • -p 展开显示每次提交的内容差异
  • -n 仅显示最近的n次更新
  • —stat 仅显示简要的增改行数统计
  • —pretty=oneline
  • —pretty=format:'%h - %an,%ar:%s'
  • —graph 图形化的方式查看log

忽略文件 .gitignore

  • 新建 .gitignore 文件
  • *.a 忽略所有 .a结尾的文件
  • !lib.a 但 lib.a除外
  • /todo 仅仅忽略项目根目录下的todo文件不包括subdir/todo
  • Build/ 忽略build/目录下的所有文件
  • doc/*.txt 会忽略doc/notes.txt 但不包括 doc/server/arch.txt
  • ** 表示所有的目录

如果.gitignore尝试以下方法

.gitignore只能忽略哪些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,
则修改.gitignore是无效的,那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

分支

列出当前所有分支

  • git branch

创建分支

  • git branch branch_name

切换分支

  • git checkout branch_name

删除分支

  • git branch -d branch_name

创建并转向所创建的分支

  • git checkout -b branch_name

修改分支的名称

  • git branch -m branch_name new_branch_name

fast-forward

  • 如果可能,合并分支时git 会使用fast-forward 模式
  • 在这种模式下,删除分支时会丢掉分支信息。
  • 合并时加上 —no-ff 参数会禁用fast-forword, 这样会多出一条commit id
  • git merge —no-ff dev

合并分支

  • Git merge branch_name

git 回退版本

  • 回退到上一个版本

    git reset -- hard HEAD^  //回退到上一个版本
    git reset -- hard HEAD^^ //回退到上两个版本
    git reset -- hard HEAD~2 //回退到指定第几个版本
    git reset -- hard commit_id //回退到指定的版本
    

  • 查看操作日志

    git reflog 
    

checkout

  • Git checkout — test.txt

    作用是:丢弃掉相对于暂存区中最后一次添加的文件内容所做的变更

  • Git reset HEAD test.txt

    作用是:将之前添加到暂存区(stage,index)的内容从暂存区移除到工作区。

保存工作现场

保存现场

  • git stash
  • git stash sava 'init'
  • git stash list
  • git stash —help

恢复现场

  • Git stash apply (stash 内容并不删除,需要通过git stash drop stash@{0} 手动删除)
  • git stash pop (恢复的同时也将stash 内容删除)
  • Git stash apply stash@{0}

git 标签

  • 新建标签,标签有两种:轻量级标签(lightweight)与带有附注标签(annotated)

  • 创建一个轻量级标签

    git tag v1.0.1
    
  • 创建一个带有附注的标签

    git tag -a v1.0.2 -m 'release verion'
    

  • 删除标签

    git tag -d tag_name
    
  • 搜索标签

    git tag -l 'v*'
    
  • 查看标签

    git show v1.0.0 
    

  • 将标签推送到远程

    git push origin v1.0.0  //推送指定的标签
    
    git push origin --tags  // 推送所有的标签
    
    
  • 删除远程标签

    git push origin --delete tag v1.0.1
    

查看一个文件都是谁提交的

git blame  index.php

git diff 比较

  • git diff : 比较的是暂存区与工作区文件之间的差别,暂存区表示是原始文件。
  • git diff HEAD: 比较的是最新的提交与工作区之间的差别。
  • git diff —cached: 比较的是版本库与暂存区之间的差别。

远程

查看远程仓库

  • Git remote show 显示远程仓库的别名。

  • Git remote show origin 远程仓库详细信息

    git remote show origin
    
    * remote origin
      Fetch URL: https://github.com/haojuwang/git.git
      Push  URL: https://github.com/haojuwang/git.git
      HEAD branch: master
      Remote branch:
        master tracked
      Local branch configured for 'git pull':
        master merges with remote master
      Local ref configured for 'git push':
        master pushes to master (up to date)
    

添加到远程仓库

  • Git remote add origin 远程地址
  • git push -u origin master

查看远程仓库

  • git branch -a 查看远程分支

  • git branch -av 查看远程分支并显示最后一次提交的信息

  • git remote show origin 查看远程分支与本地的对比

clone

创建远程分支

  • git push —set-upstream origin 远程名称

  • git push —set-upstream origin src:dest (src 本地 dest 远程)

删除远程分支

  • git push origin :dev(远程分支名称)

  • git push origin --delete dev

修改远程分支名称

git remote rename origin origin2

远程分支删除了本地同步删除

git remote prune origin

推送到远程

  • Push 完整命令: git push origin srcBranch:destBranch (srcBranch 本地 destBranch远程)
  • pull操作的完整命令是: git pull origin srcBranch:destBranch (srcBranch 远程 destBranch本地)
  • HEAD 标记: HEAD 文件是一个指向你当前所在分支的引用标识符,该文件内部并不包含SHA-1值,而是一个指向另外一个引用的指针。
  • 当执行git commit 命令时,Git会创建一个commit对象,并且将这个commit对象的parent指针设置为head所指向的引用的SHA-1值。
  • 我们对于HEAD修改的任何操作,都会被git reflog 完整记录下来
  • 实际上,我们可以通过git底层命令symbolic-ref来实现对HEAD文件内容的修改

基于远程分支创建分支

  • git checkout -b develop origin/develop
  • git checkout --track origin/test

git别名

  • git config --global alias.br branch br 表示 branch 的简写

  • ~/.gitconfig 别名文件

    cat ~/.gitconfig
    
    [alias]
      br = branch
      co = commit
    

查看远程分支提交log

git log origin/master

git log remotes/origin/master

git log refs/remotes/origin/master

git裸库

  • Git裸库是指没有工作区的git 项目,常用于服务器端
  • 创建一个裸库 gi init —bare

git submodule

git submodule add [email protected]:java/git_child.git submodule

子仓库的地址:[email protected]:java/git_child.git
submodule 子仓库放置的目录

更新submodule

  • 直接进入submodule 的目录 执行git pull
  • 更新所有的submodule git submodule foreach git pull

submodule git clone 发生了变化

git clone [email protected]:java/git_parent.git git_parent2

git submodule init

git submodule update --recursive

--------------
git clone [email protected]:java/git_parent.git git_parent2 --recursive

删除submodule

git rm --cached mymodule

rm rf mymodule

git add .

git commit -am 'update'

rm .gitmodules

git push

git subtree

添加 subtree

git remote add subtree-origin [email protected]:java/git_subtree_child.git

git subtree add --prefix=subtree subtree-origin master --squash


git push

subtree: 表示目录
subtree-origin: 远程版本库
master: 表示远程版本库的分支

parent subtree pull

git subtree pull --prefix=subtree subtree-origin master --squash

parent Subtee push

git push

git subtree push --prefix=subtree subtree-origin master 

git cherry-pick

将一个分支的修改应用到另外一个分支上

现在是在dev 分支上修改,我想把修改放在master上

master:  git cherry-pick c7d3592

c7d3592 commit sha-1 这个id 是dev上面的

原来的分支修改删除
dev:  git checkout  c7d3592 //切换到 c7d3592分支

c7d3592 :    git branch -D dev  删除分支

c7d3592 :  git branch -b dev 创建分支

Git rebase

  • Rebase : 变基,意即改变分支的根基
  • 从某种程度上来说,rebase与merge可以完成类似的工作,不过二者的工作方式有着明显的差异

生成公钥私钥

  • ssh-keygen

    ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/lixueqin/.ssh/id_rsa):
    

  • id_rsa 私钥 不能给别人

  • id_rsa.pub 公钥

gretty

http://akhikhl.github.io/gretty-doc/Gretty-configuration.html

repositories {
    maven {
        name 'aliyun'
        url 'http://maven.aliyun.com/nexus/content/groups/public/'
    }
    mavenCentral()
}

//gretty
buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'org.akhikhl.gretty:gretty:2.0.0'
    }
}

if (!project.plugins.findPlugin(org.akhikhl.gretty.GrettyPlugin))
    project.apply(plugin: org.akhikhl.gretty.GrettyPlugin)

gretty{
    httpEnabled = true
    servletContainer = 'tomcat8'
    contextPath = '/mygit'
    httpPort = 8081
    host = "localhost"
    scanInterval = 1
    fastReload =true
    inplaceMode = 'soft'
    loggingLevel = "DEBUG"
    consoleLogEnabled = true
    
    debugPort = 6005
    debugSuspend = true

}





运行
gradle appRun

debug

gradle appRunDebug

git 常用命令_第1张图片
git 常用命令_第2张图片
debug-2.png

远程debug

https://dancon.gitbooks.io/intellij-idea/content/remote-debugging.html

gitlab安装

  • 安装地址 https://about.gitlab.com/installation/#centos-7

  • 配置 vim /etc/gitlab/gitlab.rb

     external_url 'http://Vultr'
     external_url 'http://108.61.126.40/
     
    
  • 载入配置服务(初始化和修改/etc/gitlab/gitlab.rb 后需要重新载入)

    gitlab-ctl reconfigure
    
  • 启动服务

     gitlab-ctl start
    
  • 停止服务

    gitlab-ctl stop
    
  • 重启服务

    gitlab-ctl restart
    
  • 查看日志

gitlab日志:/var/log/gitlab

查看gitlab日志:gitlab-ctl tail
查看gitlab对应的Nginx访问日志:gitlab-ctl tail nginx/gitlab_access.log
查看gitlab对应的数据库postgre-sql的日志:gitlab-ctl tail postgresql

gitlab数据存放目录:/var/opt/gitlab/git-data

  • 下载失败

    https://packages.gitlab.com/gitlab/gitlab-ce
    
    rpm -i gitlab-ce-9.4.6-ce.0.el7.x86_64.rpm
    


    git 常用命令_第3张图片
    image.png

不让用户注册

http://10.211.55.3/admin/application_settings

git 常用命令_第4张图片
602C3386-31C1-4476-8E0E-E8D91D50381C.png

git 仓库

git init --bare 仓库名称.git
///data/git/cangku.git/

你可能感兴趣的:(git 常用命令)