GIT常用命令

Git常用命令

标签操作

#列出远端标签列表

git ls-remote –tags

  1. 打标签

git tag -a v1.1.4 -mtagging version 1.1.4

2.  删除本地标签

git tag -d v1.1.4

3. 推送标签到远端

git push origin 标签名

4.  删除远端标签

第一种方案:git push origin –delete tag-180720-1134

第二种方案:git push origin :refs/tags/标签名

事实上Git 的推送和删除远程标签命令是相同的,删除操作实际上就是推送空的源标签refs:
git push origin 标签名
相当于
git push origin refs/tags/源标签名:refs/tags/目的标签名
git push 文档中有解释:

tag <<tag>> means the same as refs/tags/<tag>:refs/tags/<tag>.
Pushing an empty <src> allows you to delete the <dst> ref from the remote repository.

 

 

创建远程分支(本地分支push到远程):

1) 远程仓库相关命令
检出仓库:$ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url —push[name][newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]
2)分支(branch)操作相关命令
查看本地分支:$ git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name] —-注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name] —- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] —-将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支:$ git push origin :heads/[name]

 

git 获取最近一次提交的commit id:

1、获取完整commit id(如:14123c8877e6ebdc220e205d92fc70feaf06dab1)

git rev-parse HEAD

2、获取short commit id(如:14123c8)

git rev-parse —short HEAD

 

git制作增量包用于更新代码

1 先找到指定的开始提交id,比如 05104e3475f63e1e49fbfcbd424a4a3801b95645

2 找到结束的提交id,比如 a0eb9bc6d4e1801062877fd435eefb81f11598b8

3 在命令行下进入到git代码目录中,敲命令制作增量包

git archive -o hot-fix-20151001.zip HEAD $(git diff 05104e3…a0eb9bc –name-only)

注:git diff 后边的commit id, 可以只取前7位或全部写上都可以

3 命令执行完成后,在当前目录生成一个.zip的文件,这个就是增量包文件了

Tips: 其实还可以把zip文件生成到指定目录中,把上边git archive的命令改一下

git archive -o /root/hot-fix-20151001.zip HEAD $(git diff 05104e3…a0eb9bc –name-only)

 

在实际开发过程,始终会保留一个主分支,不在主分支进行开发,每个版本都有一个版本对应的分支,常见命令如下:

去自己的工作分支

$ git checkout work

工作

....

提交工作分支的修改

$ git commit -a

回到主分支

$ git checkout master

获取远程最新的修改,此时不会产生冲突

$ git pull

回到工作分支

$ git checkout work

用rebase合并主干的修改,如果有冲突在此时解决

$ git rebase master

回到主分支

$ git checkout master

合并工作分支的修改,此时不会产生冲突。

$ git merge work

提交到远程主干

$ git push

这样做的好处是,远程主干上的历史永远是线性的。每个人在本地分支解决冲突,不会在主干上产生冲突。

Leave a Comment