git常用命令

Git配置

git config --global user.name "zz"   
git config --global user.email "zz@xx.com"
git config --global color.ui true
 
git config --global color.status auto
 
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global core.editor "vim"    # 设置Editor使用textmate
git config -l  # 列举所有配置
 

用户的git配置文件~/.gitconfig

修改git 版本库地址  直接修改~/.gitconfig的地址

Git常用命令

查看、添加、提交、删除、找回,重置修改文件

git help <command>  # 显示command的help
git show            # 显示某次提交的内容
git show $id
 
git co  -- <file>   # 抛弃工作区中某文件的修改
git co  .           # 抛弃工作区修改
 
git add <file>      # 将工作文件修改提交到本地暂存区
git add .           # 将所有修改过的工作文件提交暂存区
 
git rm <file>       # 从版本库中删除文件
 
git reset <file>    # 从暂存区恢复修改的文件
git reset -- .      # 从暂存区恢复所有修改的文件
git reset --hard  <commit>  # 不带commit恢复最近一次提交过的状态,即放弃某次提交后的所有本次修改,带commit以此为基准状态

git reset --hard HEAD^   #删除最近的提交

git rebase -i HEAD~6     #通过交互式方式,修改分支最近6次的提交数据
 
git ci <file>
git ci .
git ci -a           # 将git add, git rm和git ci等操作都合并在一起做
git ci -am "some comments"
git ci --amend      # 修改最后一次提交记录, 建本次提交和上次提交合并, 在git rebase -i中使用edit参数也会导致这个操作,意义是修改上次提交的信息git ci -C <commit>  # 重用上次提交的说明和作者
 
git revert <$id>    # 恢复某次提交的状态,恢复动作本身也创建了一次提交
git revert HEAD     # 恢复最后一次提交的状态

 

查看文件diff

git diff <file>     # 比较当前文件和暂存区文件差异
git diff
git diff <$id1> <$id2>   # 比较两次提交之间的差异
git diff <branch1>..<branch2> # 在两个分支之间比较 
git diff --staged   # 比较暂存区和版本库差异
git diff --cached   # 比较暂存区和版本库差异
git diff --stat     # 仅仅比较统计信息
 
 

查看提交记录

git log
git log <file>      # 查看该文件每次提交记录
git log -p <file>   # 查看每次详细修改内容的diff
git log -p -2       # 查看最近两次详细修改内容的diff
git log --stat      # 查看提交统计信息  

Git 本地分支管理

查看、切换、创建和删除分支

git br -r           # 查看远程分支
git br <new_branch> # 创建新的分支
git br -v           # 查看各个分支最后提交信息
git br --merged     # 查看已经被合并到当前分支的分支
git br --no-merged  # 查看尚未被合并到当前分支的分支
 
git co <branch>     # 切换到某个分支
git co -b <new_branch> # 创建新的分支,并且切换过去
git co -b <new_branch> <branch>  # 基于branch创建新的new_branch
 
git co $id          # 把某次历史提交记录checkout出来,但无分支信息,切换到其他分支会自动删除
git co $id -b <new_branch>  # 把某次历史提交记录checkout出来,创建成一个分支
 
git br -d <branch>  # 删除某个分支branch
git br -D <branch>  # 强制删除某个分支 (未被合并的分支被删除的时候需要强制)
 

分支合并和rebase

git merge <branch>               # 将branch分支合并到当前分支
git merge --squash <branch> 将分支branch合并到当前分支,将所有提交压缩产生一次提交内容
git rebase master <branch>       # 将master分支 rebase到branch,相当于:
git co <branch> && git rebase master && git co master && git merge <branch>完成后要推到remote,要执行git push -f, 其他人要执行git pull --rebase

Git暂存管理

git stash           #  暂存内容
git stash list      # 列所有stash
git stash apply     # 恢复暂存的内容 
git stash pop      # 弹出栈顶的暂存内容

Git远程分支管理

git pull --rebase                # 抓取远程仓库所有分支更新并合并到本地,使用rebase方式
git fetch origin                 # 抓取远程仓库更新
git merge origin/<remote_branch>          # 将远程分支合并到本地当前分支
git co -b <local_branch> origin/<remote_branch>  # 基于远程分支创建本地分支,功能同上
 
git push                         # push所在分支
git push origin <local_branch>   # 创建远程分支, origin是远程仓库名, 通过本地分支创建远程分支
git push origin :<remote_branch>  #先使用命令删除本地分支(git br -d <branch>),然后再push删除远程分支,删除分支后需要其他人使用git remote prune origin 才可见
 

Git场景化


1.创建一个新的分支T505,并且push到远程分支:

  no branch: git clone url # 拉去master分支从git仓库里
  master: git co develop # 切换到develop分支
  develop: git pull --rebase # 抓取远程仓库所有分支更新并合并到本地,使用rebase方式
  T505: git checkout -b T505 # 创建并且切换到 T505 分支
  T505: git push origin T505 # 将创建的分支push到远程

2.手动合并T505到develop分支:

  develop: git pull --rebase #抓取远程仓库所有分支更新并合并到本地,使用rebase方式(需要注意)
  develop: git pull --rebase origin T505 #合并T505到develop
  develop: git push #发送到develop远程分支

 

