上班开始,打开电脑,git pull:拉取git上最新的代码;

  编辑代码,准备提交时,git stash:将自己编辑的代码暂存起来,防止git pull时与库中的代码起冲突,否则自己的代码就白敲了;

  然后,git pull:拉取一下代码,与库中代码,做到同步,有冲突则解决冲突,如果省了这一步,别人有提交的代码,没有更新,自己提交就会报错,再走这一步,就会把别人的代码拉取出来,然后一起提交,就相当于你提交了自己的代码,也提交了别人的代码;还有,有时这样会使库中代码乱掉,别人的心血也会丢失,你就是罪魁祸首了;

  然后,git stash apply:将暂存在缓存区的代码下载到本地,如果和git上的代码有冲突就要解决冲突(这种冲突是在本地解决,保障git仓储的代码稳定);

  然后,git status:查看文件状态,红色表示未提交已修改的文件,绿色为提交过已修改的文件,可以省略,初期用建议查看提交前后对比;

  然后,git add:添加提交的文件,可以全部添加git add . 也可以单个或多个添加,git add 后面跟文件名称,不知道名称可以参考git status罗列出来的修改文件;

  然后,git commit -m "提交文件的修改说明" 养成好的习惯,把说明写清楚,方便检查与版本恢复;

  然后,git status :查看文件是否提交,特别适合单个文件提交,查看遗漏提交的文件,可以省略;

  最后,git push :推送代码到git库中;

以上操作,仅在正常开发中使用,开发中会遇到各种问题,git也给出了许多方法,下面我复制了别人总结的git命令大全,仅供参考使用,不做任何商业用途;有错误敬请指出

一、新建代码库


# 在当前目录新建一个Git代码库
$ git init # 新建一个目录,将其初始化为Git代码库
$ git init [project-name] # 下载一个项目和它的整个代码历史
$ git clone [url]

二、配置

Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。


# 显示当前的Git配置
$ git config --list # 编辑Git配置文件
$ git config -e [--global] # 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

三、增加/删除文件


# 添加指定文件到暂存区
$ git add [file1] [file2] ... # 添加指定目录到暂存区,包括子目录
$ git add [dir] # 添加当前目录的所有文件到暂存区
$ git add . # 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p # 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ... # 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file] # 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

四、代码提交


# 提交暂存区到仓库区
$ git commit -m [message] # 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message] # 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a # 提交时显示所有diff信息
$ git commit -v # 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message] # 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

五、分支


# 列出所有本地分支
$ git branch # 列出所有远程分支
$ git branch -r # 列出所有本地分支和远程分支
$ git branch -a # 新建一个分支,但依然停留在当前分支
$ git branch [branch-name] # 新建一个分支,并切换到该分支
$ git checkout -b [branch] # 新建一个分支,指向指定commit
$ git branch [branch] [commit] # 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch] # 切换到指定分支,并更新工作区
$ git checkout [branch-name] # 切换到上一个分支
$ git checkout - # 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch] # 合并指定分支到当前分支
$ git merge [branch] # 选择一个commit,合并进当前分支
$ git cherry-pick [commit] # 删除分支
$ git branch -d [branch-name] # 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

六、标签


# 列出所有tag
$ git tag # 新建一个tag在当前commit
$ git tag [tag] # 新建一个tag在指定commit
$ git tag [tag] [commit] # 删除本地tag
$ git tag -d [tag] # 删除远程tag
$ git push origin :refs/tags/[tagName] # 查看tag信息
$ git show [tag] # 提交指定tag
$ git push [remote] [tag] # 提交所有tag
$ git push [remote] --tags # 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]

七、查看信息


# 显示有变更的文件
$ git status # 显示当前分支的版本历史
$ git log # 显示commit历史,以及每次commit发生变更的文件
$ git log --stat # 搜索提交历史,根据关键词
$ git log -S [keyword] # 显示某个commit之后的所有变动,每个commit占据一行
$ git log [tag] HEAD --pretty=format:%s # 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
$ git log [tag] HEAD --grep feature # 显示某个文件的版本历史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file] # 显示指定文件相关的每一次diff
$ git log -p [file] # 显示过去5次提交
$ git log -5 --pretty --oneline # 显示所有提交过的用户,按提交次数排序
$ git shortlog -sn # 显示指定文件是什么人在什么时间修改过
$ git blame [file] # 显示暂存区和工作区的差异
$ git diff # 显示暂存区和上一个commit的差异
$ git diff --cached [file] # 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD # 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch] # 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}" # 显示某次提交的元数据和内容变化
$ git show [commit] # 显示某次提交发生变化的文件
$ git show --name-only [commit] # 显示某次提交时,某个文件的内容
$ git show [commit]:[filename] # 显示当前分支的最近几次提交
$ git reflog

