美文网首页
常用git命令

常用git命令

作者: 北疆小兵 | 来源:发表于2019-10-13 14:00 被阅读0次

先用一张图来描述git的主要流程

git.png

workspace: 本地的工作目录。
index:缓存区域,临时保存本地改动。
local repository: 本地仓库,只想最后一次提交HEAD。
remote repository:远程仓库。

配置用户名和密码

  • git config -
  • git config --global user.name "Your Name" => 设置自己的 Name
  • git config --global user.email you@example.com => 设置自己的邮箱
  • git config - - list 或者 查看git配置信息
  • git config user.name 查看git用户名
  • git config user.email 查看邮箱配置

远程仓库相关

  • 修改远程仓库地址
方法1:

1. 进入git_test根目录
2. git remote 查看所有远程仓库, git remote xxx 查看指定远程仓库地址
3. git remote set-url origin [url]


方法2

1. git remote -v 查看指定远程仓库地址
2. git remote rm origin  //移除之前关联的仓库地址
3. git remote add origin  [url]

  • 检出仓库
git clone git://github.com/jquery/jquery.git
  • 查看远程仓库
git remote -v

分支相关

  • 关联远程分支 将当前分支关联到远程release的V3.4.9分支 这样每次git pull 或者 git push jiu不用指定远程分支了
git branch --set-upstream-to  origin/release/V3.4.9
  • 查看分支
git branch #查看本地都有哪些分支
git branch -r. #查看远程都有哪些分支
git branch -a. #查看所有的分支,包括本地和远程的

  • 创建分支
git branch dev. //本地创建分支
Git push origin dev; //将本地创建的dev分之推送到远程
git push origin master: dev //以master分支为基础,在远程新建一个dev分支
git checkout -b dev  # 以当前分支为基础,新建并切换到dev分支
git checkout -b dev master  #从master分支为基础,新建名为dev的新分支,并切换到dev分支上去
git checkout -b release/V1.0.6  origin/release/V1.0.6  #从远程release/V1.0.6分支为基础,新建名为release/V1.0.6 的新分支,并切换到release/V1.0.6 分支上去
  • 切换分支
git checkout dev    #切换到dev分支
git checkout -b V1.0.2  #以当前分支为基础,在本地创建V1.0.2的分支并切换到该分支
git checkout -b V1.0.2 master # 以master分支为己转新建V1.0.2分支并切换到V1.0.2分支


  • 删除分支
git branch -d dev1  #删除本地的某个分支
git branch -D dev1  #如果没有完成合并时会有提示,可以采用强制删除
git push origin :dev1 #删除远程的分支 注意,冒号前面的空格不能少,相当于把一个空分支push到server上,等于删除该分支(注意:号后面不要加origin)。

  • 合并分支
git merge dev  #合并dev分支代码到本地分支(Fast forward模式,这种模式下删除分支后,会丢失分支信息)

git merge --no-ff -m "merge with no-ff" dev  #-no-ff参数,表示禁用“Fast forward”  会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

git rebase dev  #衍合dev分支代码到本地分支
  • 修改本地分支和远程分支名称名称
1.git branch -m V1.0.2 V1.0.2_new #修改本地分支名称
2.git push orign :V1.0.2 #删除远程v1.0.2分支
3.git push origin V1.0.2_new:V1.0.2_new #将本地V1.0.2_new分支推送到远程V1.0.2_new分支,远程不存在V1.0.2_new分支时会自动创建


更新和提交代码

  • 从远程分支拉去代码到本地分支
git pull origin master  #将远程master分支代码更新到本地,会自动merge(作用等价于 git fetch + git merge)

git fetch origin master  #将远程master分支代码更新到本地,不会自动merge
  • 推送到远程仓库

把本地的某个分支V1.0.0提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫dev的分支

git push origin master #本地代码提交到远程master分支

git push origin V1.0.0:master  #将本地V1.0.0分支代码提交到远程master分支

git push origin V1.0.0:dev   #将本地V1.0.0分支代码提交到远程dev分支

TAG相关

git tag 或者git tag —list : #查看所有tag
git tag v1.0   #以当前分支的最新commit打一个tag
git branch feature_dev v0.1    #以v0.1这个tag建一个名字为feature_dev的分支

git tag v0.9  ef51d63                #以ef51d63这个commit id打一个名为v0.9的tag

git tag -a v0.1 -m "version 0.1 released” 02172e4   #可以创建带有说明的标签,用-a指定标签名,-m指定说明文字  以02172e4这个commit id打一个名为v0.9的tag


git show v0.9  #查看标签信息
git tag -d v1.0   #删除标签
git push origin tagname  #推送某个标签到远程
git push origin —tags  一次性推送全部尚未推送到远程的本地标签
git push origin :refs/tags/tagname  #从远程删除标签
git tag -l “V3.1.*”  加上-l命令可以使用通配符来过滤tag

保存、恢复现场

