有用的git建议
这篇文章的目的是给经常使用git管理项目提供一个有益的提醒。如果你是git新手,可以先阅读文后的引用部分,然后在回头阅读此篇文章。在介绍git命令之前,你可以先看看来自 on-my-zsh 提供的别名。
基本命令
git config --global user.name "Your Name"git config --global user.email "youremail@example.com"git config --global core.editor <your favorite editor here>- Ex:
git config --global core.editor vim
- Ex:
git init:初始化一个repo。
Commit 结构
git status(gst):查看 repo 状态- 工作区:
- .git 目录
- 暂存区
- 工作目录

git add <filename>(ga):添加一个文件到暂存区git add .(gaa):添加所有文件到暂存区git add *.js:添加所有后缀为js的文件到暂存区git rm --cached <file>:从暂存区删除一个新文件git commit -m "My first commit"(gcmsg):创建一次带 message 的提交git commit -v -a(gca):-v是 verbose 的缩写,会在底部显示差异信息和更多有意义的信息-a类似于git add .,会添加所有被修改和删除的文件,但会忽略新创建的文件
git help <command>:查看对应命令的帮助手册git log(glg,glgg,glo,glog):查看项目的提交历史
暂存区管理
git reset HEAD <filename>(grh):从暂存区删除一个被修改的文件git reset HEAD(grh):从暂存区删除所有被修改的文件git checkout <filename>(gco):从暂存区删除一个被修改的文件,并撤销文件的更改git commit -m "My first commit" --amend:添加文件/更改在暂存区的最后一次提交git commit -v -a --amend(gca!):添加文件/更改在暂存区的最后一次提交.gitignore:告诉git,哪些文件不被加入版本跟踪- 可以使用
git add <filename> -f命令添加一个不被版本跟踪的文件
- 可以使用
git diff <filename>(gd):查看基于当前文件的最后一次提交的更改差异git diff(gd):查看基于所有文件的最后一次提交的更改差异git reset HEAD~2 --soft:从项目提交历史中删除最近两次提交,但不丢弃文件的更改git reset HEAD~2 --hard:从项目提交历史中删除最近两次提交,但会丢弃文件的更改和在(最后两次)提交中创建的新文件git reset <commit> --soft --hard:--soft:将所有被更改的文件回溯到“待提交”状态--hard:commit之后,对被git追踪的文件的任何更改都被丢弃
git reflog:显示包括被撤销
在内的所有提交git merge <commit hash>:重新提交(restore the commit)git clean -f:删除工作目录中不被git进行版本追踪的文件
Stashed & Branches
Stash
git stash(gsta):将所有暂存区的文件移动到“储藏区”,类似于另一种类型的工作区git stash list:查看储藏队列(Stash lists)git stash apply:将最近一次储藏恢复到暂存区(可以用类似git stash apply stash@{num}(num从0开始计数) 的命令来使用在队列中的任意一个储藏(stashes))git stash clear:清空储藏队列git stash save "name of the stash":为储藏设置命名git stash pop(gstp):将最近一次储藏恢复到暂存区并从储藏队列删除此储藏git stash drop(gstd):从储藏队列删除最近一次储藏(stash@{0})(git stash drop stash@{num}从储藏队列删除指定储藏)
Branch
git checkout -b dev(gco):创建 dev 分支并从当前分支切换到 dev 分支git branch(gb):查看所有分支git checkout master(gcm):切换到主分支git merge <branch>(gm):合并分支git rebase master:先将 master 上的更改合并到当前分支,再添加当前分支的更改。如果有冲突,解决冲突后加--continue参数继续合并git branch -d <branch>: 删除分支,-D则强制删除分支git merge <branch> --squash:将多次提交合并成一个,其流程如下:
# Go to the `master` branch
git checkout master
# Create a temp branch
git checkout -b temp
# Merge the feature/x branch into the temp using --squash
git merge feature/x --squash
# See the new modifications/files in the Staging Area
git status
# Create the unified commit
git commit -m "Add feature/x"
# Delete the feature/x branch
git branch -D feature/x
- rebase 和 merge 的区别:
- rebase:
- 提交历史(的展示)是线性的
- 缺点:会删除最近一个 commit,然后创建一次新的 commit
- 如果已提交到远程,不要使用 rebase
- merge:
- 提交历史(的展示)是分叉的
- 对于两个分支的合并,会创建一个次新的 commit
- rebase:
远程仓库管理
git remote add <name> <url>:添加一个将被追踪的远程仓库git remote rm <name>:移除一个远程仓库git push <remote> <remote-branch>(gp,ggp):将当前分支的本地 commit 推送到远程仓库git fetch <remote> <remote-branch>:拉取远程仓库的最新 commit 到当前(本地)分支(<remote>/<branch>),不会合并git pull <remote> <remote-branch>(gl,ggl):拉取远程仓库的最新 commit 到当前(本地)分支,并自动 mergegit pull --rebase(gup):以 rebase 的方式进行合并,而不是 merge
其它有用的命令
git tag <name>:创建一个 tag(如:v1.3)git push --tags:将本地 tags 推送到远程仓库git push <tag>:推送指定的本地 tag 到远程
有用的git建议的更多相关文章
- 你不一定知道的几个很有用的 Git 命令
这里给大家分享一些很有用的 Git 命令,其中很多用法你可能都不知道,无论你是工作在团队环境中或在您的个人项目中,这些命令将对你帮助很大,让你可以更加高效的进行项目开发,更轻松愉快的工作和生活. 您可 ...
- 不常用但很有用的git show 和 git blame
团队使用git 合作时,可能遇见想要查看一段比较难以阅读代码, 此时可能需要联系最新的修改者是哪位,这时候最有用的最快捷的方法就是git blame 啦, 这个指令的output是一个文件的各个区域段 ...
- 有用的git片段
世界上知识那么多,又岂是人力所能穷尽,于是术业有专攻.对于git,有用的命令片段其实非常少,而命令却是非常多.于是,掌握git常见的用法就足够了.不要在语句级别上记忆git命令,在代码片段级别上记忆g ...
- git 建议使用
1 登录github官网首页 创建一个项目 2 本地克隆下载git项目 git clone https://github.com/wangguoxingduanxuejing/branch-pract ...
- 有用的git命令
1. git log -p // 查看log的详细信息 2. git reset HEAD xxxx // 将文件从stage状态拉出来 3. git checkout -- xxxx // 将修改的 ...
- 一些有用的git命令清单
以下是一些我常用的git命令清单 如果以下的命令不清晰细节,请看git的文档. 设置个人信息 git config --global user.name "John Doe" gi ...
- 8 个不常见但很有用的 Git 命令
1. 拉取远程代码并且覆盖本地更改 2. 列出远程和本地所有分支 3. 强制更新远程分支 4. 回滚一个 merge 5. 修改之前的提交记录或者很久前提交的记录 6. 使用多个远程代码库,并且使用多 ...
- 超级有用的git reset --hard和git revert命令
很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导致maven项目格式不正确,这个时候,可以 ...
- 日常使用 Git 的 19 个建议[转]
我使用Git已经有4年之久,在这里想分享一些实用的小技巧,希望能对大家有所帮助. 如果你对git一无所知,那么我建议先去读一下Git 常用命令速查.本篇文章主要适合有一定 git 使用基础的人群. 目 ...
随机推荐
- SQL Server 中VARCHAR(MAX)变量赋值引起的性能问题。
案例环境: 操作系统版本 : Windows Server 2008 R2 Standard SP1 数据库版本 : Microsoft SQL Server 2012 (SP1) - 11. ...
- 测试几个xml的问题
使用sql server的时候,免不了与xml的参数打交道,xml大多数时候都给我们的程序带来方便,但是也有些时候会有变量赋值不通过的时候.(当然罗,如果你本身xml都通不过 xml spy 之类软件 ...
- PostgreSQL-PL/pgSQL
参考: https://wiki.postgresql.org/wiki/9.1%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B9%9D%E7%AB%A0 摘记: PL/pgSQL是 ...
- 设计模式C#实现(十三)——享元模式(蝇量模式)
意图 0 适用性 1 结构 2 实现 3 效果 4 参考 5 意图 运用共享技术有效地支持大量细粒度的对象. 适用性 当以下情况都成立时使用: 一个程序使用了大量的对象 完全由于使用大量对象造成很大存 ...
- HTML基本组成结构与标签的认识
HTML基本组成结构与标签 其实组成结构用一张图来简单了解下如下 目前一般网站的结构是会如此不是很清晰简单 先来说说header头部 这样是不是更加清楚了 导航栏是引导用户查看网站内容的快捷入口,打个 ...
- python的进制转换二进制,八进制,十六进制及其原理
#!usr/bin/env python# coding:utf-8def binary(): '''二进制的方法与算法''' Number = 10 Number1 = 20 Nu ...
- ES5 对象的扩展(Object.preventExtensions)、密封(Object.seal)和冻结(Object.freeze)
前面提到 ES5 对象属性描述符,这篇看看对象的扩展.密封和冻结. 扩展对象 Object.preventExtensions Object.isExtensible 密封对象 Object.seal ...
- 淘宝技术牛p博客整理
淘宝的技术牛人的博客http://blog.csdn.net/zdp072/article/details/19574793
- 强制浏览器使用兼容模式,Web.config,httpProtocol
对于一些政府类的网站,很多支持IE6~8,而不支持使用更高版本浏览器浏览.虽然有些浏览器会自动使用兼容模式,或有些人会手动调整浏览器的兼容模式,但不是每一个人.每一款浏览器都可以做到用兼容模式.所以, ...
- [django]django+datatable简单运用于表格中
使用datatable首先需要下载datatable文件,文件主要包括三个文件夹css,img,js相关文件,在django中如何配置呢? 首先需要在模板中引入datatable文件,格式如下: &l ...