美文网首页
git 命令行的使用

git 命令行的使用

作者: flykyle | 来源:发表于2018-06-02 14:44 被阅读0次

Git 的优势

  1. 离线工作:每个人的电脑都是一个完整的版本库,即使不连接服务器,也可以在本地进行版本管理;
  2. 强大的分支管理;

创建仓库

clone 一个已存在的仓库

git clone ssh://user@domain.com/repo.git

创建一个新的本地仓库

git init

git 本地工作流程.jpg

本地仓库和远程仓库:

本地仓库以一个隐藏的文件夹(.git)的形式存储在项目的根目录下;
远程仓库没有工作目录,完全由 .git 仓库目录组成。开发团队使用远程仓库进行数据共享和交换。

本地修改

查看工作副本的状态:git status

查看与上次版本文件的不同:git diff

添加所有修改到暂存区,等待下次提交:git add .

提交暂存区的文件到本地仓库:git commit -m "commit comment"

修改上次的提交(请勿修改已经推送到远程的提交记录):git commit --amend

或者,直接带上要修改的注释:git commit --amend -m "This is the correct message"

也可以添加更多的改动到上次的提交中:

  1. git add file.txt
  2. git commit --amend -m "commit message"

查看日志

查看所有的提交记录:git log

指定显示 log 的数目:git log -<num>

查看提交时文件的变化:git log -p

显示指定文件的所有修改:git log -p <file>

谁,在什么时间,修改了文件的什么内容:git blame <file>

只看某人的提交:git log --author=<name>

每条日志单行显示:git log --pretty=oneline

查看每一次操作,包括回退:git reflog

查看分支合并图:git log --graph --pretty=oneline --abbrev-commit

查看远程仓库的日志:git log origin/master

分支操作

创建、合并和删除分支非常快,所以 Git 鼓励使用分支完成某个任务,合并后再删掉分支,这和直接在 master 分支上工作效果是一样的,但过程更安全。

创建新分支(基于当前分支):git branch <new-branch>

创建新的可追溯的分支(基于远程分支):git checkout --track <remote/branch-name>

创建并切换分支:git checkout -b dev

切换分支:git checkout <branch>

查看分支:git branch

查看所有分支(包括远程),并显示最后一次的提交记录:git branch -av

合并分支:git merge <branch>

删除分支:git branch -d <branch>

删除一个没有被合并的分支:git branch -D dev

删除远程仓库的分支:git branch -dr <remote/branch>

下载远程的 dev 分支 :git checkout -b dev origin/dev

设置本地分支 dev 和远程分支 origin/dev 的关联:git branch --set-upstream-to=origin/dev dev

标签操作

Git 标签其实是一个指向某个 commit 的指针,所以创建和删除标签都是瞬间完成的。

给当前的提交打标签:git tag <tag-name>

指定给某次的提交打标签:git tag <tag-name> <commit-id>

-a 指定标签名,用 -m 指定说明文字 :git tag -a <tag-name> -m <message> <commit-id>

查看标签:git tag

查看某个标签的信息 :git show <tagname>

推送某个标签:git push origin v1.0

推送所有标签:git push --tags

删除本地标签:git tag -d <tag-name>

删除远程标签:

  1. 先删除本地标签;
  2. 然后推送:git push origin :refs/tags/<tag-name>

远程仓库

添加远程仓库(一般把 remote 命令为 origin,可以添加多个远程仓库):git remote add <remote> <url>

列出当前配置的远程仓库:git remote -v

查看远程仓库的信息:git remote show <remote>

删除远程仓库:git remote rm <remote>

修改远程仓库的地址:git remote set-url <remote> <url>

更新/下载

下载远程仓库的所有改动到本地,不会自动合并到当前:git fetch <remote>

下载远程仓库的所有改动到本地,自动合并到当前:git pull <remote> <branch>

将本地版本发布到远程仓库:git push <remote> <branch>

第一次推送 master 分支到 origin:git push -u origin master,添加 -u,会把本地的 master 分支和远程的 master 分支关联起来,以后推送可以直接使用 git push

比较操作

查看当前工作副本中所有未提交的变化:git diff

指定要查看的文件:git diff <filename>

与版本库的任意版本比较文件:git diff <commitID> -- <file>

比较任意两个版本之间的内容:git diff <commitID> <commitID>

比较两个分支之间的内容:git diff master dev

保存/恢复工作区

不要提交还未完成的工作。

临时需要修改一个bug,当前的任务又没有完成,不能提交。执行 git stash,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。

改完 bug 之后,要恢复工作区,继续之前的工作:

查看 stash:git stash list

恢复:git stash apply,恢复之后,stash 内容没有删除,用 git stash drop 来删除;

恢复并删除:git stash pop

可以执行多次 git stash 保存工作区,恢复的时候,指定 stash id:git stash apply stash@{0}

储藏功能可以帮助我们得到一个干净的工作副本。当然,它还可以应用在很多不同的流程中,强烈推荐在下列情况中储藏你的本地改动:

  • 在切换到不同分支之前。
  • 在获取(pulling)远程改动之前。
  • 在合并(merging)或者衍合(rebasing)一个分支之前。

撤销

在 Git 中,用 HEAD 表示当前版本,上一个版本就是 HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

放弃工作副本中的所有修改(回退到当前版本):git reset --hard HEAD

回退到指定版本,放弃之后的修改(查看 git log,已经回退到之前的提交)

git reset --hard <commit-id>

(不使用 --hard 会保留之前的修改,放在工作副本中)

回退之后又想回去了:

先使用 git reflog 查看所有的操作,找到 commitID 再进行回退。

使用 revert 进行回退(查看 git log,创建了一个新的提交):git revert <comit-id>

修改了文件,还没有执行 add,此时文件在工作区,回退到之前的版本:git checkout -- <file>

修改了文件,执行了 add ,此时文件在暂存区,回退:git reset HEAD <file>

配置

使用.giignore 文件,忽略不想要管理的文件。这里有模版 https://github.com/github/gitignore

文件别忽略了,也可以强制添加:git add -f target/

检查 .gitignore 是否有问题:git check-ignore -v .gitignore

配置别名:git config --global alias.st status

然后就可以使用 git st 代替 git status 了。

当前仓库的配置文件在 .git/config 文件中,全局的 git 配置文件在用户目录下的 .gitconfig

使用 git

  1. 一次提交仅仅对应一个相关的改动,不要把那些互相毫无关联的改动打包在同一次提交中。
  2. 不要提交不完整的改动,保存当前的工作用 git stash
  3. 每次提交都要详细的注释,说清楚:为什么要改?改了什么?。
  4. 养成频繁提交的习惯,避免很庞大的提交,这样也容易避免冲突的发生。
  5. 使用强大的分支,比如:开发新功能,修改 bug 等。
  6. 遵循一致的工作流程,比如:长期分支,特性分支,merge 还是 rebase 等。
  7. 使用帮助文档:git help <command>

参考网站

  1. Git 官网
  2. 廖雪峰 git 教程
  3. Learn Version Control with Git
  4. git pro 中文版

可视化工具

SourceTree,跨平台,免费。
Tower,Mac 上非常出名的 git 工具,目前已经有 windows 版本,收费。

相关文章

网友评论

      本文标题:git 命令行的使用

      本文链接:https://www.haomeiwen.com/subject/gkjrsftx.html