Git 教程 - Git 基本用法

来源:互联网 发布:工业自动化编程 编辑:程序博客网 时间:2024/05/04 12:23

Git 是当前最流行的版本控制程序之一,文本包含了 Git 的一些基本用法

创建 git 仓库
  初始化 git 仓库

mkdir project # 创建项目目录
cd project # 进入到项目目录
git init # 初始化 git 仓库。此命令会在当前目录新建一个 .git 目录,用于存储 git 仓库的相关信息

  初始化提交

touch README
git add . # 将当前目录添加到 git 仓库中, 使用 git add -A 则是添加所有改动的文档
git commit -m "Initial commit"
git remote add origin git@github.com:lugir/repo.git # 设置仓库

  修补提交(修补最近一次的提交而不创建新的提交)

git commit --amend -m "commit message."

  提交冲突时可以合并后再推送

git pull # 获取远程版本库提交与本地提交进行合并
git push # 提交

使用别人的仓库

git clone http://path/to/git.git # clone 的内容会放在当前目录下的新目录

将代码从本地回传到仓库

git push -u origin master

使用 git status 查看文件状态

git status

查看提交日志

git log # 查看提交信息
git log --pretty=oneline # 以整洁的单行形式显示提交信息
git log --stat # 查看提交信息及更新的文件

Git 分支

git branch # 查看分支
git branch 6.x-1.x # 添加分支 6.x-1.x
git branch checkout master # 切换到主分支
git branch -d 6.x-1.x # 删除分支 6.x-1.x
git push origin :branchname # 删除远端分支

Git 标签

git tag # 查看分支
git tag 6.x-1.0 # 添加标签 6.x-1.0
git show 6.x-1.0 # 查看标签 6.x-1.0 的信息
git tag -a 6.x-1.0 965e066 # 为之前提交的信息记录 965e066 加上标签
git push --tags # 提交时带上标签信息
git push origin :/refs/tags/tagname # 删除远端标签

从 git 仓库中导出项目

git archive --format tar --output /path/to/file.tar master # 将 master 以 tar 格式打包到指定文件

使用 Git 的一些基本守则:
当要commit/提交patch时:

  • 使用 git diff --check 检查行尾有没有多余的空白
  • 每个 commit 只改一件事情。如果一个文档有多个变更,使用 git add --patch 只选择文档中的部分变更进入 stage
  • 写清楚 commit message
用 git 保存空目录

git 和 svn 不同,仅仅跟踪文件的变动,不跟踪目录。Perforce 也是如此。所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的。

只跟踪文件变化,不跟踪目录,这么设计是有原因的。但这会带来一些小麻烦。有时候,确实需要在代码仓库中保留某个空目录。比如测试时需要用到的空目录。

变通的解决办法是在空目录下存一个 .gitignore 文件。然后 git add 此目录后,相当于跟踪了 .gitignore 文件,产生的“副作用”就是这个“空”目录也纳入“跟踪”,最终的效果是可以 check out 出一个看起来空空的目录。如果有许多这样的空目录,可以用下面的命令自动补充 .gitignore 文件:

find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec touch {}/.gitignore \;

递归找寻当前目录下,类型为目录,且为空,也没有 .git 开头的文件,在其中用 touch 新建一个空的 .gitignore 文件。然后 git add . 之后即可。

如果这些特殊文件会对测试带来干扰,那就只好在测试程序运行具体测试项目之前,先跑一段初始化目录结构的代码。另外可能还需要编写负责清理的代码。

git add -A和git add .和git add -u

git add -A 处理所有:添加、修改、删除

git add . 处理添加和修改,不处理删除

git add -u 处理修改和删除,不处理新添加文件

说"git add -A"等于"git add ."加上git add -u"其实不准确,只能说功能上前面一个等于后面两个,但它们使用的场景不同都有自己的作用。

git文本编辑器

Git 需要你输入一些额外消息的时候,会自动调用一个外部文本编辑器给你用。默认会使用操作系统指定的默认编辑器,一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 gedit的话,可以重新设置:

$ git config --global core.editor gedit
git 差异分析工具

还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:

$ git config --global merge.tool vimdiff

Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。当然,你也可以指定使用自己开发的工具。


原创粉丝点击