- 从远程仓库拉去代码
- git clone https://xxxx@localhost:8443/r/valve/project.git
- git remote add origin https://xxxx@localhost:8443/r/valve/project.git
- git status # 查看本地仓库的修改状态
- git add # 暂存文件
- git commit -m '备注新兴县' # 提交文件
- git push origin master #将本地代码提交到远程
- 分支使用说明
- git checkout -b develop # 从当前分支创建一个分支到本地
- git checkout -b dev origin/dev #基于远程分支创建本地分支 origin/dev 地址
- git checkout develop #切换到develop分支
- git branch -a #查看项目中所有的分支
- git branch -vv #查看本地和远程分支关联关系
- git remote show origin #查看详细的本地和远程分支关联关系
- git remote prune origin #删除本地存在的分支名,远程已经删除的分支
- git push origin develop #将develop提交到远程服务器
- git branch -d develop #删除本地分支
- git branch -D local_branch_name #强制删除当前本地分支
- git push origin :develop #推送一个空分支到远程分支,相当于删除远程分支
- git push origin --delete dev #删除远程分支
- git branch -m dev(原分支名称) develop #重命名本地分支 ,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。
- git push origin local_branch_name:remote_branch_name 推送一个远程不存在的分支
- git push origin develop #推送本地分支
- git pull origin develop #拉去远程代码并合并与工作空间代码合并(fetch + meger)
- git fetch origin develop #拉去远程仓库代码到本地仓库(不是工作空间)
- git rebase origin develop #将fetch 拉取的远程代码和工作空间的代码合并,合并没有冲突系统自动执行git commit命令,合并代码后有冲突解决。
- git add . #手动解决冲突后提交代码
- git rebase --continue #提交代码后执行 rebase --continue 命令继续执行完上一次rebase未完成的操作。
- git rebase --skip #git rebase 起冲突后,发现冲突可以不用解决,执行该命令跳过本次修改直接算rebase合并成功
- git rebase --abort #git rebase起冲突,退回原来的状态,本地工作空间和远程代码度保持不变
- git merge origin develop #直接合并到本地工作空间,有冲突需要手动解决,然后在手动提交
- git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
- git stash 暂存当前正在进行的工作,将当前工作代码放入到栈中,可以拉去最新代码以便合并
- git stash list 查看栈中放入了多少次
- git stash apply stash@{1} 取出指定版本栈存的代码
- git stash pop 取出栈中最近的版本,没获取一次栈中就减少一个
- git stash clear 清空stash中版本代码
- tag 使用
- git tag # 在控制台打印出当前仓库的所有标签
- git tag -l ‘v0.1.*’ # 搜索符合模式的标签
- git show v0.1.2 #查看分支详情
- git tag v0.1.2-light # 创建轻量标签
- git tag -a v0.1.2 -m “0.1.2版本” #创建附注标签
- git tag -d v0.1.2 # 删除本地标签
- git push origin :refs/tags/<tagname> #删除远程分支
- git tag -a v0.1.1 9fbc3d0 # 补打标签,通过git log 获取 head信息
- git branch <new-branch-name> <tag-name> 会根据tag创建新的分支.
- git checkout v0.1.2 #切换到tag上
- git push origin v0.1.2 # 将v0.1.2标签提交到git服务器
- git push origin –tags # 将本地所有标签一次性提交到git服务器
- git 查看日志、撤销等操作
- git log #查看日志
- git relog #查看操作命令日志
- git reset --hard commit_id # commit_id 提交的id,HEAD当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
作为一次最新的提交
* git revert HEAD 撤销前一次 commit
* git revert HEAD^ 撤销前前一次 commit
* git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,不影响之前提交的内容
git revert 和 git reset的区别
1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。