Git常用命令总结

来源:互联网 发布:名校就读 知乎 编辑:程序博客网 时间:2024/06/13 22:16

我将郭霖的《第一行代码》介绍的git命令放在了一起,方便以后使用查看。

  • 郭霖的博客:http://blog.csdn.net/guolin_blog/
  • git开源项目地址:https://github.com/git
  • git官方说明文档:https://git-scm.com

安装git

  • Linux下安装:sudo apt-get install git-core,回车并输入密码即可。
  • Windows下安装:http://msysgit.github.io/直接下载最新版即可,如果下载太慢,可以使用科学上网

配置身份

  • 配置用户名:git config --global user.name "your name"
  • 配置邮箱:git config --global user.email "your email"

配置完成以后查看是否配置成功:git config --global user.name以及git config --global user.email,或者直接查看配置文件vi ~/.gitconfig

创建本地仓库

  1. cd到任意目录下,windows可在任意目录下:右击鼠标>Git Bash Here
  2. git init
  3. 执行上面的命令以后,会在该目录下生成一个隐藏的.git文件夹

如果你想删除本地仓库,只需要删除.git文件夹即可。

提交本地代码

提交本地代码只需要先将需要提交的文件/文件夹add进来,然后commit即可。

添加文件

  • 添加单个文件:git add AndroidManifest.xml
  • 添加文件夹:git add src
  • 添加所有文件:git add .

提交

git commit -m "First commit."
注意:在commit 命令的后面我们一定要通过-m 参数来加上提交的描述信息,没有描述信
息的提交被认为是不合法的。

忽略文件

某些时候,我们不希望将一些文件或者文件夹(如签名文件或者IDE自动生成的文件)提交。git 提供了一种可配性很强的机制来允许用户将指定的文件或目录排除在版本控制之外,它会检查代码仓库的根目录下是否存在一个名为.gitignore 的文件,如果存在的话就去一行行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外。注意.gitignore 中指定的文件或目录是可以使用“*”通配符的。例如以下是Android studio在项目根目录下生成的.gitignore文件:

*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.externalNativeBuild

查看修改内容

代码提交之后,我们后面还可能会对项目不断地进行维护,添加新功能等,有可能写到后面的时候我们就已经忘记前面修改了什么东西了。我们可以使用git 来查看自上次提交后文件修改的内容:

  • 查看文件修改情况 git status
  • 查看文件更改的内容git diff
  • 查看指定文件的更改情况:git diff src/com/example/providertest/MainActivity.java

撤销未提交的修改

有时候我们瞎jb乱改代码,本来好好的代码全部改成了bug,这个时候已经不知道具体改了什么了,Ctrl+z又太麻烦,如果代码还未提交,这个时候就需要执行checkout命令撤销修改了。

  • 对于还没执行add命令的情况:git checkout src/com/example/providertest/MainActivity.java
  • 对于执行过add命令的情况:
    1. 先执行:git reset HEAD src/com/example/providertest/MainActivity.java
    2. 再执行:git checkout src/com/example/providertest/MainActivity.java

查看提交记录

项目开发太久以后,我们早就忘了每次提交具体修改了哪些内容了,然而git却帮我们记着呢。

  • 查看历史提交信息:git log
  • 查看其中一条记录(-1表示只想查看一行记录) :git log 2e7c0547af28cc1e9f303a4a1126fddbb704281b -1
  • 查看具体修改了什么内容,加入-p参数:git log 2e7c0547af28cc1e9f303a4a1126fddbb704281b -1 –p

分支的用法

前面带*号的表示当前分支,对当前分支的修改不会影响到其它的分支。因此,如果我们在version1.0 分支上修复了一个bug,在master 分支上这个bug 仍然是存在的。这时,可以使用merge命令来完成合并操作,此时可能会存在代码冲突,就需要找出并解决这些冲突了。

  • 查看当前所有分支:git branch –a
  • 创建一条分支:git branch version1.0
  • 切换分支:git checkout version1.0
  • 将分支version1.0合并到当前分支:git merge version1.0
  • 删除分支:git branch -D version1.0

与远程版本库协作

例如现在有一个远程的版本库git地址:https://github.com/shuihuadx/XposedHook.git,先使用clone命令将代码下载到本地(即便远程的代码从未提交过)。

git clone https://github.com/shuihuadx/XposedHook.git

我们将代码进行了修改并执行了add命令和commit命令以后,只需要执行push命令后,就可以将本地修改的内容同步到远程版本库上。

git push origin master

其中origin 部分指定的是远程版本库的 git 地址,master 部分指定的是同步到哪一个分支上。上述命令就完成了将本地代码同步到https://github.com/shuihuadx/XposedHook.git 这个版本库的master 分支上的功能。

知道了将本地的修改同步到远程版本库上的方法,接下来我们看一下如何将远程版本库上的修改同步到本地。Git 提供了两种命令来完成此功能,分别是fetch 和pull,fetch 的语法规则和push 是差不多的,如下所示:

git fetch origin master

执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上去,而是会存放在到一个origin/master 分支上,这时我们可以通过diff 命令来查看远程版本库上到底修改了哪些东西:

git diff origin/master

之后再调用merge 命令将origin/master 分支上的修改合并到主分支上即可,如下所示:

git merge origin/master

而pull 命令则是相当于将fetch 和merge 这两个命令放在一起执行了,它可以从远程版本库上获取最新的代码并且合并到本地,用法如下所示:

git pull origin master

原创粉丝点击