基本操作

  1. 检出
     
    1. git clone <url>
  2. 添加到暂存区
     
    1. git add <filename> #-i交互式添加
    2. git add *
  3. 仓库
     
    1. git commit -m "messages"
  4. 推送更改 推送前pull先更新代码
     
    1. git push <origin> <branch> #已clone到本地 新建第一次推送需指定仓库名&分支名
    2. git remote add origin <server> #未clone
  5. 查看代码改动diff 指定比较对象 路径支持通配符
     
    1. git diff # 查看工作区与暂存区的文件差异
    2. git diff --cached # 查看暂存区与最后一次本地提交的文件差异
    3. git diff HEAD # 工作区与最后一次本地提交之间的差异
    4. git diff origin # 工作区与本地仓库原始版本比较
    5. git diff --cached origin #本地提交代码和远程比较 git remote -v 查看远程branch名
  6. 分支
     
    1. git checkout -b feature_x #创建分支x,切换过去
    2. git checkout master #切换到主分支
    3. git checkout -b feature_x master # 从master分支创建feature_x分支,并切换到feature_x分支
    4. git branch -d feature #删除分支 -D强制删除
    5. git push origin <branch> #推送到相应分支
    6. git push origin :abc # 将远程分支abc删除
    7. git branch -a #查看目录下的所有分支
  7. 合并
     
    1. git merge <branch> #合并到当前分支 以branch为准 -s将提交压缩为一次
    2. 合并冲突后 git add <filename>
    3. 合并改动前 git diff <source_branch> <target_branch> #预览差异
  8. 暂存本地代码
    从线上拉取代码提示失败,告诉你有些文件会被merge,但是你不想提交再merge,这时候就可以用stash存储更改
    git stash: 将改动存起来, 恢复当前代码到初始状态。
    git stash apply: 重新提出暂存的代码。
    stash命令可以很好的解决这样的问题。当你不想提交当前完成了一半的代码,但是却不得不修改一个紧急Bug,那么使用git stash就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修 Bug,等到修完Bug,提交到服务器上后,再使用git stash apply将以前一半的工作应用回来。
    当你多次使用git stash命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑.
    git stash list命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号
    git stash apply stashxxx就可以将你指定版本号为stashxxx的工作取出来
    当你将所有的栈都应用回来的时候,可以使用git stash clear来将栈清空
    移除储藏:git stash drop stash@xx(xx表示在储藏list中的位置)
  9. 标签
    git tag 1.0.0 4g7h8j9 #创建tag 使用提交id前几位即可
    Git 中的tag指向一次commit的id,通常用来给开发分支做一个标记,如标记一个版本号。
    只是一个指针,指向commit id和分支有点不同。试试git checkout [tag name]能够看出区别
    git tag 显示当前所有tag
  10. 丢弃本地所有改动提交 从服务器获取历史版本 并将本地分支指向它

     
    1. git fetch origin
    2. git reset --hard origin/master #回退提交
    3. git log -10 #找出最近的提交
    4. git reset --hard 634a7056...eb8b5379 # 634a7056...eb8b5379 #是commit版本的hash,此操作请三思而后行(貌似可以用git reflog恢复,但没试过)
    5. git pull # 从线上拉取最新版本

    reset的一些选项参数:
    根据—soft —mixed —hard,会对working tree和index和HEAD进行重置:

    • git reset —mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
    • git reset —soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
    • git reset —hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
  11. log

     
    1. git log # 查看默认格式的提交记录
    2. git log -5 # 查看最近5条提交记录
    3. git log -p # 查看提交记录并显示代码改动内容
    4. git log -p --author=abc # 查看abc的提交记录并显示代码改动内容
    5. git log --since=2011-05-24 --until=2011-05-25 # 查看从2011-05-24到2011-05-25的提交
    6. git log --name-only # 只显示文件名
    7. git log --pretty=oneline # 只显示一行
    8. git log --pretty=format:%h:%s # 自定义格式
    9. git log --graph # 图形化查看
    10. git log --stat # 查看修改文件统计
  12. 对当前修改的恢复操作
    未提交的修改:
     
    1. checkout xxx.php : 用版本库中的覆盖你本地的和index.
    2. checkout HEAD xxx.php : 用最你最近的commit覆盖本地和index
    3. checkout <commit> xxx.php:用某次commit覆盖本地和index
    4. checkout -f : == reset --HARD : 撤销所有未提交的修改,用最新的commit覆盖所有改变。
    5. checkout 什么都不加, 不产生改变。
    新提交的修改, 未push
    重新修改,commit
    revert HEAD. 舍去你最近的commit.
    • git revert HEAD 撤销前一次 commit
    • git revert HEAD^ 撤销前前一次 commit
    • git revert commit
      reset -hard: 撤销当前所有改动,不记录log. 默认撤回到HEAD,即最近的一次提交.
    • git reset —hard HEAD~3 会将最新的3次提交全部重置,就像没有提交过一样。
    • git reset —hard commit (38679ed709fd0a3767b79b93d0fba5bb8dd235f8) 回退到 38679ed709fd0a3767b79b93d0fba5bb8dd235f8 版本
    • 的版本号不定要写全, 写出开头一些能区分的字母就行.
  13. 文件操作
     
    1. checkout xxx.java : 用版本库中的覆盖你本地的和index.
    2. checkout HEAD xxx.java : 用最你最近的commit覆盖本地和index
    3. checkout <commit> xxx.java:用某次commit覆盖本地和index
    4. checkout -f : == reset --HARD : 撤销所有未提交的修改,用最新的commit覆盖所有改变。
    5. checkout 什么都不加, 不产生改变。
    6. git rm file # 删除文件
    7. git mv file1 file2 # 移动或者重命名文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值