前情
马上要工作了,Git这东西还是需要重新再看一下,顺便记录在这
基本操作
git init
– 初始化仓库
如果初始化成功,当前目录下会生成一个.git的隐藏文件夹,这个文件夹存储这管理当前目录内容所需的仓库数据.在Git中,我们将这个目录称为附属于该仓库的工作树
.文件的编辑等操作在工作树中记性,将记录到仓库中,从此管理文件的历史快照.如果要将文件恢复到原先的状态,可以从仓库中调取之前的快照,在工作树中打开.
但是一般我都不会使用这个命令,而是直接从线上仓库git clone
下来.
git status
– 查看仓库的状态
可以看到当前的分支,提交状态等信息
git add
– 向暂存区中添加文件
如果想要Git管理你的文件,就需要通过git add 将文件添加到暂存区,暂存区是提交前的一个临时区域.
如果要添加指定文件,在add 后加文件名,如果要添加所有文件,就使用.
git commit
– 保存仓库的历史记录
git commit命令可以将当前暂存区中的文件实际保存在仓库的历史记录中,通过这些记录,我们就可以在工作树中复原文件.
通常,需要使用-m
来添加本次提交的说明.或者直接git commit,然后启动编辑器具体添加说明.
git log
– 查看提交日志
该命令可以查看以往仓库的调教的日志,包括可以查看什么时候提交了合并,以及操作前后有怎样的差别.
使用--pretty=short
可以简化日志信息
在命令后加指定文件名,可以只查看相关的文件的提交信息
使用-p
,可以查看提交前后差异
git diff
– 查看更改前后差别
该命令可以查看工作树,暂存区,最新提交之间的差别, 如果是查看本地仓库和远程仓库的区别,就在后面加origin branchname
git push
– 推送到远程仓库
一般如果我们是git clone
下来的文件,可以直接push,当然后面需要加origin master
也就是远程的master分支,当然也可以切换到相关的分支推送.
git pull
–获取远程最新的分支内容
当本地内容不是最新的内容时,为了避免提交时的矛盾,可以先获取远程仓库中的最新内容.后续也可以加origin master
master可以替换成其他分支名
git reset
–返回到之前的版本
一般是git reset HEAD
就可以回到head,但是如果想回到之前固定的版本,使用git reset --soft/--hard
后接固定版本的commit hash值,–soft和–hard的区别是是否修改暂存区和工作目录
分支
分支并不难,难的是多分支开发过程中的冲突问题
git branch
– 查看分支git checkout -b
– 创建并切换分支git branch
– 创建分支git checkout
– 切换分支
切换分支前一定要push当前分支的内容,否则会报错git checkout -
– 切换回上一个分支git merge
– 合并分支内容
一般的合并到master分支,是在远程仓库的UI界面进行,提出一个mq,然后由管理者合并,这里是命令行的本地合并内容.本地合并,后面加要合并的分支,意为将后面的分支合并到当前分支中.git reset
– 回溯历史版本
后续是--hard 哈希值
,所谓哈希值,是Git为每一个提交快照的一个加密哈希,在日志中可以看到
消除冲突
这是比较重要的一个点,仔细说一下
- 修改不同的文件
如果用户user1和用户user2各自的本地提交中修改了不同的文件,当一个用户将改动推送的远程仓库后,另一个用户推送就会遇到推送错误,需要先合并后再推送,因为两个用户修改的是不同文件,所以合并不会遇到麻烦. - 修改相同文件的不同区域
当用户user1和user2在本地提交中修改相同的文件,但是修改的是不同位置时,则两个用户的提交仍可以成功合并.
具体的从操作是:user1将自己的修改推送到远程仓库后,user2也对一个文件不同位置进行修改,commit后,fetch远程的最新内容,然后merge,合并不同的分之内容,最后再push - 相同位置不同内容
首先我们可以使用git merge,然后产生冲突文件会有修改的内容,=======
上面的内容,是当前HEAD的内容,以下的内容是合并的目标文件的内容,然后我们在编辑器中将内容合并,然后再合并提交 - 工作后的总结
如果发生冲突,回到之前的版本,然后再修改,再提交后
暂时先这样,等遇到具体的情况再补充