再看看 Git


前情

马上要工作了,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 mastermaster可以替换成其他分支名

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为每一个提交快照的一个加密哈希,在日志中可以看到

消除冲突

这是比较重要的一个点,仔细说一下

  1. 修改不同的文件
    如果用户user1和用户user2各自的本地提交中修改了不同的文件,当一个用户将改动推送的远程仓库后,另一个用户推送就会遇到推送错误,需要先合并后再推送,因为两个用户修改的是不同文件,所以合并不会遇到麻烦.
  2. 修改相同文件的不同区域
    当用户user1和user2在本地提交中修改相同的文件,但是修改的是不同位置时,则两个用户的提交仍可以成功合并.
    具体的从操作是:user1将自己的修改推送到远程仓库后,user2也对一个文件不同位置进行修改,commit后,fetch远程的最新内容,然后merge,合并不同的分之内容,最后再push
  3. 相同位置不同内容
    首先我们可以使用git merge,然后产生冲突文件会有修改的内容,=======上面的内容,是当前HEAD的内容,以下的内容是合并的目标文件的内容,然后我们在编辑器中将内容合并,然后再合并提交
  4. 工作后的总结
    如果发生冲突,回到之前的版本,然后再修改,再提交

    暂时先这样,等遇到具体的情况再补充

  目录