Git常见用法总结

Git 工作流程

一般工作流程如下:

  1. 克隆 Git 资源作为工作目录。
  2. 在克隆的资源上添加或修改文件。
  3. 如果其他人修改了,你可以更新资源。
  4. 在提交前查看修改。
  5. 提交修改。
  6. 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

Git 工作区、暂存区和版本库

工作区:就是你在电脑里能看到的目录。
暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git常见用法总结


Git 基本操作

git init 在目录中创建新的 Git 仓库。
git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。
git status 命令用于查看项目的当前状态。 加了 -s 参数,以获得简短的结果输出。如果没加该参数会详细输出内容。
git add 命令可将该文件添加到缓存
git add . 命令来添加当前项目的所有文件。
git diff 来查看执行 git status 的结果的详细信息。

尚未缓存的改动:git diff
查看已缓存的改动: git diff –cached
查看已缓存的与未缓存的所有改动:git diff HEAD
显示摘要而非整个 diff:git diff –stat

使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中。
git config –global user.name ‘runoob’
git config –global user.email [email protected]
git commit -m ‘第一次版本提交’
git commit -a 如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步。
git reset HEAD 命令用于取消已缓存的内容。
git rm 要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。
git rm -f 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
git rm –cached 如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 –cached 选项即可
git rm –r * 可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件
git mv 命令用于移动或重命名一个文件、目录、软连接。


Git 分支管理

使用分支将工作切分开来,从而让我们能够在不同上下文中做事,并来回切换。

git branch (branchname) 创建分支命令
git checkout (branchname) 切换分支命令
git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,从而在该分支中操作。
git merge 合并分支命令 合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。
git branch 没有参数时,git branch 会列出你在本地的分支。
git branch -d (branchname)


Git 查看提交历史

git log 命令列出历史提交记录
用 –oneline 选项来查看历史记录的简洁的版本。
用 –graph 选项,查看历史中什么时候出现了分支、合并。
用–reverse参数来逆向显示所有日志。
用–author 查找指定用户的提交日志–author=Linus
–no-merges 选项以隐藏合并提交
如果你要指定日期,可以执行几个选项:–since 和 –before,但是你也可以用 –until 和 –after。
git log –oneline –before={3.weeks.ago} –after={2010-04-18} –no-merges
用–decorate 可以看到我们的标签


Git 标签

git tag -a v1.0
-a 选项意为”创建一个带注解的标签”。
当你执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。
git tag 查看所有标签
git tag -a -m “runoob.com标签” 指定标签信息命令
git tag -s -m “runoob.com标签” PGP签名标签命令


Git 远程仓库(Github)

git remote add [shortname] [url] 添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用

$ ssh-****** -t rsa -C “[email protected]” 在本地创建ssh key

-t type:指定要生成的**类型,有rsa1(SSH1),dsa(SSH2),ecdsa(SSH2),rsa(SSH2)等类型,较为常用的是rsa类型
-C comment:提供一个新的注释
-b bits:指定要生成的**长度 (单位:bit),对于RSA类型的**,最小长度768bits,默认长度为2048bits。DSA**必须是1024bits
-f filename:指定生成的**文件名字

git remote 查看当前配置有哪些远程仓库。执行时加上 -v 参数,你还可以看到每个别名的实际链接地址。
git fetch 从远程仓库下载新分支与数据。 该命令执行完后需要执行git merge 远程分支到你所在的分支。
git push [alias] [branch] 推送你的新分支与数据到某个远端仓库, 将你的 [branch] 分支推送成为 [alias] 远程仓库上的 [branch] 分支
git remote rm [别名] 删除远程仓库
git pull 更新你的本地仓库至最新改动