GIT 学习笔记 1 - HOW TO GIT

Git 的基本用法

设置姓名和地址

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
  • 可以设置多用用户,就不要用--global,具体用法以后在研究。

提高可读性

$ git config --global color.ui auto

Mac OSX 上的vim设置

$ git config --global core.editor /usr/bin/vim -f
  • 如不设置会报错:"There was a problom with the editor 'vi'."

设置 SSH Key

$ ssh-keygen -t rsa -C "[email protected]"
$ cat ~/.ssh/id_rsa.pub
# 把id_rsa.pub内容添加到github.com
# 然后测试
$ ssh -T [email protected]

初始化仓库

$ mkdir git-tutorial
$ cd git-tutorial
$ git init

查看仓库的状态

$ git status

十分常用,务必牢记!

向暂存区中添加文件

$ git add 
$ git status   # 查看发生的变化

保存仓库的历史记录

$ git commit -m "First commit"

git add 和 git commit 可以合拼成如下命令:

$ git commit -am "Your commit"
  • -m 参数后加“提交信息”
  • 不加参数可以记述详细提交信息,格式如下:

第一行简述内容
第二行空行
第三行以后,记述更改的原因和详细内容

查看提交日志

$ git log
$ git log --pretty-short  # 只显示简述
$ git log      # 只显示指定目录或文件
$ git log -p              # 显示提交前后差异
$ git log -p        # 只显示改文件的差异

查看更改前后的差别

$ git diff
$ git diff HEAD           # 查看工作树和最新提交的差别
  • 养成良好习惯:在执行git commit 之前先执行 git diff HEAD 查看本次提交与上次提交的差别。
  • HEAD 时指向当前分支中最新一次提交的指针。

显示分支一览表

$ git branch
\* master
   feature-A
  • 带‘*’号表示当前分支

创建、切换分支

$ git checkout -b 

也可以分开成两个命令:

$ git branch       # 创建分支
$ git checkout     # 切换分支
$ git checkout -                # 切换回上一个分支

合并分支

$ git merge --no-ff 
  • 为了在历史记录中明确记录下本次分支合并,需要创建合并提交,合并时加上参数--no-ff。

以图表形式查看分支

$ git log --graph
  • 可以以图片形式输出提交日志,非常直观,务必牢记

回溯历史版本

$ git reset
$ git reset --hard 
  • 要让仓库的HEAD、暂存区、当前工作树回溯到指定状态,需要用到git reset --hard
  • 只要提供目标时间点的哈希值。

推进历史状态

$ git reflog
$ git reset --hard 
  • git reflog 查看当前仓库执行过得操作日志
  • 即便开发者错误执行了git 的操作,基本也可以利用git reflog来恢复到原先的状态。

消除冲突

README.md

# git-toturial

<<<<<<<< HEAD
    - feature-A
========
    - fix-B
>>>>>>>> fix-B
  • =========以上部分是当前HEAD的内容,以下部分是要合并的fix-B分支的内容。

修改提交信息

$ git commit --amend

压缩历史

$ git rebase -i
$ git rebase -i HEAD~2  # 最新的两次历史
  • pick改成fixup,原来的pick部分就会从历史中抹去。
  • 一般用于拼写错误等小修改。

推送至远程仓库

在github上新建一个仓库。仓库名最好与本地仓库保持一致。

  • 创建时不要勾选README选项,因为github自动生成的README文件与本地仓库失去了整合性。

添加远程仓库

$ git remote add origin [email protected]:/.git
  • 执行上述命令后,git会自动将远程仓库的名称设置成origin

推送至master分支

$ git push -u origin master
  • -u 参数可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream(上游)。
  • 添加了这个参数,将来运行git pull从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin的master分支获取内容,省去了另外添加参数的麻烦。

推送至master以外的分支

$ git checkout 
$ git push -u origin 
  • 这样就可以把分支push给远程仓库并保持分支名称不变。

从远程仓库获取

$ git clone [email protected]:/.git

查看当前分支的相关信息

$ git branch -a
  • -a 参数可以同时显示本地仓库和远程仓库的分支信息。

获取远程的分支

$ git checkout -b  origin/
  • -b 参数后是本地仓库中新建分支的名称。
  • 再后面是获取来源的分支名称。

获取最新的远程仓库分支

$ git pull origin 
  • 这样就可以将本地的分支更新到最新状态。

备注

$ git config --global push.defalt matching

你可能感兴趣的:(GIT 学习笔记 1 - HOW TO GIT)