git日常使用命令

前14条在工作中会经常用到

1.如何将远程仓库克隆到本地
git  clone  git@*******:hisgit/his-front.git

注意如果此时你的项目是空的,要先建个页面push到远程仓库;否则没办法进行下面操作

2.产看远程分支
 git branch -r
image.png
3.查看所有分支
git branch -a
image.png
4.查看本地分支
git branch

前面有*号的代表当前分支

5.合并分支
//若合并远程分支
git merge   origin/分支名 
//合并本地分支
git merge   分支名 
6.切换分支
git checkout ***
7.创建分支

1).创建本地分支

//创建dev_l 分,支此时dev_l分支代码和dev完全一致
 git branch dev_l 
//创建并切换到dev_l分支,此时dev_l分支代码和dev完全一致
 git checkout -b dev_l 

2).然后将本地分支推送到远程

 git push origin  本地分支名:远程分支名
 git push origin  HEAD:远程分支名

注意:如果远程已有分支,要在本地创建其对应的本地分支

git checkout --track 或者 git checkout -b如:
git checkout --track  origin/dev-zhengqigit ,
git  checkout -b dev-zhengqi  origin/dev-zhengqi
建立分支后,默认会进到新建的分支里,

但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

  • master分支是主分支,因此要时刻与远程同步;

  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

8.删除本地分支
 git branch -d xxxxx

如果提示
error: The branch 'feature-vulcan' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature-vulcan'.
则使用 —D 做参数,强行删除

git branch -D feature-vulcan
9.删除远程分支
git branch -r -d origin/branch-name  
git push origin :branch-name 
git push origin --delete tag v0.7
10.从远程拉到本地
git pull origin master
git checkout --track orgin/branch_name //来在本地创建一个与 branch_name 同名分支跟踪远程分支。
11.从本地推送到远程
git push origin develope
git push --set-upstream origin branch_name //来在远程创建一个与本地branch_name 分支同名的分支并跟踪;
12.查看历史日志
git log
13.git回退版本

reset (版本撤回)

git reset 057d  //回退到某个版本   057d   是版本号
git reset –hard origin/master  //将本地的状态回退到和远程的一样
git reset --hard HEAD^ //回退到上一次提交的分支
git reset --hard HEAD~3 //回退到n次提交之前

回退完成后只是本地分支被回退了,需要把本地回退代码推到远程,注意得加f,表示强制推送

git push -f

revert(撤消操作)
git revert的作用通过反做创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本,而不是目标版本。

git revert HEAD~3://丢弃最近的三个commit,把状态恢复到最近的第四个commit,并且提交一个新的commit来记录这次改变。
git revert -n master~5..master~2://丢弃从最近的第五个commit(包含)到第二个(不包含),但是不自动生成commit,这个revert仅仅修改working tree和index。

也就是说 git reset 会失去后面的提交,而 git revert 是通过反做的方式重新创建一个新的提交,而保留原有的提交。

  • git reset 适用于:如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
  • git revert 适用于:如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。

如果当你回退到旧版本后,但又想回退到新版本,那么Git提供了一个命令git reflog用来记录你的每一次命令,那么你通过此命令就会找到新版本的版本号了

$ git reflog
14.当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场,例如:

项目正在test分支更新版本我们疯狂的写bug,突然没更新前的版本出bug了(意料之中),此时呢我们要切换到master分支去改bug。此时此刻我test分支上修改的文件还不想提交,但是切换分支会提示我错误有文件未提交,这种情况下就需要用到git stash

  • 此时在test分支直接输入git stash将代码存储起来


    git stash
  • 接下来我们就可以随意切换分支了,当切回来的时候,我们想恢复刚刚存储的文件,则需要输入git stash list命令去查看我们“存储”的列表。

    git stash list

  • 我们开始恢复,输入git stash apply stash@{0}(指定恢复版本)或者
    git stash apply直接恢复最后一次存储内容,但是恢复后,stash内容并不删除,你需要用 git stash drop 来删除

    image.png

  • 开始恢复的另一种方案,输入git stash pop命令,恢复的同时把 stash 存储列表的内容也删了。

