git 命令记录

Git 是一个开源的分布式版本管理工具。他的开发者是 Linux 操作系统的作者 Linus Torvalds。Git 被开发出来的初中是为了更好的额管理 Linux 内核,而现在已经被广泛的应用于各种大中小型的项目。

当我执行git add .的时候没报错,接着执行git commit -m “F code”,也没出现问题。接我我高兴的有执行了git push origin 这时候灾难来了。。提示我一些错误,我照着错误网上找了一下结果,没有找到可以解救的办法。于是我仔细一思考:出现这个原因,应该是我之前在笔记本电脑上提交了一次更新,然后我在家里的台式机有提交了一次跟新,导致更新冲突!!,于是我又接着上网找git更新冲突的解决办法。但是老天不帮我,找不到。。

最后的最后我想起之前有过一次类似的经历,我先是将项目clone下来,然后将github上的项目仓库也给删除了。然后我重新创建一个一模一样的项目,再将代码添加进去应该就OK了但是啊但是!!不仅那么多天的提交记录没有了,而且项目在AndroidStudio中还是显示不出文件夹结构(在Android下),我崩溃了。。

更新一下AndroidStudio希望有用!!

问题

androidstudio的android目录下显示不出文件!!

后记

记得备份

2017年7月3号更新

Git命令

Git是世界上最先进的分布式版本控制工具。 Git教程

Git和SVN的区别

  • SVN是集中式版本控制系统,版本库是几种放在中央服务器的,工作的时候先从中央服务器获取到最新的版本后才能工作,完成工作后将做完的任务推送到中央服务器。集中式版本控制系统是必须联网才能工作。

  • Git是分布式版本控制系统,它没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候可以不用联网

  • 集中式和分布式的区别是

    • 集中式开发是将项目集中存放在中央服务器中,在工作的时候,大家只在自己电脑上操作,从同一个地方下载最新版本,然后开始工作,做完的工作再提交给中央服务器保存。这种方式需要联网,现在云开发就是这样的处理方式。

    • 集中式的缺点:(1)如果网络出现异常或者很卡,直接影响工作效率。如果是中央服务器挂了,那就集体喝茶去了。 (2)还有一种情况,各自电脑中操作的所有软件工具,都存放在一个中央服务器上(现在流行叫云服务器),只需要用各自电脑登陆连接到云服务器上,(一般服务器都是用linux),比如用ps工具,大家其实用的是云服务器中的同一个ps 软件,在使用率高的情况下,ps会出现异常,当用ps筛选颜色的时候,已经混乱,无法正常选择颜色,这个情况是我在开发中遇到的。以前我们是每个人用各自安装的ps,但是在这样的环境下用的是同一个ps软件的时候就会有bug。(3)安全度不高,重要的东西都放在一个中央服务器中,如果被黑,那损失就大了。

    • 分布式开发:只要提供一台电脑作为版本集中存的服务器放就够了,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它也一样干活,只是交换修改不方便而已。而每一台电脑有各自独立的开发环境,不需要联网,本地直接运行,相对集中式安全系数高很多。

Git的工作流程

  • 克隆 Git 资源作为工作目录。clone
  • 在克隆的资源上添加或修改文件。add
  • 如果其他人修改了,你可以更新资源。status
  • 在提交前查看修改。diff status
  • 提交修改。commit push
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。reset commit push

新建代码库

在当前目录新建一个Git代码库
$ git init

新建一个目录,将其初始化为Git代码库
$ git init [project-name]

下载一个项目和它的整个代码历史
$ git clone [url]

配置

显示当前的Git配置
$ git config –list

编辑Git配置文件
$ git config -e [–global]

设置提交代码时的用户信息
$ git config [–global] user.name “[name]”
$ git config [–global] user.email “[email address]”

添加文件

  • git add README hello.php
  • $ git add . 添加当前目录的所有文件到暂存区

提交

  • 使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中

  • Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。

    1
    2
    $ git config --global user.name 'runoob'
    $ git config --global user.email test@runoob.com

查看提交记录

  • git log
  • git log –oneline 选项来查看历史记录的简洁的版本
  • 我们还可以用git log –oneline –graph 选项,查看历史中什么时候出现了分支、合并。以下为相同的命令,开启了拓扑图选项
  • 显示有变更的文件
    $ git status

  • 显示当前分支的版本历史
    $ git log

  • 显示commit历史,以及每次commit发生变更的文件
    $ git log –stat

  • 显示某个文件的版本历史,包括文件改名
    $ git log –follow [file]
    $ git whatchanged [file]

  • 显示指定文件相关的每一次diff
    $ git log -p [file]

  • 显示指定文件是什么人在什么时间修改过
    $ git blame [file]

  • 显示暂存区和工作区的差异
    $ git diff

  • 显示暂存区和上一个commit的差异
    $ git diff –cached [file]

  • 显示工作区与当前分支最新commit之间的差异
    $ git diff HEAD

  • 显示两次提交之间的差异
    $ git diff [first-branch]…[second-branch]

  • 显示某次提交的元数据和内容变化
    $ git show [commit]

  • 显示某次提交发生变化的文件
    $ git show –name-only [commit]

  • 显示某次提交时,某个文件的内容
    $ git show [commit]:[filename]

  • 显示当前分支的最近几次提交
    $ git reflog

查看谁修改了代码

  • git status 命令用于查看项目的当前状态
  • 执行 git diff 来查看执行 git status 的结果的详细信息

撤销缓存区的修改

  • git reset HEAD 命令用于取消已缓存的内容。

    1
    $ git reset HEAD -- hello.php 撤销具体文件

分支

  • 列出所有本地分支
    $ 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 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]

合并分支(提交代码用)

  • git merge
  • 解决冲突步骤
    • 进入文件 cat test.txt
    • git diff 手动修改冲突文件
    • git status
    • git add .
    • git commit -m “”
    • git push

远程相关

  • 从仓库clone

    git clone git@github.com:tianqixin/runoob-git-test.git

  • 添加远程仓库

    git remote add origin git@github.com:tianqixin/runoob-git-test.git

    1
    git push -u origin master
  • 查看远程仓库

    1
    git remote
  • 拉取数据

    1
    git pull
  • 提交数据

    1
    git push origin master    # 推送到 Github
  • 删除远程仓库

    1
    git remote rm origin2

撤销

  • 恢复暂存区的指定文件到工作区
    $ git checkout [file]

  • 恢复某个commit的指定文件到工作区
    $ git checkout [commit] [file]

  • 恢复上一个commit的所有文件到工作区
    $ 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]
小额支持我写出更好的文章~