由于工作中项目开发需要用到git,所以查了一些资料,对git的使用做一些记录的总结。
git简介
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
git 常用指令
git config --global user.name xxxxxxname #配置邮箱
git config --global user.email xxxxxxxxxemail #配置用户名
git config -l #显示配置
git clone <url> #克隆远程版本库
git init #初始化本地仓库
git status #查看下仓库的当前的状态
git add <file> #提交file文件,从工作区到暂存区
git add . #提交所有文件,从工作区到暂存区
git commit -m "commit message" # 提交所有更新过的文件,从暂存区到本地仓库
git commit file -m "commit message" # 提交file文件,从暂存区到本地仓库
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
使用Git提交文件到版本库有两步:
第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
某个文件不先add就直接commit,会报错。
git log #查看提交历史日志
git log --pretty=oneline #查看提交历史日志,单行显示
git reflog #查看所有操作记录日志,回退很有用
git分支
显示分支
git branch #显示本地分支
git branch -a #显示所有分支
git branch -r #显示远程分支
git branch abc #本地新建abc分支
git checkout abc # 切换到本地abc分支
git checkout -b abc #新建本地abc分支并切换到abc分支
git checkout -- file #把file文件在从暂存区恢复到工作区,放弃工作区的修改,--必须写
git diff #查看工作区与暂存区的不同
git diff file #查看file文件在工作区与暂存区的不同
git版本回退
git reset --hard HEAD # 回退到上个版本
git reset --hard HEAD~0 # 回退到前第0个版本
git reset --hard HEAD~1 # 回退到前第1个版本
git reset --hard HEAD~n # 回退到前第n个版本
git reset --hard 0abda95 # 回退到版本id为0abda95的版本
git本地合并
git merge abc #把abc仓库合并的当前的分支,默认是使用”Fast forward”模式,
#在这种模式下,删除分支后,会丢掉分支信息,–no-ff是禁用”Fast forward”模式
git merge –no-ff -m “注释” abc #非”Fast forward”模式合并
git branch -d abc #删除abc分支
在”Fast forward”模式下合并,使用git branch -d abc删除abc分支后,用git log就查不到abc分支的信息了;
在非”Fast forward”模式下合并,使用git branch -d abc删除abc分支后,用git log还能查到abc分支的信息,推荐用-no-ff模式。
git工作区暂存
git stash save "注释" #保存工作区
git stash list #查看保存的工作区
git stash pop stash@{0} #恢复保存的工作区
git 远程
git remote #要查看远程库的信息
git remote –v #要查看远程库的详细信息
当从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。
git fetch [remote] # 下载远程仓库的所有变动
git remote add [shortname] [url] # 增加一个新的远程仓库,并命名
git pull <remote> <branch> # 拉取代码并快速合并,取回远程仓库remote的变化,与本地分支branch合并
git push <remote> <branch> # 推送代码及快速合并,上传本地指定分支branch到远程仓库remote
git branch --set-upstream-to=origin/abc abc #指定远程分支abc与本地分支abc的链接
git checkout –b dev origin/dev #把远程的origin的dev分支拉到本地
本地开发完成后,可以试图用git push origin branch-name推送自己分支的修改.
如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
一定要先pull这个分支,检查冲突。
如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送到远程的分支branch-name。
git tag
$ git log
commit 88d434eb9992fa7502ec246ecfb89aef19f16873
Date: Wed Nov 16 17:54:36 2016 +0800
change for assert
commit 6df3aa614a45e687697a628a9174106822f79bfc
Date: Tue Nov 15 17:45:40 2016 +0800
change for V1.7
使用commit id
git tag v0.9 6df3aa614a45e687697a628a9174106822f79bfc
推送某个标签到远程,使用命令git push origin <tagname>:
$ git push origin testtag
一次性推送全部尚未推送到远程的本地标签
$ git push origin --tags
参考:https://blog.csdn.net/qq_36150631/article/details/81038485
https://www.jianshu.com/p/f57f08918a8b