15.已经add的文件,在gitignore中无效,删除重新add
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
16.使用git在本地创建一个项目的过程
$ makdir ~/hello-world    //创建一个项目hello-world
$ cd ~/hello-world       //打开这个项目
$ git init             //初始化
$ touch README
$ git add README        //更新README文件
$ git commit -m ‘first commit’     //提交更新,并注释信息“first commit”
$ git remote add origin git@github.com:defnngj/hello-world.git     //连接远程github项目
$ git push -u origin master     //将本地项目更新到github项目上去
17.如果是develop往非develop提交的时候,要写明,是哪到哪。
$ git push origin develop:master
18.在master分支上修复了bug后,这个bug其实在当前dev分支上也存在。那怎么在dev分支上修复同样的bug?
master上commit时

同样的bug,要在dev上修复,我们只需要把0990e8e BUG这个提交所做的修改“复制”到dev分支。注意:我们只想复制0990e8e BUG这个提交所做的修改,并不是把整个master分支merge过来。

为了方便操作,Git专门提供了一个cherry-pick命令,让我们能复制一个特定的提交到当前分支:

 git cherry-pick 0990e8e
19.标签管理

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

敲命令git tag <name>就可以打一个新标签:

$ git tag v1.0

默认标签是打在最新提交的commit上的,如果你要打在之前的commit上,方法是找到历史提交的commit id,然后打上就可以了。

$ git log --pretty=oneline --abbrev-commit

然后敲入

$ git tag v0.9 f52c633

注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息。
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

$ git tag -a v0.1 -m "version 0.1 released" 1094adb

创建的标签都在本地,可以推送一个本地标签到远程,如:

git push origin <tagname>

推送全部未推送过的本地标签

git push origin --tags

删除一个本地标签

git tag -d <tagname>

删除一个远程标签

git push origin :refs/tags/<tagname> //$ git push origin :refs/tags/v0.9
20.忽略某些文件时,需要编写.gitignore;
*.py[cod]
*.so
dist
build

续忽略.pyc、.pyo、dist等文件或目录:

21.每个仓库的Git配置文件都放在.git/config文件中
22. 想批量删除branch中新加的文件(untracked files)git reset --hard不行
首先确认要删除的文件
git clean -fd -n
如果以上命令给出的文件列表是你想删除的, 那么接下来执行
git clean -f -d或者git clean -fd就可以了。
23.git删除未跟踪文件
 删除 untracked files
git clean -f
连 untracked 的目录也一起删掉
git clean -fd
连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
24.修改最后一次提交

有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交:

$ git commit --amend
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容

  • 以下内容是我在学习和研究Git时,对Git操作的特性、重点和注意事项的提取、精练和总结,可以做为Git操作的字典,...
    科研者阅读 4,045评论 4 50
  • 以下内容是我在学习和研究Git时,对Git操作的特性、重点和注意事项的提取、精练和总结,可以做为Git操作的字典,...
    科研者阅读 3,489评论 2 19
  • 其实这是一篇迟到的游记,为自己一个月的浪浪浪做个总结,也许以后都不会有这样美好的经历了。 青海行——洗涤心灵之旅 ...
    请叫我大颖子阅读 411评论 1 1
  • 旋绕在耳边带有节奏的嘶叫一阵一阵传来,像是不甘当这钢筋水泥的傀儡,拉扯着本属于城市的宁静,等待着救赎。可是时间这玩...
    三千繁梦阅读 397评论 0 2
  • 嗨,好久不见,马上就要度过一个长长的假期了,你又要到世界的哪一个角落里去看太阳落下呢?旅行永远是一件幸福而饱满的事...
    牛肉蘑菇酱阅读 529评论 0 0