要玩 Git,首先得有一个 Git 仓库吧。
仓库拉取用 clone:
$ git clone http://192.168.140.206/test_project.git
现在要基于刚才的仓库做开发,通常是创建一个本地的分支。
创建分支:
$ git branch my_branch
有创建分支,合情合理的得有查看分支、删除分支、切换分支的需求。
查看分支:
$ git branch // 显示本地分支
$ git branch -a // 显示本地+远程分支
删除分支:
$ git branch -d my_branch
切换分支:
$ git checkout my_branch
好了,当前在 my_branch 分支,现在开始干活了。一段时间后,想查看下当前做了哪些改动。
当前仓库状态显示:
$ git status
然后我想,怎么看下具体到某个文件做了哪些变动呢?
文件比较:
$ git diff your_file
my_branch 是一个本地分支,为了保证本机报废后修改不丢失,我们打算把 my_branch 推送到远程。
推送本地分支到远程:
$ git push -u origin my_branch
经过一番检查、调试,确认改动没问题,可以提交了。
提交更新:
$ git commit . -m "your_commit_comments" // .代表当前目录下,所以 commit 了当前目录下的所有改动
$ git commit one_file -m "your_commit_comments" // 仅 commit 指定文件
如果对刚才的提交描述 "your_commit_comments" 不满意,想修改
$ git commit --amend
然后编辑之。
commit 只是提交到本地,远程仓库并没有更新。更新远程仓库用到 push 操作:
git push -u origin my_branch
对于新增加的文件,其并不处于 Git 的管辖(Git 术语叫 Untracked files),需要 add 操作:
$ git add new_file
对于一个多人协作的仓库,使用 pull 拉取最新的变动:
$ git pull
"Already up-to-date." 说明本地已经是最新的
这之后,我们想查看下提交记录,使用 log 操作:
$ git log
查看某个提交的更改内容,使用 show 操作:
$ git show
这个显示的是最近一次提交的更改内容,如果查看任意一个提交的,需指明 commit id:
$ git show commit_id
commit_id:即 git log 展示的 commit 后面的那一串数字(如:b7e0755e087bd360f1fec70a8bec079e1184a134)
有这么这个场景,我们想回退到之前的某个版本,使用 reset 操作:
$ git reset --hard commit_id
注:此为危险操作!仅限本地使用!!!
想象一下这个场景,我们想把 A 分支的某个 commit 合并到 B 分支,这就用到了 cherry-pick 操作:
1、记下 A 分支的那个 commit id
2、切换到 B 分支
3、git cherry-pick commit_id
以上可以应对 Git 绝大部分的使用,高级用法可以研究 Pro Git 这本书: