创建git仓库
git init
提交所有被删除、被替换、被修改和新增的文件到数据暂存区
git add -A
提交暂存区文件到版本库
git commit -m "提交描述"
查看提交日志
git log
查看代码的修改情况
git status
查看代码的修改详情
git show commit的版本
新建并切换本地分支
git checkout -b "分支名"
切换本地分支
git checkout "分支名"
查看本地分支
git branch
重命名分支
git branch -m 原始名称 新名称
将远程git仓库里的指定分支拉取到本地
git checkout -b 本地分支名 origin/远程分支名
将本地分支推送到远程git仓库
git push --set-upstream origin 分支名
删除本地分支
git branch -d 分支名
删除远程分支
git push origin --delete 分支名
删除tag
git tag -d tag名称
克隆远程项目
git clone 远程项目地址
添加源地址
git remote add origin 新源地址
更换源地址
法一:直接原基础更换源地址
git remote set-url origin 新源地址
法二:先删后加
git remote rm origin git remote add origin 新源地址
更换了新的源地址,并不能直接立马pull 或者 push ,应该对分支添加监听才可以做操作
比如在更换了源地址后,对master分支执行git pull,提示当前分支没有跟踪信息,需要我们添加远程master的跟踪信息
git branch --set-upstream-to=origin/<远程分支名> 本地分支名
再次执行git pull,成功更新本地master仓库
查看源地址
git remote -v
从远程分支更新本地代码
git pull
合并其他分支代码
git merge 其他分支名
取消本次merge
当我们使用git merge操作合并代码但还没add时,若想取消这次合并,使用“git merge --abort”命令即可
git merge --abort
假如不幸已经 git add 了怎么办呢? 其实也很简单,先用 git reflog 指令显示历史的操作
再用 git reset --hard commit id就可以回退到操作之前的状态了
git reset --hard commit id
合并其他分支的某一部分的提交记录
比如,有时候我们只需要合并B分支的某一部分提交记录到A分支中,应该怎么办呢?
分两种情况:
只合并一个commit
当只需要合并B分支的一个commit到A分支中,我们先在B分支输入指令git log查看这一commit的版本号
git log
比如我们要合并B分支的第三个commit到A分支中
那么我们先切换到A分支
git checkout A
再执行以下指令即可( 153d96c3b7fb5d4d7a2e1ad869c3733cce21817a是B分支这一commit的版本号)
git cherry-pick 153d96c3b7fb5d4d7a2e1ad869c3733cce21817a
A分支执行git log即可看到A分支已经有这一commit记录
合并连续的多个commit到指定的分支上
比如在B分支上有7c32be61到54dfef55的连续的10个commit,54dfef55是后面的提交。先在要将这10个commit 合并到A分支上
首先基于B分支创建一个临时分支temp,并指明新分支的最后一个commit
git checkout -b temp 54dfef55
将temp分支上的从7c32be61到最后一个commit,也就是54dfef55的commit合并到A分支上
git rebase --onto A 7c32be61^
A分支执行git log即可看到A分支已经有这一commit记录
提交本地分支到远程仓库
git push -u origin 远程分支名
git 版本回退
法一
注意:
1. 此法属于回退,一旦执行回退到指定的commit,那么高于这条commit版本的commit记录都将消失,无法撤销回退操作
- git log 查看commit版本号
- git reset --hard 要回退到的指定版本号
- git push -f -u origin 远程分支名 // 强制push到远程分支
- ok,服务器代码已经回退,但是如果多个同事在使用这个分支,他们本地版本还是比服务器的版本高,所以别人重新提交代码,这个版本回退的操作也会被撤销,解决办法是让别人先将他们的本地分支删掉再重新从服务器拉取分支
法二
注意:
1. 此法不属于回退,其实可以把它理解为删除某一个指定commit的变化,属于新增一个操作commit(注意只是删除某一个指定的commit的变化,高于这个指定commit的commit并不会受影响,所以慎用!!!万一高版本commit的代码依赖这个revert的commit,那就会造成代码错误),并且对这个删除操作记录成一个新的commit
因此revert适合删除某一次对其他commit无影响的commit(比如最新的一次commit)
2. 执行revert,会在原基础上新增一条commit,且之前的commit记录都还在,因此可以通过commit编号撤销回退操作
- git log 查看commit版本号
- git revert -n 要删除某一次commit变化的版本号
- git commit -m “提交备注”
- git push origin 远程分支名
- ok,版本还原,其他同事只需要git pull更新一下代码即可
简而言之,reset是真正的回退操作,不可撤销。revert是属于删除某一次commit的变化,并对这个删除的操作新增一次commit,不属于回退,高版本的commit包括指定的commit都还在,可以撤销