1、git 配置
git config --global user.name 'XXXX' //设置全局用户名
git config--global user.email 'XXXXX' //设置全局用户邮箱
2、git 基本操作(* 表示任意字符)
git init // 创建仓库
git add * //将文件加入暂存区
git commit -m 'XXXXX' //将暂存区的文件提交到仓库中
git status // 查看状态
git diff (*) // 查看全部文件*(指定文件)的具体修改
git log // 查看历史提交记录
git cherry-pick <commit id> // 将指定的提交(commit)应用于当前分支。
git stash // 暂时将未提交的变化移除
git stash pop // 移入上次未提交且被移除的内容
3、版本回退
git reset --hard HEAD^ //回退到上一个版本
git reset --hard HEAD^^ //回退到上上个版本
git reset --hard 'commit_id' //回退到指定版本号
git push --force // 远程分支回退
git reflog //查看想要回退的版本号
git reset HEAD * //对其已进入暂存区的修改
git rever HEAD~3 // 丢弃最近的三个commit,把状态恢复到最近的第四个commit,并且提交一个新的commit来记录这次改变。
git rever -n master~5..master~2 //丢弃从最近的第五个commit(包含)到第二个(不包含),但是不自动生成commit,这个revert仅仅修改working tree和index。
git rm //删除文件
注意:reset与revert的区别
git rever :
(1) 是用一次新的commit来回滚之前的commit
(2) 是用一次逆向的commit '中和'之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现
(3) 是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容
git reset :
(1) 是直接删除指定的commit
(2) 把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入
(3) 是把HEAD向后移动了一下
4、git分支管理
git branch //查看本地分支信息
git branch Dev //创建分支
git checkout dev //创建并进入分支
git merge dev //合并分支到当前分支
git merge --no-ff dev //禁止快进式合并
git branch -D dev //删除分支
git branch -r -D origin/dev //删除远程分支
5、远程仓库
git clone url //克隆远程仓库到本地
git remote add origin url //添加远程仓库
git push -u origin master //推送到远程分支(-u 将本地的master和远程的master关联起来)
git fetch //获取远程仓库的更新到本地,但是不合并
git pull //获取更新内容后自动合并
git remote //查看远程分支
6、建立本地分支与远程分支的关联
git branch --set-upstream 'local_branch' origin/'remote_branch'
7、修改本地仓库对应的远程仓库的地址
git remote 'set_url' origin url
8、 ==cherry-pick== 的用法
// 将指定的提交commitHash,应用于当前分支
git cherry-pick <commit id>
// 将feature分支的最近一次提交,转移到当前分支
git cherry-pick uat
注: git cherry-pick命令的参数,不一定是提交的哈希值,分支名也是可以的,表示转移该分支的最新提交
(1) 举例来说,现有代码仓库有master
和uat
两个分支:
a - b - c - d master
\
e - f - g uat
(2) 现将提交f
应用到 master
分支
// 切换到 master 分支
git checkout master
// cherry-pick 操作
git cherry-pick f
// 此时代码仓库会变成
a - b - c - d - f master
\
e - f - g uat
(3) cherry-pick
支持一次转移多个提交
// 将 A 和 B 两个提交应用到当前分支
git cherry-pick <HashA> <HashB>