Git / SVN 常用命令
1.1. git log
git log -p
或者 git log -p filename
-p 展开显示每次提交的内容差异,可以指定文件名只查看某文件的个性历史。
git log -2
-2 仅获取最近的两次更新。
git diff HEAD tt.txt
查看当前文件被修改过的内容(相比于上一次提交)
$ git log --stat
--stat,仅显示简要的增改行数统计。
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。
1.2. git fork 代码提交/更新
- 主分支 EMAP/app.git
从分支 ccf/app.git
从主分支拉取代码
git pull EMAP/app master
提交到从分支本地仓库
git commit -m -a "备注"
更新到从分支远程仓库
git push
1.3. git 仓库信息
添加新的 remote 信息
git remote add master EMAP/app2.git
修改远程仓库信息
git remote set-url origin xxx.git
获取远程分支信息
git fetch EMAP/app2.git
新建分支并切换到新的分支
git checkout -b new_branch
为 new_branch 添加远程地址
git remote add new_branch EMAP/app3.git
必须要添加分支信息!
添加新分支(需要有提交信息)
git branch abc
合并 a_branch 到当前分支
git merge a_branch -m ""
删除分支
git branch -d b_branch
合并单个文件
将branch1
某个文件打补丁 patch合并到分支master
git checkout master
git checkout --patch branch1 c.txt
将branch1
某个文件copy到分支master
git checkout master
git checkout branch1 c.txt
1.4. git tag
tag:标签,可以针对某一时间点的版本做标记,常用于版本发布。
1.4.1. 列出标签
$ git tag # 在控制台打印出当前仓库的所有标签
$ git tag -l ‘v0.1.*’ # 搜索符合模式的标签
1.4.2. 打标签
git 标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象。建议使用附注标签。
创建轻量标签
$ git tag v0.1.2-light
创建轻量标签不需要传递参数,直接指定标签名称即可。
创建附注标签
$ git tag -a v0.1.2 -m “0.1.2版本”
创建附注标签时,参数a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
1.4.3. 切换标签
与切换分支命令相同,用 git checkout [tagname]
,
此时会指向 tagname 标签对应的代码状态,但现在处于一个空的分支上。
1.4.4. 查看标签信息
$ git show v0.1.2
1.4.5. 删除标签
$ git tag -d v0.1.2 # 删除标签
1.4.6. 补打标签
$ git tag -a v0.1.1 546cafe7790f5055c8839f9f6ddce6e09bb62810
打标签不必要在 head 之上,也可在之前的版本上打,这需要你知道某个提交对象的 commitId
1.4.7. 标签发布
git push 不会将标签对象提交到git服务器,我们需要进行显式的操作:
$ git push origin v0.1.2 # 将v0.1.2标签提交到git服务器
$ git push origin –tags # 将本地所有标签一次性提交到git服务器
1.5. git 版本管理
回退到指定提交的版本
git reset --hard commitId
将回退修改推到远程分支
git push -f -u origin master
将指定分支的指定文件 copy 到当前分支
git checkout master xx.txt
将指定分支的文件修改 patch 补丁合并到当前分支
git checkout --patch master xx.txt
回退某个文件到指定版本
git checkout commitId xx.txt
查看文件修改记录
git blame -- filename
回退某个指定提交
git revert -n commitId