Git 常用命令

Git是目前世界上最先进的分布式版本控制系统(没有之一)

创建版本库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 本地创建仓库
$ mkdir learngit
$ cd learngit
$ git init
$ git add readme.txt
$ git commit -m "add a readme file"
// 添加远程仓库地址
$ git remote add origin https://git.coding.net/philo_xiie/git_test.git
$ git push origin master
// 从远程仓库拉取
$ git pull origin master
// 从远程仓库拷贝
$ git clone https://git.coding.net/philo_xiie/git_test.git
// 修改远程仓库地址
$ git remote rm origin
$ git remote add origin [url]

git仓库地址形式(免密码)

版本控制

查看版本历史

1
2
$ git log --pretty=oneline
$ git show [commit-id]

查看版本差异

1
2
3
4
5
6
7
8
9
10
11
// 显示工作版本(Working tree)和HEAD的差别
$ git diff HEAD
// 比较上次提交commit和上上次提交
$ git diff HEAD^ HEAD
// 或
$ git diff HEAD~1 HEAD
// 查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异
$ git diff --cached
$ git diff --staged

版本回退

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 回退到上一个版本
$ git reset --hard HEAD^
// 撤销上次的回退
$ git reflog
c7576ad HEAD@{0}: reset: moving to c7576ad
d691091 HEAD@{1}: reset: moving to HEAD^
c7576ad HEAD@{2}: commit: modify ver1
d691091 HEAD@{3}: commit: version 2
5d57445 HEAD@{4}: commit: version 1
de4bac6 HEAD@{5}: commit (initial): first commit
$ git reset --head [HEAD]
// 撤销修改(从暂存区到工作区)
$ git reset HEAD ver1.md
// 删除修改(从工作区删除)
$ git checkout -- ver1.md

分支管理

创建与合并分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ git branch //查看当前分支
$ git branch dev //在当前分支上创建一个新的分支
$ git checkout dev //切换到dev分支
$ git checkout -b dev//从当前分支创建并切换到dev分支
$ git merge dev //将dev分支合并到当前分支
$ git branch -d dev //删除dev分支,注:不能删除当前在的分支上
// 创建一个BUG分支
$ git add * //stash只能储藏暂存区中的内容
$ git stash //把当前工作现场“储藏”起来,等以后恢复现场后继续工作
$ git stash list
$ git stash apply stash@{0}
$ git stash drop //清除stash
// 或
$ git stash pop //调出stash并清除

合并冲突

1
$ git log --graph --pretty=oneline --abbrev-commit

标签管理

1
2
3
4
5
6
7
8
9
10
$ git tag //查看标签列表
$ git show v1.0 //查看某个标签信息
$ git tag -a v1.0 -m 'version 1.0' //对当前版本打上标签
$ git tag -a v0.5 <commit-id> //对之前的版本打上标签
$ git tag -d v0.5 //删除标签
$ git push origin v0.5 //提交某个标签
$ git push origin --tags //提交所有的标签

git与svn的差异

  • git即使在没有连接远程仓库情况下也可以正常工作,git是分布式的,而svn是集中式的
  • git的版本号是用SHA1计算出来的一个非常大的数字,可以避免多人协作下的版本号冲突
  • git有暂存区
  • git非常得快

相关链接: