源栈培训:项目管理:Git命令行

更多
2019年05月23日 23点31分 作者:叶飞 修改

cmd常用DOS命令

盘符转换:

目录:md/rd/cd/dir  (帮助记忆:make/remove/change directory)

echo:查看环境变量(中的PATH)

echo %PATH%
set PATH

注意:在dos窗口中以命令行方式对环境变量的操作只对当前窗口的应用有效

type/more:显示文件内容

管道:>, >>, <

[综合运用]创建文件:type nul > [filename]


确认git已安装

安装Visual Studio 2107之后,在vs2017安装目录中找到 git.exe

检查系统环境变量path(我的电脑-属性-高级系统设置-),是否添加了git.exe的路径

运行cmd,输入:

git --version
或者,按Team Explore提示安装gitbash


git config

-- list:显示所有配置 (退出:q)

三种配置

位置:

  • system/global:$HOME (C:\Users\$USER)
  • local:.git\config

修改示例:

  • git config --global user.name "fg"
  • git config --global merge.tool vsdiffmerge
  • git config --bool core.bare true


仓库(repository)

git的逻辑:现在本地创建一个仓库,所以变化首先提交到本地仓库,然后再进行“推送”

git init [-bare]      #在当前目录初始化一个(空)仓库
git add               #往仓库中添加需被跟踪(track)的文件
git commit -m "init"  #将变化提交到仓库中

Linux风格:

  • 成功不报任何提示
  • 如果忘记 -m,就要面对“Linux样式”的文本编辑器……(退出:ESC => :wq)

查看当前状态

git status [-s]

关键字:change / untracked / unstaged / staged/  commit

  • 没有add的内容(不是文件)不会被track和stage:每一次commit之前都需要add (参数:-a,可以跳过暂存直接提交 )
  • 没有被track和stage的内容不会被commit
  • 但被track的文件改动(change)会被跟踪(track)

忽略不需要被track的文件:.gitignore。查看被git管理的文件:

git ls-files


常用命令