八、远程同步


# 下载远程仓库的所有变动
$ git fetch [remote] # 显示所有远程仓库
$ git remote -v # 显示某个远程仓库的信息
$ git remote show [remote] # 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url] # 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch] # 上传本地指定分支到远程仓库
$ git push [remote] [branch] # 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force # 推送所有分支到远程仓库
$ git push [remote] --all

九、撤销


# 恢复暂存区的指定文件到工作区
$ git checkout [file] # 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file] # 恢复暂存区的所有文件到工作区
$ git checkout . # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file] # 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit] # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit] # 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit] # 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit] # 暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop

十、其他


# 生成一个可供发布的压缩包
$ git archive

git工作操作步骤的更多相关文章

  1. Git分支操作步骤

    学习操作Git分支,具体如下: - 查看分支 - 创建分支 - 切换分支 - 合并分支 - 解决分支的冲突 方案: Git支持按功能模块,时间,版本等标准创建分支; 分支可以让开发分多条主线同时进行, ...

  2. 连接Git@OSC操作步骤

    一.准备工作 软件下载 Git:地址 TortoiseGit:地址 二.安装与配置 1.Git安装 Git配置 设置客户端的用户名和email 然后,到Git@OSC 上面注册一个帐号. 这个帐号就是 ...

  3. idea建立项目关联到git仓库操作步骤

    eg:创建一个名为demo的git项目 创建git远程项目,命名为[/demo] 在[D:\workspace\gf]创建本地项目[demo] 在idea里选择[VCS]->[Checkout ...

  4. Git 工作原理以及常用命令操作

    GIT工作原理 要了解GIT工作原理,先了解GIT的这几块区域: 工作区域划分 工作区:指的是本地工作空间,如果刚拉取下来的代码,没有修改的内容,这块区域是空白的 (modified-已修改状态) 暂 ...

  5. git详情、git工作流程、常用命令、忽略文件、分支操作、gitee远程仓库使用

    今日内容概要 git详情 git工作流程 git常用命令 过滤文件 分支操作 git远程仓库使用 可参照:https://www.cnblogs.com/liuqingzheng/p/15328319 ...

  6. 工作中常用Git指令操作

    常用Git指令总结 前阵子有几天好不顺,可谓是喝水都呛着,更何况被Git给呛着了,还不轻,哈哈.所以打算总结一下自己在工作使用到Git相关的东西以及和大家探讨使用GIt的心得体会.于是,关于Git的的 ...

  7. Git commit/pull/push的操作步骤

    1.操作步骤需要严格执行如下顺序:commit->pull->push 2.commit:将代码提交到本地仓库. 3.pull:将远程仓库代码同步到本地仓库.如遇冲突,解决冲突,重复com ...

  8. 版本控制工具——Git常用操作(上)

    本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...

  9. git的学习笔记(一):git本地操作

    1.Git介绍 Git是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发. Git ...

随机推荐

  1. [深度分析] Python Web 开发框架 Bottle

    [深度分析] Python Web 开发框架 Bottle(这个真的他妈的经典!!!) 作者:lhf2009913 Bottle 是一个非常精致的WSGI框架,它提供了 Python Web开发中需要 ...

  2. 第10课 std::bind和std::function(1)_可调用对象

    1. 几种可调用对象(Callable Objects) (1)普通函数指针或类成员的函数指针 (2)具有operator()成员函数的类对象(仿函数).如c++11中的std::function类模 ...

  3. WebBrowser JS回调delphi的方法 (简单通用)

    上一部分讲了Delphi根据方法名调用方法,这一部分还有用到,接着上一章: [主要原理] 通过TEmbeddedWB控件的OnShowMessage事件捕获弹窗来实现,弹窗时定义方法名和参数,在捕获方 ...

  4. ES6学习笔记<四> default、rest、Multi-line Strings

    default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...

  5. [Unity插件]Lua行为树(四):条件节点和行为节点

    条件节点和行为节点,这两种节点本身的设计比较简单,项目中编写行为树节点一般就是扩展这两种节点,而Decorator和Composite节点只需要使用内置的就足够了. 它们的继承关系如下: Condit ...

  6. ORA-01461的解决过程~~

    转自:http://blog.itpub.net/7607759/viewspace-521189 近日生产库中的一个过程报出了ora-1461的错误,虽然错误实际处理起来非常简单,但解决过程中与ya ...

  7. MYSQL 优化常用方法(转载)

    1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...

  8. 关于URI和URL的区别

    URI:统一资源标志符(Uniform Resource Identifier)URL:统一资源定位符(uniform resource location) URN = Universal Resou ...

  9. windows系统安装

    系统最新地址:https://www.microsoft.com/zh-cn/software-download/windows10

  10. Redis 配置主从