Git 常用命令总结

项目延期
• 阅读 2547

以下的git命令是我参考了廖雪峰等关于git的文章之后,根据自己实际工作中接触到的情况而总结出来的一份清单,也是之前在公司用来培训的资料。我会继续补充和修改,欢迎留言指教。

  • 自报家门 git config --global user.name "RystLee” && git config --global user.email "rystlee100@gmail.com"

  • 搭建仓库 git init (产生的.git是版本库文件)

  • 查看仓库的状况 git status

  • 查看仓库中的文件有什么变化 git diff <file>

  • 确定仓库中的文件的变化没问题,将文件添加缓冲区(stage)并提交到仓库(分支) git add <file> && git commit -m "comments"
    注:添加到暂存区的文件,再对其进行修改不会影响他们接下来的commit操作

  • 查看最近的改动 git log [—pretty=oneline]

  • 将文件从缓冲区撤回 git reset HEAD <file>

  • 放弃文件最近一次的修改 git checkout — <file>

  • 时光机
    回到过去: git reset —hard commit_id 或者 HEAD^

HEAD是指针 指向当前版本 HEAD^^指向上上个版本 HEAD~10指向上第10个版本
返回现在: git reflog 查看提交历史,找到你要的commit_id

  • 删除文件 git rm <file>

  • 远程仓库GitHub

    • 创建SSH Key: 在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,ssh-keygen -t rsa -C "rystlee100@gmail.com"。然后将id_rsa.pub的内容拷贝到github的账户列表里。

    • 将本地仓库和github上的远程库关联并将本地的内容推送到远程库 git remote add origin git@github.com:rystlee/learngit.git && git push -u origin master; origin是远程库的默认名称, -u参数负责将本地的master分支与远程的master分支关联起来,在以后的推送时不要加该参数 git push origin master

    • 克隆远程库 git clone git@github.com:rystlee/learngit.git

    • 查看远程库信息 git remote -v

  • 创建分支 git checkout -b dev (加上-b参数相当于两条命令:git branch dev && git checkout dev)

  • 合并分支 在dev上工作完成之后,切回master,执行合并,然后删除dev: git checkout master && git merge dev && git branch -d dev

  • 查看所有的分支 git branch (分支前有*号的表示当前工作的分支)

  • 查看分支合并图 git log —graph

  • Fast Forward 默认的分支合并图是丢掉分支信息的。禁用fast forward模式会新建一个commit来进行合并,这样就会将分支信息保存下来 git merge —no-ff -m "merge with no-ff" dev

  • Bug分支 通过建立临时分支来修复bug,但是如果当你在dev上进行的工作还没完成而不能提交时,可以使用git stash来把当前的工作现场临时”藏匿”起来,这样git status查看工作区将会是干净的,现在你可以选择在master或者dev上建立一个临时的bug分支来进行修复bug的工做了。完成bug修复任务之后,git stash list查看之前藏匿的”工作现场”记录
    $ git stash list
    stash@{0}: WIP on dev: 6224937 add merge
    使用git stash apply stash@{0}来恢复,使用git stash drop stash@{0}来删除或者使用git stash pop将最近的工作现场恢复并删除记录。
    一般情况:当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到之前的工作现场。

  • Feature分支 开发一个新功能,最好新建一个分支,如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name> 强行删除该分支。如果直接在dev分支上开发该特性,那就可能比较麻烦了。

  • 推送分支到远程库 git push origin master 或推送其他分支,如dev git push origin dev; Bug分支只用于本地修复bug,就没必要推送到远程了,除非老板要看看你每周到底修复了几个bug; Feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

  • 抓取分支 克隆远程库,默认情况下,只能看到master分支;如果想在dev分支上进行开发,就必须创建远程origin的dev分支到本地,命令是 git checkout -b dev origin/dev 这样就建立了本地dev分支并与远程dev分支的进行了链接

  • 关联分支 如果git pull 或 git push提示”no tracking information”,则说明将本地的分支和远程的分支没有链接,用命令git branch —track <local_branch> origin/<remote_branch> 进行链接。

  • 多人协作的工作模式通常是:
    首先,可以试图用 git push origin <branch> 推送自己的修改;
    如果推送失败,则因为远程分支比你本地的新,需要先用git pull试图合并;
    如果合并有冲突,则解决冲突,并在本地提交;
    没有冲突或者解决掉冲突后,再用 git push origin <branch> 推送

  • 标签是版本库的快照,实质是指向某个commit的一个指针。
    git tag <tagname> 新建一个标签,默认为HEAD,也可以指定一个commit_id
    git tag -a <tagname> -m “comments” 可以指定标签信息
    git tag -s <tagname> -m “comments” 可以用PGP签名标签
    git tag 查看所有标签
    git show <tagname> 查看某个标签
    git tag -d <tagname> 删除标签
    git push origin <tagname> 推送标签到远程
    git push origin —tags 推送所有标签到远程
    git push origin :refs/tags/<tagname> 删除远程库的标签(先将本地要删除的标签干掉,该推送就会将远程的标签同步删除)

  • 让git适当的显示不同的颜色 git config —global color.ui true

  • 忽略特殊文件 https://github.com/github/git... 然后再加上自己定义的文件,最终得到一个完整的.gitignore文件

  • 设置命令的别名
    git config —global alias.unstage ‘reset HEAD’ -> git unstage test.php (将暂存区的修改撤销)
    git config —global alias.last ‘log -l’ -> git last (显示最后一次提交信息)
    有人丧心病狂
    git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

  • 比较分支 合并分支之前可以先进行比较 git diff <branch1> <branch2>

  • 关联本地仓库和远程仓库 如果你不是clone的远程仓库,就需要进行关联操作:git remote add origin <server>:<repository>

  • 清理本地对应的远程已经删除的分支 git remote prune origin

  • 比较当前文件和上一次提交之间的差异 git diff HEAD^ HEAD <file>

  • 找出是谁最近改动过代码 git blame <file> ,配合grep使用效果更佳