查看更改(和Repoistory相比

git diff             #尚未添加到stage的变更:比较工作区和仓库
git diff --staged    #已经添加到stage,尚未提交的变更:比较staged和repository

查看历史提交

git log <filename>        #某个文件的历史记录
git log -p -2 --stat      #最近两次的提交,包含差异和统计信息
git log --since=2.weeks   #最近两周以内的提交
git log -Sagain           #内容中包含again的提交
git log --grep init       #message log中包含init的提交 global regular expression print
git log --pretty=oneline   #一次提交只显示一行
git log --pretty=format:"%h - %an %cd : %s"   #指定格式 hash / author name / commit date / subject


标签

打标签:

git tag v1.0                       #轻量级
git tag -a v1.0 [-m "<message>"]   #加注释
git tag -a v1.1 <commit_hash_id>   #在<commit_hash_id>上补打标签
查看标签:
git tag [-l <seek_tag_part>] #显示现有的标签
git show <tag>               #显示<tag>标签详细信息
删除标签:
git tag -d <tag_name>
迁出标签:
git checkout <tag_name>

其他操作(慎重)

删除文件

  • del(普通删除) + add + commit
  • git rm <file_name> + commit
参数:--cached,可以在删除repository的同时保留一份工作区 untracked的副本

重命名

  • 如果直接(用操作系统)重命名文件,会导致git认为该文件为“新文件”,无法记录之前的log  (和文档不符……再尝试
  • git mv<old> <new>

撤销

git commit --amend      #合并两次提交(修复上一次提交)
git reset HEAD <file>   #从暂存区中移出
git checkout -- <file>  #撤销(工作区上)文件上的更改,类似于undo/ctrl+z
体会:暂存区的意义


远程仓库管理

为什么需要?多人协作。

首先,你要有一个远程仓库!(无法在本地通过git命令在远程创建一个仓库

  • 建议:使用github(延伸:局域网中可以直接使用文件协议,也可以自己搭建服务器,使用https、ssl、git等协议)
  • 注意:要么clone(fork本质上就是clone)到本地(空?)文件夹,要么push到远程的“空”仓库,以确保两个仓库是“一致”的。不能把A仓库push到B仓库……

然后,在本地(local)仓库和远程(remote)仓库之间同步(sync):

clone    #克隆,把远程仓库(包含历史记录,不仅是最新版本)复制到本地
fetch    #获取远程仓库里(别人提交的)未同步的更新信息,并存放到本地仓库
merge    #将fetch得到的更新同步到工作区(分支合并)
pull     #=fetch+merge
push     #把本地仓库中的改动推送到远程仓库

remote管理:

git remote [-v]                     # 显示管理的远程仓库
git remote add <remote_name> <url>  # 将<url>添加进远程仓库管理,本地名为<remote_name>
git remote show <remote_name>       # 显示<remote_name>的详细信息
git remote rename <old> <new>       # 重命名
git remote rm <remote_name>         #删除远程仓库的管理
推送标签:
git push origin <tag_name>    #将标签推送到远程仓库


帮助(help)

  • git help <verb>
  • git verb --help


作业

在cmd窗口中,使用DOS和git命令,完成以下任务:

  • 在global范围内,将自己的name加上前缀:yz-
  • 创建一个空文件夹,在里面新建一个git repository
  • 再新建三个文件,修改其内容的同时用git命令让其保持状态为:
    1. article:untracked
    2. problem:change to be committed 和 not staged
    3. task:committed
  • 显示problem上未添加到staged和已添加到staged上的变更
  • 显示task的提交记录
  • 再次提交task的修改,并用新的提交覆盖之前的提交
  • 将problem中已经staged的修改撤销,使得工作区找不到之前的变更
  • 打一个标签v1.0;再提交若干次,然后再打一个标签v1.1;再选择之前的一次提交,打一个标签v1.0.1
  • 将problem重命名为help,确保help上仍然保留着problem之前的提交记录
  • 在文件夹x和y下分别clone上述repository,然后:
    1. x上修改提交推送
    2. y上修改提交提送


源栈 项目管理 Git 命令行
赞: 46 踩: 0

打赏
已收到打赏的 帮帮币

你的 打赏 非常重要!
为了保证文章的质量,每一篇文章的发布,都已经消耗了作者 1 枚 帮帮币
没有“帮帮币”,作者无法发布新的文章。

全系列阅读
评论 / 0
叶飞的系列文章

源栈培训:ASP.NET全栈开发

飞哥的源栈培训:线上全程直播,免费收看;线下拎包入住,按周计费。本系列收录所有讲义(含视频录播地址)

编程那些事:菜鸟入门

大飞哥倾力之作,面向有意入行IT/开发/编程的初学者,欢迎任何形式的留言建议……

从包工头到程序猿

真实故事,讲述我在家装公司关门之后,如何转行成为一个程序猿的故事。(《折腾》第三卷)

《折腾》(卷一)青涩

时间段:从大学毕业到开始创业。离开青葱校园,涉世之初的那些往事……

《折腾》(卷二)风雨 之(1)工地

我一个完全的门外汉(无论装修还是管理),开始给黎叔装修房子。从踌躅满志,到四处碰壁;从一往直前,到左右为难……

《折腾》(卷二)风雨 之(2)胸怀

作为一个律师,接工程没签合同,被狠狠的坑了一把!年轻人暴烈的想要复仇,黎叔教他一个企业家的胸怀……

《折腾》(卷二)风雨 之(3)渠道

成立了公司,招聘了员工,开始大力的拓展业务,一个接一个的坑,摔倒了又爬起来……

《折腾》(卷二)风雨 之(4)视野

经历残酷现实的磨砺,终于明白:干啥事,都不能闭门造车,人要走出去,开阔视野……

未分类

系统自动生成的未分类系列

一锅大杂烩

从律师到包工头,从码农到写手,读书交友生活创业,各种零零碎碎,乱七八糟……

人人都是程序猿

计算机编程普及课程,视频:https://space.bilibili.com/55410301/#/channel/detail?cid=49491

全部
关键字



帮助

反馈