git常用命令总结
#在gitlab上做测试 1) 远程仓库相关命令 检出仓库:$ git clone https://gitlab.com/huhy0602/test.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] 我从master分支创建了一个yang分支,做了一些修改后,使用git push origin master提交,但是显示的结果却是'Everything up-to-date', 发生问题的原因是git push origin master 在没有track远程分支的本地分支中默认提交的master分支,因为master分支默认指向了origin master 分支, 这里要使用git push origin yang:master 就可以把yang推送到远程的master分支了。 如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。 $ git push origin test:master // 提交本地test分支作为远程的master分支 $ git push origin test:test // 提交本地test分支作为远程的test分支 如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。 $ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心 3)版本(tag)操作相关命令 查看版本:$ git tag 创建版本:$ git tag [name] 删除版本:$ git tag -d [name] 查看远程版本:$ git tag -r 创建远程版本(本地版本push到远程):$ git push origin [name] 删除远程版本:$ git push origin :refs/tags/[name] 5)删除远程库 ps:我们在上传项目后如果上传了你不想要的文件怎么办?很操蛋的在github上我们是不能直接删除仓库的文件,我们只能通过终端命令来删除我们不想要的文件或者目录 Git 如何删除远程服务器文件同时保留本地文件 在上传工程到git上时,有时候会把本地的一些eclipse配置文件传到服务器上,这时你先删除本地,再同步服务器,显然是不合理的。git提供了一个好的解决方法,可以直接删除服务器文件,同时不影响本地文件,命令如下 2.删除远程springboot_jsp文件夹,本地保留 一定要注意,删除文件夹要使用-r 参数 git rm --cached -r springboot_jsp git commit -m "springboot_jsp" git push
git的回滚注意:
方法一,删除远程分支再提交 ①首先两步保证当前工作区是干净的,并且和远程分支代码一致 $ git co master $ git pull origin master $ git co ./ ②备份当前分支(如有必要) $ git branch masterBackUp ③恢复到指定的commit hash $ git reset --hard resetVersionHash //将当前branch的HEAD指针指向commit hash ④删除当前分支的远程分支 $ git push origin :master $ //或者这么写git push origin --delete master ⑤把当前分支提交到远程 $ git push origin master 方法二,强制push远程分支 ①首先两步保证当前工作区是干净的,并且和远程分支代码一致 ②备份当前分支(如有必要) ③恢复到指定的commit hash $ git reset --hard resetVersionHash ④把当前分支强制提交到远程 $ git push -f origin master 方法三,从回滚位置生成新的commit hash ①首先两步保证当前工作区是干净的,并且和远程分支代码一致 ②备份当前分支(如有必要) ③使用git revert恢复到指定的commit hash,当前分支恢复到a>3版本(见下图) a)此方法会产生一条多余的commit hash&log,其实1c0ce98和01592eb内容上是一致的 b)git revert是以要回滚的commit hash(1c0ce98)为基础,新生成一个commit hash(01592eb) $ git revert resetVersionHash ④提交远程分支 $ git push origin master 方法四,从回滚位置生成新的分支merge ①首先两步保证当前工作区是干净的,并且和远程分支代码一致 ②备份当前分支(如有必要) ③把当前工作区的HEAD指针指向回滚的commit hash(注意不是branch的HEAD指针) Notice:这个时候工作区HEAD没有指向分支,称为匿名分支detached HEAD 这个时候提交commit后无法保存状态,git中的任何提交必须是在当前工作区HEAD所在分支的HEAD上进行push hash入栈,所以HEAD必须是属于某个分支的HEAD位置,提交才生效。 $ git co resetVersionHash ④以该commit hash创建一个新的分支 $ git co -b newRevertedHash ⑤切换到当前分支,合并newRevertedHash。 $ git co master $ git merge newRevertedHash ⑥进行代码diff,完成代码回滚,push到远程master
git修改远程仓库地址:
有时远程仓库的ip修改了,我们应该怎么样修改远程仓库的的地址呢?有三种方式:
第一种:git remote set-url origin [new url]
第二种:先删除老的远程仓库地址然后添加新的远程仓库地址
git remote rm origin
git remote add origin [url]
第三种:修改仓库下的config文件
git 重新调出登录:
git config --system --unset credential.helper
git config --global credential.helper store
Git撤销对远程仓库的push提交
执行 git log查看日志,获取需要回退的版本号
2. 执行 git reset –soft <版本号> ,如 git reset -soft 4f5e9a90edeadcc45d85f43bd861a837fa7ce4c7 ,重置至指定版本的提交,达到撤销提交的目的
然后执行 git log 查看
此时,已重置至指定版本的提交,log中已经没有了需要撤销的提交
git reset 命令分为两种: git reset –soft 与 git reset –hard ,区别是:
前者表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。后者直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码。
3. 执行 git push origin 分支名 –force ,强制提交当前版本号。
本文来自博客园,作者:huhy,转载请注明原文链接:https://www.cnblogs.com/huhongy/p/9225327.html