Git的使用技巧

   Git的使用技巧:

安装Git

Linux - 打开控制台,然后通过包管理安装,在Ubuntu上命令是:

1
sudo apt-get install git-all

Windows - 推荐使用git for

windows,它包括了图形工具以及命令行模拟器。

OS X - 最简单的方式是使用homebrew安装,命令行执行

1
brew install git

如果你是在是先用图形工具的话,那么推荐你使用Github desktop,Sourcetree。但我还是推荐你使用命令行,下面的内容就都是命令行的。

配置Git

安装完git,首要任务是配置我们的信息,最重要的是用户名及邮箱,打开终端,执行以下命令。

1
2
$ git config --global user.name "My Name"
$ git config --global user.email myEmail@example.com

配置好这两项,用户就能知道谁做了什么,并且一切都更有组织性了不是吗?

Git SSH Key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Linux
$ ssh-keygen -t rsa -C "mail@gmail.com"
//这的密码不是我们,GitHub的密码,而是Git SSH的密码
//保存SSH密码
$ eval "$(ssh-agent -s)" //Linux
$ ssh-agent -s //Windows
$ ssh-add ~/.ssh/id_rsa
//打开Git生成的密码文件,将其复制到GitHub上
$ vim ~/.ssh/id_rsa.pub
//验证GitHub SSH是否成功
$ ssh -T git@github.com

创建一个新仓库 - git init

git 会把所有文件以及历史记录保存在你的项目中,创建一个新的仓库,首先要去到项目路径,执行 git init。然后git会创建一个隐藏的文件夹.git,所有的信息都储存在其中。
在桌面创建一个联系文件夹 git_exercise, 打开终端:

1
2
$ cd Desktop/git_exercise/
$ git init

OK,现在项目还什么都没有,新建一个 hello.txt 文件试试~

Git指令速查表

创建

复制一个已创建的仓库:
1
$ git clone ssh://user@domain.com/repo.git
创建一个新的本地仓库:
1
$ git init

本地修改

显示工作路径下已修改的文件
1
$ git status
显示与上次提交版本文件的不同
1
$ git diff
把当前所有修改添加到下次提交中
1
$ git add
把对某个文件的修改添加到下次提交中
1
$ git add -p <file>
提交本地的所有修改
1
$ git commit -a
提交之前已标记的变化
1
$ git commit
附加消息提交
1
$ git commit -m 'message here'
提交,并将提交时间设置为之前的某个日期:
1
$ git commit --date="`date --date='n day ago'`" -am "Commit Message"
修改上次提交请勿修改已发布的提交记录!
1
$ git commit --amend
把当前分支中未提交的修改移动到其他分支
1
2
3
4
git stash
git checkout branch2
git stash pop
搜索
从当前目录的所有文件中查找文本内容
1
$ git grep "Hello"
在某一版本中搜索文本
1
$ git grep "Hello" v2.5

提交历史

从最新提交开始,显示所有的提交记录(显示hash, 作者信息,提交的标题和时间)
1
$ git log
显示所有提交(仅显示提交的hash和message)
1
$ git log --oneline
显示某个用户的所有提交
1
$ git log --author="username"
查看该文件每次提交记录
1
$ git log <file>
显示某个文件的所有修改
1
$ git log -p <file>
查看最近两次详细修改内容的diff
1
$ git log -p -2
查看提交统计信息
1
$ git log --stat
谁,在什么时间,修改了文件的什么内容
1
$ git blame <file>

分支与标签

列出所有的分支
1
$ git branch
切换分支
1
$ git checkout <branch>
创建并切换到新分支:
1
$ git checkout -b <branch>
基于当前分支创建新分支
1
$ git branch <new-branch>
基于远程分支创建新的可追溯的分支
1
$ git branch --track <new-branch> <remote-branch>
删除本地分支:
1
$ git branch -d <branch>
给当前版本打标签
1
$ git tag <tag-name>

更新与发布

列出当前配置的远程端
1
$ git remote -v
显示远程端的信息
1
$ git remote show <remote>
添加新的远程端
1
$ git remote add <remote> <url>
下载远程端版本,但不合并到HEAD中
1
$ git fetch <remote>
下载远程端版本,并自动与HEAD版本合并
1
$ git remote pull <remote> <url>
将远程端版本合并到本地版本中
1
$ git pull origin master
将本地版本发布到远程端
1
$ git push remote <remote> <branch>
删除远程端分支
1
2
3
$ git push <remote> :<branch> (since Git v1.5.0)
git push <remote> --delete <branch> (since Git v1.7.0)
发布标签:
1
$ git push --tags

合并与重置

将分支合并到当前HEAD中
1
$ git merge <branch>
将当前HEAD版本重置到分支中:请勿重置已发布的提交!
1
$ git rebase <branch>
退出重置:
1
$ git rebase --abort
解决冲突后继续重置
1
$ git rebase --continue
使用配置好的merge tool 解决冲突
1
$ git mergetool
在编辑器中手动解决冲突后,标记文件为已解决冲突
1
2
$ git add <resolved-file>
$ git rm <resolved-file>

撤销

