Git Shell命令

提供练习的Demo地址:Demo项目地址

1、Git本地操作流程

修改工作区中文件(创建或编辑文件)->保存到暂存区git add .git add fileName)->提交到本地仓库git commit -m 'commit description')。

2、Git基本配置

设置全局的用户信息:

git config --global user.name "名字"
git config --global user.email "邮箱地址"

--global去掉,可以为单个项目设置用户信息。

3、本地仓库操作

  • 操作流程
    1. 创建新仓库
    2. 创建、删除、修改文件
    3. 缓存文件
    4. 提交文件到本地
    5. 反复2-4步骤。
      mkdir gitTest  创建gitTest文件夹
      cd gitTest
      git init       初始化git仓库
      vi README.md   创建README.md文件
      git add .      添加到暂存区
      git commit -m '创建README.md文件'
      
  • git log查看提交历史日志
  • git status查看提交状态
  • git reset HEAD file取消暂存区的文件
  • git commit —amend修改上一次提交
  • git commit --amend --author='new_user_name <new@example.com>'修改最后一次提交的用户名和邮箱
  • git checkout file撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区。

4、远程仓库操作

1、克隆远程仓库

  • git clone <url>克隆远程仓库

    该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。

  • git clone <url> <本地目录名>克隆远程仓库且指定本地目录名
  • git remote列出所有远程主机
  • git remote -v查看远程主机的网址
  • git clone -o <hostname> <url>克隆的时候,指定远程主机名为hostname

    克隆版本库的时候,远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。

  • git remote show <origin>查看origin主机的详细信息
  • git remote add <主机名> <url>添加远程主机
  • git remote rm <主机名>删除远程主机
  • git remote rename <原主机名> <新主机名>重命名远程主机
  • git fetch <远程主机名>将某个远程主机的更新,全部取回本地
  • git fetch <远程主机名> <分支名>取回特定分支的更新,可以指定分支名

2、分支操作

  • git branch 查看本地所有分支
  • git branch -a 查看所有的分支
  • git branch -r 查看远程所有分支
  • git checkout -b newBranch origin/masterorigin/master的基础上,表示创建+切换到新分支

    git checkout加上-b参数相当于:

    1. git branch newBranch
    2. git checkout newBranch
  • git branch newBranch创建新分支
  • git checkout newBranch 切换到本地newBranch分支
  • git branch -d newBranch删除newBranch分支(需先切换到其他分支才能删除)
  • git branch -m Dev Develop重命名分支DevDevelop
  • git merge origin/master在本地分支上合并远程分支
  • git rebase origin/master在本地分支上合并远程分支

3、git pull(取回远程主机某个分支的更新,再与本地的指定分支合并)

  • git pull <远程主机名> <远程分支名>:<本地分支名>

    git pull origin next:master取回origin主机的next分支,与本地的master分支合并

    git pull origin next取回origin/next分支,再与当前分支合并,相当于git fetch,再git merge

    1. git fetch origin
    2. git merge origin/next
  • git branch --set-upstream master origin/next指定master分支追踪origin/next分支

    手动建立追踪关系,当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

  • git pull origin本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并

    如果当前分支只有一个追踪分支,连远程主机名都可以省略。

  • git pull当前分支自动与唯一一个追踪分支进行合并
  • git pull --rebase <远程主机名> <远程分支名>:<本地分支名>如合并需要采用rebase模式,可以使用--rebase选项

4、git push(将本地分支的更新,推送到远程主机)

  • git push <远程主机名> <本地分支名>:<远程分支名>
    1. 注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。
    2. 如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
  • git push origin master将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
  • git push origin :master等同于git push origin --delete master表示删除origin主机的master分支。

    如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

  • git push origin将当前分支推送到origin主机的对应分支

    如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

  • git push如果当前分支只有一个追踪分支,那么主机名都可以省略
    1. 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。
    2. 此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。
    3. Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。
    4. 如果要修改这个设置,可以采用git config命令。
      git config --global push.default matching
      或者:
      git config --global push.default simple
  • git push -u origin master将本地的master分支推送到origin主机,同时指定origin为默认主机

    如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。

  • git push --all origin将所有本地分支都推送到origin主机

    不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用 --all选项。

  • git push --force origin使用--force选项,结果导致在远程主机产生一个”非直进式”的合并(non-fast-forward merge)。除非你很确定要这样做,否则应该尽量避免使用--force选项。
  • git push origin --tagsgit push不会推送标签(tag),除非使用--tags选项。

5、git tag(查看现有所有标签)

  • git tag -l 'V0.1.*'显示符合条件的Tag标签
  • git tag -a V1.0.2 -m 'my version is V1.0.2, Debug environment'新建含备注的标签

    标记当前HEAD使用git tag命令。标记名称(版本)前加上-a选项,使用-m选项,并提供标签备注信息。

  • git tag -a v1.2.0 <commitId>给指定的commit打Tag,commitId可通过git log获取
  • git show V1.0.2显示标签详情
  • git push origin --tags提交标签
  • git tag -d V1.0.2 删除本地指定tag
  • git push origin :refs/tags/tagVersion删除远程主机tag

git tag分为两种类型:轻量tag和附注tag。

  1. git tag v0.1.2-light创建轻量Tag
  2. git tag -a v0.1.2 -m '0.1.2版本'创建附注Tag
    轻量tag是指向提交对象的引用,附注Tag则是仓库中的一个独立对象。建议使用附注Tag

6、非常用命令

git checkout --track origin/dev 切换到远程dev分支
git rm 文件名(包括路径) 从git中删除指定文件
git config --list 看所有用户
git ls-files 看已经被提交的
git rm [file name] 删除一个文件
git commit -a 提交当前repos的所有的改变
git commit -v 当你用-v参数的时候可以看commit的差异
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git diff 查看尚未暂存的更新
git rm a.a 移除文件(从暂存区和工作区中删除)
git rm --cached a.a 移除文件(只从暂存区中删除)
git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容

  • 本文针对初级用户,从最简单的讲起,但是需要读者对Git的基本用法有所了解。 Git是开源的分布式版本控制系统,...
    Sachie阅读 1,150评论 0 2
  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,472评论 1 26
  • 加密 Mac下创建加密的zip文件,无需第三方软件,直接在终端中 敲入几行命令就能搞定。方法一: 选择压缩包保存路...
    滕的世界阅读 1,891评论 0 0
  • 生活中缺少的东西 独自走在繁华的街道上,看着眼前的万家灯火,心里有种莫名的失...
    慢性患者阅读 575评论 1 1