1、安装和设置用户名和邮箱
# 配置相关信息
git config
git config --global user.name "wincharle"
git config --global user.email "wincharle@qq.com"
2、git工作图解
image- workspace:工作区
- index/stage:暂存区
- repository:仓库区(或者本地仓库)
- remote:远程仓库
3、创建版本库
#当前目录创建一个版本库
git init
#新建一个目录,并将其初始化为一个git代码库
git init [project-name]
#下载一个项目和它的整个代码历史
git clone [url]
4、增加文件到暂存区
#添加文件到暂存区,可以一次添加多个
git add file1 file2 ...
#添加文件夹到暂存区
git add [dir]
#添加当前文件夹下的所有文件到暂存区
git add
5、代码提交到本地仓库
#提交暂存区到仓库区
git commit -m "message"
#提交暂存区指定文件到仓库区
git commit file1 file2 ... -m "message"
6、文件修改查询
#工作区状态查看,查看哪些文件被修改
git status
#查看修改的具体内容
git diff
7、仓库区版本控制git reset
git reset主要做两件事:
- 修改仓库区HEAD指针
- 根据参数--hard、--soft和--mixed选择是否覆盖缓存区和工作区,默认是mixed
# 默认情况下是覆盖所有文件,如果想覆盖一个文件,添加文件名
git reset --hard --mixed --soft [commit]
git reset HEAD [filename]
#HEAD指向当前版本,HEAD^指向上一个版本
git reset --hard HEAD^
#通过版本号
git reset --hard commit_id
#通过git log查看提交历史
git log
#通过git reflog查看历史命令,以确定回到未来哪个版本
git reflog
8、删除文件
#从版本库中删除文件
git rm file
git commit -m "remove file"
#误删文件,checkout实际是从版本库里的文件代替工作区的版本
git checkout -- file
9、远程仓库
1、添加远程库
# 增加一个姓的远程仓库,并命名
git remote add [name] [url]
# origin就是https://github.com/wincharle/learngit这个仓库
git remote add origin https://github.com/wincharle/learngit
# 本地仓库的内容推送到远程仓库,第一次Push添加-u
git push -u origin master
git push origin <branch>
NOTE: 如果远程仓库已经有内容,需要pull一下,并合并内容
git pull origin master --allow-unrelated-histories
2、克隆远程库
# 克隆仓库
git clone https://github.com/wincharle/test
10、分支
# 查看分支
git branch
# 新建分支
git branch <branchname>
# 切换分支
git checkout <branchname>
# 合并分支
git merge <branchname>
# 删除分支
git branch -d <branchname>
1、checkout(检出)
- 检出分支,HEAD指向branch,更新缓存区和工作区
git checkout branch
- 从commit里检出文件,重置缓存区和工作区
# 显示的提供commit,重置缓存区和工作区
git checkcout commit -- filename
# 不提供commit,默认是缓存区
git checkout -- filename
2、分支合并
# 直接merge,但是有缺点
git merge branch
# 直接merge通过git log查看不到分支信息
git log --graph
# 提供参数--no-ff,会有一次commit
git merge --no-ff -m "merge message"
3、分支管理策略
A和B同时工作,有两个分支master和dev。
第1步:2人同时把远程仓库克隆到本地
git clone https://github.com/wincharle/learngit
NOTE:克隆节点的话,只会克隆master节点。
第2步:A和B需要在dev节点上开发,就必须将远程分支下载到本地,可以通过checkout或者fetch
# checkout远程分支
git checkout -b dev origin/dev
# fetch
git fetch origin 远程分支名:本地分支名
第3步:A完成开发后push到远程仓库
git add ...
git commit ...
git push origin dev
第4步:B完成开发后也push到远程仓库,但是发生错误。原因是A和B提交的版本有冲突,需要先pull一下,然后本地合并后,解决冲突,再推送。
git pull origin dev
11、标签管理(标签和commit就类似于域名和IP地址)
# 给一个commit创建一个标签,默认commit是HEAD
git tag <name>
git tag <name> <commit>
# 给标签指定标签信息
git tag -a <name> -m "blabla...."
# 查看所有标签
git tag
# 查看一个标签的信息
git show <tagname>
# 推送本地标签
git push origin <tagname>
# 推送本地所有标签
git push origin --tags
# 删除本地标签
git tag -d <tagname>
# 删除远程标签
git push origin :refs/tags/<tagname>
网友评论