前言
在开发项目中,尤其实在多人合作开发的项目中,代码管理和版本控制尤为重要。git就是一个非常好用流行的代码管理工具,记录下git的一些基础操作,方便日后复习查看。
git安装
- for linux
sudo apt-get install git - for windows
直接官网下载exe安装程序,解压安装就完事了。不过还需要打开git bash。配置一下:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
- for mac
推荐在app商城安装Xcode,然后先择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。
git基础
git init 初始化
git add -A 将所有改动添加到仓库暂存区
git commit -m “描述改动” 提交改动,并为改动添加注释
git status 查看工作区状态
git diff 查看修改内容
git log 查看提交的历史记录 head指向的版本就是当前的版本
git reset --hard commit_id 可以在不同历史版本之间穿梭 (HEAD 表示当前版本 HEAD^表示上一个版本 ,HEAD^^表示上上个版本)
git reflog 查看历史命令,以便确定要回到未来哪个版本
git checkout – “file” 在"file"文件在工作区的修改全部撤销,即回到上一次git commit或git add的状态
git reset HEAD "file"把file在暂存区的修改回退至工作区
git rm 用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
远程仓库相关
git remote add origin git@server-name:path/repo-name.git 关联远程库。关联一个远程库时必须给远程库指定一个名字,origin是默认习惯命名
git push -u origin master第一次推送master分支的所有内容;
git push origin master 推送最新修改
git push origin dev 向远程库推送dev分支
git remote -v 查看远程库信息
git remote rm 解除了本地和远程的绑定关系
git clone 克隆一个远程仓库
git checkout -b branch-name origin/branch-name 在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致;
git pull 抓取远程的新提交
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/
分支相关
git checkout -b dev 创建并切换到dev分支 相当于两个命令:git branch dev + git checkout dev
git branch 查看当前分支
git merge 合并指定分支到当前分支。加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
git branch -d dev 删除dev分支
git branch -D 丢弃一个没有被合并过的分支
git switch -c dev 创建并切换到新的dev分支
git switch master 直接切换到已有的master分支
git log --graph命令可以看到分支合并图
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;
在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
标签管理相关
注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a -m "blablabla…"可以指定标签信息
git show 可以看到说明文字
git tag可以查看所有标签。
git push origin 可以推送一个本地标签
git push origin --tags可以推送全部未推送过的本地标签;
git tag -d 可以删除一个本地标签;
git push origin :refs/tags/可以删除一个远程标签
其他关于git的操作
git config --global color.ui true 让Git显示颜色,会让命令输出看起来更醒目
忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
汇总表格
最后的最后,我的整理有些啰嗦,为大家附上我在网上找到的整理的十分简洁的关于git操作的表格,需要可以自取。
参考链接:
廖老师的git教程