放弃工作目录下的所有修改
1
$ git reset --hard HEAD
移除缓存区的所有文件(i.e. 撤销上次git add)
1
$ git reset HEAD
放弃某个文件的所有本地修改
1
$ git checkout HEAD <file>
重置一个提交(通过创建一个截然不同的新提交)
1
$ git revert <commit>
将HEAD重置到指定的版本,并抛弃该版本之后的所有修改
1
$ git reset --hard <commit>
将HEAD重置到上一次提交的版本,并将之后的修改标记为未添加到缓存区的修改
1
$ git reset <commit>
将HEAD重置到上一次提交的版本,并保留未提交的本地修改
1
$ git reset --keep <commit>

相关资料:

Github创建隐藏分支

1
2
3
git clone git@github.com:luumans/backup.git
git branch -r
git checkout -b data origin/data

Learn Git Branching
猴子都能懂的Git入门
Git指令速查表
github快速入门
廖雪峰Git教程
图解Git
git - 简明指南

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 安装Git
    1. 1.0.1. Linux - 打开控制台,然后通过包管理安装,在Ubuntu上命令是:
    2. 1.0.2. Windows - 推荐使用git for
    3. 1.0.3. OS X - 最简单的方式是使用homebrew安装,命令行执行
  • 2. 配置Git
    1. 2.1. Git SSH Key
    2. 2.2. 创建一个新仓库 - git init
    3. 2.3. Git指令速查表
      1. 2.3.1. 创建
        1. 2.3.1.1. 复制一个已创建的仓库:
        2. 2.3.1.2. 创建一个新的本地仓库:
      2. 2.3.2. 本地修改
        1. 2.3.2.1. 显示工作路径下已修改的文件
        2. 2.3.2.2. 显示与上次提交版本文件的不同
        3. 2.3.2.3. 把当前所有修改添加到下次提交中
        4. 2.3.2.4. 把对某个文件的修改添加到下次提交中
        5. 2.3.2.5. 提交本地的所有修改
        6. 2.3.2.6. 提交之前已标记的变化
        7. 2.3.2.7. 附加消息提交
        8. 2.3.2.8. 提交,并将提交时间设置为之前的某个日期:
        9. 2.3.2.9. 修改上次提交请勿修改已发布的提交记录!
        10. 2.3.2.10. 把当前分支中未提交的修改移动到其他分支
        11. 2.3.2.11. 从当前目录的所有文件中查找文本内容
        12. 2.3.2.12. 在某一版本中搜索文本
      3. 2.3.3. 提交历史
        1. 2.3.3.1. 从最新提交开始,显示所有的提交记录(显示hash, 作者信息,提交的标题和时间)
        2. 2.3.3.2. 显示所有提交(仅显示提交的hash和message)
        3. 2.3.3.3. 显示某个用户的所有提交
        4. 2.3.3.4. 查看该文件每次提交记录
        5. 2.3.3.5. 显示某个文件的所有修改
        6. 2.3.3.6. 查看最近两次详细修改内容的diff
        7. 2.3.3.7. 查看提交统计信息
        8. 2.3.3.8. 谁,在什么时间,修改了文件的什么内容
      4. 2.3.4. 分支与标签
        1. 2.3.4.1. 列出所有的分支
        2. 2.3.4.2. 切换分支
        3. 2.3.4.3. 创建并切换到新分支:
        4. 2.3.4.4. 基于当前分支创建新分支
        5. 2.3.4.5. 基于远程分支创建新的可追溯的分支
        6. 2.3.4.6. 删除本地分支:
        7. 2.3.4.7. 给当前版本打标签
      5. 2.3.5. 更新与发布
        1. 2.3.5.1. 列出当前配置的远程端
        2. 2.3.5.2. 显示远程端的信息
        3. 2.3.5.3. 添加新的远程端
        4. 2.3.5.4. 下载远程端版本,但不合并到HEAD中
        5. 2.3.5.5. 下载远程端版本,并自动与HEAD版本合并
        6. 2.3.5.6. 将远程端版本合并到本地版本中
        7. 2.3.5.7. 将本地版本发布到远程端
        8. 2.3.5.8. 删除远程端分支
        9. 2.3.5.9. 发布标签:
      6. 2.3.6. 合并与重置
        1. 2.3.6.1. 将分支合并到当前HEAD中
        2. 2.3.6.2. 将当前HEAD版本重置到分支中:请勿重置已发布的提交!
        3. 2.3.6.3. 退出重置:
        4. 2.3.6.4. 解决冲突后继续重置
        5. 2.3.6.5. 使用配置好的merge tool 解决冲突
        6. 2.3.6.6. 在编辑器中手动解决冲突后,标记文件为已解决冲突
      7. 2.3.7. 撤销
        1. 2.3.7.1. 放弃工作目录下的所有修改
        2. 2.3.7.2. 移除缓存区的所有文件(i.e. 撤销上次git add)
        3. 2.3.7.3. 放弃某个文件的所有本地修改
        4. 2.3.7.4. 重置一个提交(通过创建一个截然不同的新提交)
        5. 2.3.7.5. 将HEAD重置到指定的版本,并抛弃该版本之后的所有修改
        6. 2.3.7.6. 将HEAD重置到上一次提交的版本,并将之后的修改标记为未添加到缓存区的修改
        7. 2.3.7.7. 将HEAD重置到上一次提交的版本,并保留未提交的本地修改
  • 3. 相关资料:
    1. 3.0.1. Github创建隐藏分支
  • ,