注意事项
  • 所有的版本控制系统,其实只能跟踪文本文件的改动,不能跟踪二进制文件内容的改动,不幸的是,Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的

  • Git设计优秀主要是因为它跟踪管理的是修改,而非文件,每个文件只有一份,git会根据分支记录的修改去控制工作区中的文件的内容。

  • master也是分支,但却是主分支,HEAD指针指向的分支是当前工作的分支,良好的开发方式是新建一个分支(名字可以是dev)进行开发,然后add、commit等,最后再切回master进行merge操作,master分支仅用来发布新版本。

  • 本地创建的分支如果不推送到远程,对其他人就是不可见的。

  • 修改文件未提交时切换分支,修改的内容会同步到切换到的分支上,直到提交之后。

  • .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。正确的做法应该是:git rm --cached logs/xx.log,然后更新 .gitignore 忽略掉目标文件,最后git commit -m "We really don't want Git to track this anymore!"

原文链接:https://macken.me/article/git-instructions

点赞
收藏
评论区
推荐文章
前端尾随者 前端尾随者
3年前
sourceTree 添加 ssh key 方法
1.使用git客户的生成公私钥:id\rsa、id\rsa.pub1.1设置Git的username和email:$gitconfigglobaluser.name"xxx"$gitconfig\globaluser.email"xxx.mail@xxx.com"1.2.生成SSH密钥过程:1.2.1.检查是不是已经存在密钥(
Wesley13 Wesley13
3年前
mysqlsla安装和使用介绍
<divid"cnblogs\_post\_body"class"blogpostbody"<p安装mysqlsla<br源码路径:https://github.com/danielnichter/hackmysql.com<br源码存放路径:/usr/local/src<br1、获取源码<br如果没有git命令,请先安装git<
Stella981 Stella981
3年前
Mac002
MacGit安装注意:在安装Git前,可先安装homebrew,应用brew命令安装Git即可。一。Mac安装homebrew参考博客:https://blog.csdn.net/yuexiaxiaoxi27172319/article/details/51279369Homebr
Wesley13 Wesley13
3年前
GIT命令大全
Git命令大全Git最小配置某账号下所有的Git仓库都有效gitconfigglobaluser.name'您的名称'gitconfigglobaluser.email'您的Email'只对当前Git仓库有效gitconf
Stella981 Stella981
3年前
Git 看这一篇就够了
本文的结构如下:1.作者和开发原由2.Git的数据模型3.常用命令4.资源推荐作者和开发原由Talkischeap.Showmethecode.这句话就出自Linux和Git的作者LinusTo
Stella981 Stella981
3年前
Linux上安装git并在gitlab上建立对应的项目
1.CentOS上面安装git我所用的CentOS为CentOS6.5,其他版本没有测试。yuminstallgit 安装之后查看git版本信息gitversion2.配置git信息gitconfigglobaluser.name"yourname"gitconfigglobaluser.em
Stella981 Stella981
3年前
Git的初始化配置和基本命令的使用
首先说下什么是Git,很多人会把Git和GitHub搞混淆。Git是一个版本控制的工具;GitHub是一个网站,只不过是基于Git的。安装Git就不累述了,自行百度。这里主要说下,初次运行Git的配置和Git基本命令的使用。初次运行Git的配置(windows系统):打开Git命令行输入以下命令:gitconfigglobaluser.
Stella981 Stella981
3年前
Android拓展系列(3)
前几天,又切换回ubuntu11.04系统了,体验以下unity桌面。 android系统源码(包括sdk源码)的下载主要是需要用到git工具,关于git工具的使用我会抽空专门介绍,这里用到的时候简略说明一下。1.安装git和curl命令:$sudoaptgetinstallgitcorecurl说明:
Stella981 Stella981
3年前
Gogs
一、先决条件Gogs、Git、JDK、Jenkins。准备好这些安装包。安装顺序是 Git Gogs JDK Jenkins安装Gogs和Git,可参考我这篇文章https://www.cnblogs.com/cluyun/p/10822992.html(https://www.oschina.net/acti
Wesley13 Wesley13
3年前
ubuntu14.10server搭建git服务器成功记录
安装配置git1.安装git和openssh。在当前用户下执行如下命令安装git和openssh:sudoaptgetinstallgitcoreopensshserveropensshclientgitcore是git版本控制核心软件安装opensshserve
Stella981 Stella981
3年前
Git常用命令总结
一般来说,Git日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住100个命令。!(https://imgconvert.csdnimg.cn/aHR0cHM6Ly93d3cuY3p0Y21zLmNuL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIwLzAzL2JnMjAxNTEyMDkwMS5wbmc?xos