git stash  #保存当前的工作现场
git stash save "test-cmd-stash" #保存当前的工作现场,并加注释说明
git stash list 查看stash队列
git stash pop 恢复顶部的stash
git stash pop stash@{num} num 就是你要恢复的工作现场的编号 注意其对应的stash 在队列中删除
git stash apply stash@{num} 和pop唯一的区别是不会再stash队列中删除
Git stash apply 恢复stash list中所有的stash,stash内容并不删除,你需要用git stash drop来删除

Git stash clear 清空stash list


查看git提及历史

git log 查看历史提及记录
git log -p 查看详细历史
git log —stat 查看简要统计
git show 76ded63ae9149e06  查看某一个commitid具体的改动内容


删除未被git跟踪的文件

The following untracked working tree files would be overwritten by checkout:
.DS_Store
Please move or remove them before you switch branches.

进入本地版本仓库目录下,直接执行git clean -d -fx即可。可能很多人都不明白-d,-fx到底是啥意思,其实git clean -d -fx表示:删除 一些 没有 git add 的 文件;
    git clean 参数 
    -n 显示将要删除的文件和目录;
    -x -----删除忽略文件已经对git来说不识别的文件
    -d -----删除未被添加到git的路径中的文件
    -f -----强制运行
    git clean -n
    git clean -df
    git clean -f


放弃修改

git revert 和 git reset的区别

  1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
  2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
  3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容
  • 未进行add操作
git checkout -- readme.txt    #撤销 readme.txt
git checkout .  #撤销所有
  • 已add但未commit

该命令相当于撤销 git add 的影响,在执行该命令后,本地的修改并不会消失,而是回到add之前的状态。

git reset HEAD readme.txt #放弃指定的文件的缓存
git reset HEAD   #放弃所有修改的缓存

  • add完之后,还commit了,但还没有push到远程仓库
git reset --hard #回退到上一次commit的状态

git reset --hard HEAD^  #回退到上一次commit的状态

git reset --hard HEAD^^ #回退到上上次commit的状态

git reset --hard HEAD~100 回退n个版本

git reset --hard commitId #回退到某个commitId的版本
  • 已经push到远程仓库了

git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去

git revert HEAD #撤销前一个commit
git revert HEAD^ #撤销前前一次 commit
 git revert commitId #撤销指定的某个commitId 

添加版本控制和忽略版本控制

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

git update-index --assume-unchanged FILENAME. #忽略跟踪
git update-index --no-assume-unchanged FILENAME. #恢复跟踪

查看git历史

* git log #查看历史提及记录
* git log -p #查看详细历史
* Git log —stat #查看简要统计
* Git show commitId  #查看某一个commitid具体的改动内容


其他操作

git cherry-pick commitId #把某个commit从一个分支放到另一个分支

git mv <oldFileName> <newFileName> #修改文件名称 

git rm readme.txt    #从版本库中删除文件

git 踩坑记录

  • 在命令行中,在根目录下的.bash_profile中配置了以下脚本,按tab键也无法补全
if [ -f ~/.git-completion.bash ]; then
   . ~/.git-completion.bash
fi

原因是 本地安装的git版本和 .git-completion.bash对应的版本是不一致的。我本地安装的git版本是v2.17.0 但是 .git-completion.bash文件中的内容对应的版本却不是v2.17.0。
解决办法是访问github上的git仓库地址(在地址栏替换下版本数字就能获取对应资源 例如将下面地址的v2.23.0替换成2.17.0)
https://raw.githubusercontent.com/git/git/v2.23.0/contrib/completion/git-completion.bash

  • 新建并切换分支时报错 :git checkout -b release/V4.0.5 origin/release/V4.0.5

'origin/release/V4.0.5' is not a commit and a branch 'release/V4.0.5' cannot be created from it. 意思是origin/release/V4.0.5 不是一个提交或分支,解决办法是先执行git pull 把分支信息同步下来再执行 git checkout -b 命令

相关文章

  • Git 常用命令详解

    @[TOC](Git 常用命令详解) 1. Git 常用命令 1.1 常用git 命令图表汇总 1.2 配置个人信...

  • git相关教程汇总

    1. git常用命令 git常用命令总结git常用命令讲解 2. git教程相关网站 廖雪峰的git教程猴子都能懂...

  • GIT 版本管理 常用命令

    Git 常用命令流程图 Git常用操作命令: 初始化创建:$ git init //检出仓库:$ git clon...

  • git命令整理

    git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...

  • GIt 操作补充

    常用的git操作命令 常用的git操作命令已经能够满足日常的工作需求 现补充一些高级命令 git branch -...

  • Git

    常用Git命令

  • Git 日常知识

    git常用命令行命令: 1、git 中本地库常用的命令: 本地库的初始化:git init 本地库分支查询:git...

  • Git 常用命令及应用这一篇就够了(新手向)

    1. git 常用命令 1.1 常用命令 1.2 git remote 管理远程仓库 1.3 git r...

  • git操作

    Git原理 Git常用命令

  • GIT 常用命令总结

    GIT 常用命令总结 GIT 初始化命令 命令描述git init初始化本地 git 仓库git config -...

网友评论

      本文标题:常用git命令

      本文链接:https://www.haomeiwen.com/subject/qpghmctx.html