git常用操作命令
创建本地分支与远程分支
例如现在有两个分支,master和develop
git checkout master //进入master分支
git checkout -b frommaster //以master为源创建分支frommaster
git checkout develop //进入develop分支
git checkout -b fromdevelop //以develop为源创建本地分支fromdevelop
git push origin fromdevelop //将本地fromdevelop分支作为远程fromdevelop分支
总结:一般我们就用git push –set-upstream origin branch_name来在远程创建一个与本地branch_name同名的分支并跟踪;利用git checkout –track origin/branch_name来在本地创建一个与branch_name同名分支跟踪远程分支。
拉取指定的远程分支
直接拉取(指定远程分支名)
1 | git clone -b ants git@github.com:Ants-double/CareerJava.git |
git使用用户名密码clone
1 | git clone http://username:password@remote |
本地已经有相关的仓库代码
1 | //查看远程分支 |
git拉取远程分支并创建本地分支
1 | 使用如下git命令查看所有远程分支: |
远程仓库和本地代码同步
1 | git remote add origin https://github.com/miaoihan/weibo.git |
修改远程分支名称
1 | 创建新分支 |
git merge 是出现Merge remote-tracking branch ‘ups/master’
git push
从远程仓库克隆到本地后,
远程仓库有人提交,本地仓库commit了1次,
目标:把本地仓库push到远程仓库
做法:1,git fetch xxx 2,git merge xxx/master 3,git push
Q&A
问题 : git merge 是出现Merge remote-tracking branch ‘ups/master’
原因:远程仓库有人提交,本地仓库commit了1次
解决方案: git rebase -i HEAD~2
如果不想让他出现怎么办
做法:
在修改之前做如下操作
- git fetch 远程仓库
- git merge 远程仓库分支
在本地仓库commit
push到远程仓库
rebase 1,合并 2,修改记录
删除本地仓库以及远程仓库记录
环境:
git add file //file到暂存区
git commit -m “alter” //file提交到本地仓库
git push //file push到远程仓库
问题1:执行1后,把file从暂存区回退到工作区
git reset hash问题2:执行1,2后,把file从本地仓库回退到暂存区
git reset –soft hash问题3:执行1,2,3后,把file从本地和远程仓库全部删除
git reset –hard hash 直接把记录删除了,暂存区和工作区都没有了。
git push -f 远程仓库 分支
Git回滚代码到某个commit
git reset –hard HEAD^ // 回退到上个版本
git reset –hard HEAD~3 // 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset –hard commit_id // 退到/进到 指定commit的sha码
git push origin HEAD –force //强推到远程
git rebase -i 丢弃指定提交
针对想撤销中间某次commit的情况,可以使用如下的命令:
git rebase -i HEAD~2
tips:
1 | `rebase -i`是 `rebase --interactive` 的缩写; |
输入git rebase -i HEAD~2命令后,会出现一个编辑页面如下:
1 | git rebase -i HEAD~2 |
- 回滚最新的提交 :git reset 和 git rebase 命令都可以
- 回滚中间某次提交: git rebase 可以, git reset 不可以
- 如果提交已经同步到远程仓库,需要使用git push origin -f branch(分支名) 来将回滚也同步到远程仓库(master 分支谨慎使用 -f)
Git如何合并某一次commit的内容到指定分支
1 | git switch xxxbranch |