Git一些命令与总结

Git

Git简介

Git是一个开源的分布式版本控制系统,同时也是内容管理系统,工作管理系统。
Git与SVN区别:
1、 Git是分布式的,SVN是集中式的
2、 Git吧内容按元数据方式存储,SVN按文件
3、 Git分支和SVN分支不同
4、 Git没有一个全局的版本号,SVN有
5、 Git内容完整性优于SVN
中心服务器:中心服务器用来交换每个用户的修改,没有中心服务器也能工作,GitHub就是一个中心服务器。

Git工作流

Git工作流程:
1、 克隆Git资源作为工作目录
2、 在克隆资源上添加或修改文件
3、 若其他人修改了,可以更新资源
4、 在提交前查看修改
5、 提交修改
6、 修改完后若发现错误,可以撤回并再次修改并提交
Git一些命令与总结
新建一个仓库后,当前目录成为工作区,工作区下有个隐藏目录.git,属于Git的版本库。
工作区:电脑能看到的目录
版本库中:
stage(index):暂存区,一般存放在.git目录下的index文件(.git/index)
History:版本库,存储所有分支信息,使一个HEAD指针指向当前分支。
Git一些命令与总结
Git一些命令与总结

1、 git add files:把文件修改添加到暂存区。暂存区目录树被更新,同时工作区修改的文件内容被写入到对象库中的一个新的对象中,该对象ID被记录在暂存区的文件索引中。
2、 git commit:将暂存区的修改提交到当前分支,提交后暂存区清空。暂存区目录树写到版本库中,master分支会做相应更新,即其指向的目录树就是提交时暂存区目录树。
3、 git reset – files:使用当前分支上的修改覆盖暂存区,撤销最后一个git add。暂存区的目录树会被重写,被master等值指向的目录树所替换,工作区不受影响。
4、 git rm --cached :从暂存区删除文件,工作区不做出改变
5、 git checkout – files:使用暂存区的修改覆盖工作目录,撤销本地修改。用暂存区文件替换工作区文件。
6、 git checkout HEAD .或:用HEAD指向的master分支中文件替换暂存区以及工作区中的文件。
Git分支
每一次提交,Git将每个提交串成一条时间线,HEAD指向当前分支指针。

git branch:列出分支
git checkout/switch branchname:切换分支
git merge branchname:合并分支
git status :查看冲突文件
git log:查看分支合并情况
git branch -d branchname:删除分支
git merge --no-ff -m "合并信息“ branchname:禁用fast forward,以普通模式合并,合并后的历史有分支,能看出来做过合并。

git stash:当前工作保存
git stash list:查看stash
git stash apply:恢复stash,恢复后stash内容不删除
git stash pop:恢复的同时把stash内容也删除了
git cherry-pick 提交的修改复制到当前分支

添加新功能时:

创建并切换到新分支
git switch -c newbranch
开发完毕
git add filename
git commit -m “message”
切回dev分支准备合并
git switch dev
后续合并即可,若未合并时需要取消并销毁分支,强行删除
git branch -D newbranch

多人协作:

git remote -v :查看远程库信息
推送分支:将该分支上所有本地提交推送到远程库
git push origin dev
master分支使主分支,要时刻与远程同步
dev分支使开发分支,团队所有成员在其上工作,所以也需要与远程同步
抓取分支:多人协作大家会向master和dev分支上推送各自修改
git clone默认情况下只能看到master分支,需要拉取dev
创建远程origin的dev分支到本地dev分支:
git checkout -b dev origin/dev
之后就可以在本地dev上修改,是不是把本地dev分支push到远程
git commit
git push origin dev
冲突情况:其他人对dev分支推送提交后,我的同样的文件作修改试图推送出现冲突,先出抓取下来分支在本地合并解决冲突再推送:
首先指定本地dev分支与远程origin/dev分支的链接
git branch --set-upstream-to=origin/dev dev
拉取
git pull
解决冲突后
git commit -m “message”
git push origin dev

多人协作工作模式

1、 试图推送自己的修改:git push origin branchname
2、 推送失败,先拉取:git pull
3、 若有冲突解决冲突,并在本地提交 git add / git commit
4、 重新推送:git push origin branchname

标签管理:切换到需要打标签的分支上

git tag tagname:创建标签
git tag tagname commitid :历史提交版本打标签
git tag :查看所有标签
git show tagname:查看标签信息
git tag -d tagname:删除本地标签
git push origin tagname 推送某个标签到远程
git push origin --tags:一次性推送全部尚未推送到远程的本地标签
删除已推送到远程标签
先删除本地标签:git tag -d tagname
从远程删除:git push origin :refs/tags/tagnem