博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git使用指南
阅读量:7073 次
发布时间:2019-06-28

本文共 4357 字,大约阅读时间需要 14 分钟。

一、创建版本库

  • mkdir <文件名> 创建新的文件夹

    如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名<包括父目录>不包含中文。

  • cd <文件名> 切换到新的文件夹

  • pwd 查看当前目录

  • git init 把当前目录变成git可以管理的仓库

  • git add <文件名> 使用命令git add

    注意,可反复多次使用,添加多个文件,把文件加入暂存区;

  • git commit -m <提示文字> git commit 提交的是一个某个时段的快照,把暂存区的所有修改提交到当前分支。

  • git status 要随时掌握工作区的状态,使用git status命令。

  • git diff 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

二、版本回退

  • git reset --hard commit_id HEAD指向的版本就是当前版本。Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

  • git log 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

  • git reflog 要重返未来,用git reflog(已经删除的提交也可以查看)查看命令历史,以便确定要回到未来的哪个版本。

  • git log --pretty=oneline 只显示第一行(注意:没有git log --pretty=twoline)

  • git reset --hard HEAD^ 回退到上一个版本,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

  • cat readme.txt 查看文件readme.txt的内容

三、工作区、暂存区和版本库

工作区(Working Directory)

就是你在电脑里能看到的目录文件夹。

版本库(Repository)

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git是跟踪的修改,每次修改,如果不用git add到暂存区,那就不会加入到commit中。

  • git diff HEAD -- <文件名> git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别。

四、撤销修改

此时有两个种情况: 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态; 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。 总之,就是让这个文件回到最近一次git commit或git add时的状态。

  • git checkout -- <文件名> 命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销。

    一定要加上 --- ,否则就是切换到另一个分支

  • git reset HEAD <文件名> 把暂存区的修改撤销掉(unstage),重新放回工作区。

    git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。

五、删除文件

  • git rm 用于删除一个文件。删除工作区的文件,我们可以手动删除文件或是用命令 rm <文件名>。

    当删除了一个工作区的文件后,我们查看状态,发现有两个选择。 一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit。 另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本。 使用命令git checkout -- <文件名>

  • 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git

  • 关联后,使用命令git push -u origin master第一次推送master分支的所有内容。

  • 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改。

六、创建与合并分支

  • 查看分支:git branch
  • 创建分支:git branch 分支名
  • 切换分支:git checkout 分支名
  • 创建+切换分支:git checkout -b 分支名
  • 合并某分支到当前分支:git merge 分支名
  • 删除分支:git branch -d 分支名

七、解决冲突

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。 解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。 用git log --graph命令可以看到分支合并图。

八、分支管理策略

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

九、Bug分支管理

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除; 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。(恢复有两个办法:一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;另一种方式是用git stash pop,恢复的同时把stash内容也删了)

  • git branch -D <分支名> 强制丢弃一个没有被合并过的分支(在dev开发时,需要开发新任务,就在dev上建了新的分支aa,开发完commit了,切回dev后还没来得及合并,此时需求有变,需要删除分支aa,就可用-D强制删除)

十、多人协作、

  • git remote –v 查看远程库信息

  • git push origin branch-name 本地新建的分支如果不推送到远程,对其他人就是不可见的;从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • git pull 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

  • git checkout -b branch-name origin/branch-name 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • git branch --set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

    多人协作的工作模式通常是这样:

    首先,可以试图用git push origin <分支名>推送自己的修改; 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并; 如果合并有冲突,则解决冲突,并在本地提交; 没有冲突或者解决掉冲突后,再用git push origin <分支名>推送就能成功! 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <分支名> origin/<分支名>。

  • git cherry-pick <提交id>  选择某一个分支中的一个或几个commit(s)来进行操作(操作的对象是commit),如将A分支中的某一个或是几个commit合并到B分支中,我们先git log (--pretty=oneline) 查看提交ID。如果是要将A分支的commit76cada ~62ecb3 到合并到B分支,那么使用rebase 更合适。首先需要基于A创建一个新的分支,并指明新分支的最后一个commit,用git checkout -b newbranch 62ecb3,然后rebase这个新分支的commit到B(--ontoB),76cada^ 指明你想从哪个特定的commit开始,用git rebase --onto B 76cada^,得到的结果就是A分支的commit 76cada ~62ecb3 都被合并到了B分支。

十一、标签管理

创建标签
  • git tag <标签名 | commit_id> 用于创建一个标签, 默认为HEAD.
  • git tag v<版本号> commit_id 用于创建一个以某个commit点为截止点的版本
  • git tag 查看所有标签
  • git show v<版本号> 查看某个版本下的说明文字
  • git tag –a <标签名> -m “提示描述” commit_id 创建某个版本并指定标签信息
操作标签:
  • git push origin <标签名> 可以推送一个本地标签;
  • git push origin –tags 可以推送全部未推送过的本地标签到远程;
  • git tag -d <标签名> 可以删除一个本地标签;
  • git push origin :refs/tags/<标签名> 可以删除一个远程标签。

十二、忽略特殊文件

忽略某些文件时,需要编写.gitignore; .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理。

十三、配置别名

  • git config --global alias.co checkout 配置checkout的别名为co

  • git config --global alias.ci commit 配置commit的别名为ci

  • git config --global alias.br branch 配置branch的别名为br

--global参数是全局参数

  • git ci -m "bala bala bala..." 以某一个别名来做相应的操作

  • git config --global alias.unstage 'reset HEAD' 配置撤销修改的别名为unstage

  • git config --global alias.last 'log -1' 配置显示最后一次提交的别名为last

  • cat .git/config 查看git配置文件中的配置,别名在[alias]中

    ---------------------此总结参考廖雪峰的git教程---------------------

转载地址:http://dmuml.baihongyu.com/

你可能感兴趣的文章
TCP协议中FLAG的含义
查看>>
Navicat for MySQL之HTTP和SSH远程连接数据库
查看>>
Android中 android:layout_weight 属性 完美解释
查看>>
简单文件存储进内存
查看>>
LINUX用户、用户组及权限管理
查看>>
Apache Struts2 远程命令执行漏洞
查看>>
.NET Framework 4.6.2改进了WPF和安全性
查看>>
PHP 截取字符串
查看>>
After Interview of Mstar
查看>>
js数组如何去重
查看>>
Linux高速下载工具——Axel
查看>>
3.保安队的日子(下)我当程序员的那些事1
查看>>
控制台登录,提示证书错误
查看>>
Java]Socket和ServerSocket服务器端接受数据
查看>>
grep与正则表达式
查看>>
我的友情链接
查看>>
ThinkSNS开源社交系统安装问题及解决措施
查看>>
2018年微信小程序风口最新发展趋势分析
查看>>
ThinkSNS+ 移动端1.8.2.0704 版本更新简要说明
查看>>
ThinkSNSPlus 2.0 产品体验报告
查看>>