简单介绍
Git是目前世界上最先进的分布式版本控制系统。
工作原理 / 流程:
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
image.png
基础提交命令
- git提交
使用Git提交文件到版本库有两步:
是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上
将修改的东西全部提交到暂存区 git add .
把文件提交到仓库 git commit -m “提交版本的备注”
或者一起使用两个命令 git add . && git commit -m 'test'
查看状态和修改
- 通过命令git status来查看是否还有文件未提交,绿色的是已提交的修改,红色的是未提交的修改
git status
注意:所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等,Git也不列外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道。
- 查看文件修改了哪些具体的内容
git diff exec-temp.py
(前提是路径正确,在当前文件的路径下,pwd可查看当前路径,如果不在当前路径下,文件前面需要加上文件的相对或者绝对路径)
常用的分支命令
查看分支:git branch
创建分支:git branch branchname
切换分支:git checkout branchname
创建+切换分支:git checkout –b branchname
合并某分支到当前分支:git merge branchname
删除分支:git branch –d branchname
强制删除:git branch -D branchname
强制更新:
git fetch --all
git reset --hard origin/master
git pull
版本回退命令
- 查看提交日志
查看提交历史记录:git log (显示从最近到最远的显示日志)
如果嫌显示的信息太多的话,我们可以使用命令 git log –pretty=oneline
- 回退一个或者多个版本
回退到上一个版本:
git reset --hard HEAD^ 或者 版本号回退 git reset --hard 版本号
回退到倒数第二个版本:
git reset --hard HEAD^^ 或者 版本号回退 git reset --hard 版本号
回退到倒数第100个版本:
git reset --hard HEAD~100 或者 版本号回退git reset --hard 版本号
git log 可以查看已提交的版本号,git reflog可以查看已经回滚的未在git log展示的版本号
git撤销修改
丢弃工作区的修改:git checkout -- readme.txt
命令 git checkout --readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销,这里有2种情况,如下:
readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态
注意:命令git checkout -- readme.txt 中的 -- 很重要,如果没有 -- 的话,那么命令变成创建分支了
git删除文件
一般情况下,可以直接在文件目录中把文件删了,或者使用如上rm命令:rm b.txt ,如果我想彻底从版本库中删掉了此文件的话,可以再执行commit命令 提交掉
远程仓库
把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
git push origin master
创建与合并分支
git checkout命令加上 –b参数表示创建并切换
git checkout -b dev
相当于
git branch dev
git checkout dev
- 查看分支,会列出所有的分支,当前分支前面会添加一个星号
git branch
现在我们可以把dev分支上的内容合并到分支master上了,可以在master分支上,使用如下命令
git merge dev
解决冲突
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<HEAD是指主分支修改的内容,>>>>>fenzhi1 是指fenzhi1上修改的内容,我们可以修改下如下后保存
将当前的工作区隐藏起来 git stash
查看隐藏列表 git stash list
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:
git stash apply
恢复后,stash内容并不删除,需要使用命令git stash drop来删除。
git stash pop
恢复的同时把stash内容也删除了
远程命令
当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。
查看远程库的信息 使用 git remote
要查看远程库的详细信息 使用 git remote –v
一:推送分支: git push origin master
二:抓取分支:
远程最新提交的和我试图推送的有冲突,先用git pull把最新的提交从origin/master抓下来,然后在本地合并,解决冲突,再推送。
总之,可以试图用git push origin branch-name推送自己的修改.
如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。
这个文章写的很详细和有条理,可以查看
https://blog.csdn.net/yy493004893/article/details/78739532
网友评论