Git 学习之路

常用单词

  • HEAD --> 当前版本(HEAD^ --> 上一个版本,HEAD^^ --> 上上版本,HEAD~100 --> 上100个版本)
  • Working Directory --> 工作区(电脑里面的目录)
  • Repository --> 版本库
  1. stage(/index) 暂存区----git add 就是把文件修改添加到暂存区
    2.master 自动创建的第一个分支----git commit就是把文件修改提交到分支
  • origin(远程仓库) --> 运行Git的服务器,如Github
  • stash --> 可以把当前工作储藏起来

Git 安装

  • 简单的一句命令行 sudo apt-get install git
  • 安装完成之后需要自报家门
    $ git config --global user.name "Your Name"
    $ git config --global user.email "[email protected]"
  • Github是通过SSH来管理设备的
    $ ssh-keygen -t rsa -C "[email protected]"

git提交

  • git init --> 在文件夹底下运行这条命令,会是此文件夹变成Git可以管理的仓库
  • 将文件放到Git仓库所需要的步骤
  1. git add 文件名(当全部上传仓库时:git add .)
  2. git commit -m "xxxx"(将文件提交到仓库)
  3. git push origin master 推送到远程仓库

Git管理

  • git status 可以让我们掌握仓库的状态
  • git diff 查看difference
  • git log 查看历史记录(log中commit是版本号)
  • git reset --hard HEAD^(HEAD也可以换成版本号) 回退到上个版本
  • git reflog 记录每一次的行为,里面包括版本号
  • git checkout -- file 把file文件再工作区的修改全部撤销(1.当工作区的修改还没有放到暂存区,撤销到和版本库一样的状态。2.当工作区的修改已经添加到暂存区,撤销到添加暂存区后的状态)
  • git reset HEAD file 可以把暂存区的修改撤销掉(unstage),重新放回工作区
  • git rm “file”从版本库中删除文件,然后commit

远程仓库

  • 在远程仓库里克隆新的仓库(如Github)
    $ git remote add origin [email protected]:XXXXXX/xxxxxx.git
  • 我们一般先创建远程仓库,再从远程仓库克隆
  • git remote 查看远程仓库信息(远程仓库默认名一般为origin)
  • git remote -v 显示更详细的信息

分支管理

步骤 参考

  • (提交点我的理解就是提交的代码节点)一开始的时候,master分支是一条线,Git用master指向最新的提交点,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
  • 当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交点,再把HEAD指向dev,就表示当前分支在dev上。不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变。
  • 假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并。
  • 合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支。

代码

  • git checkout -b 创建并切换分支(git checkout -b dev 创建并切换dev分支,相当于git branch dev ,git checkout dev)
  • git checkou 切换分支(git checkout master 切换回master分支)
  • git branch 查看当前分支,会列出所有的分支,×代表当前分支。
  • git merge 合并name分区到当前分支(git merge dev 合并dev到当前分区)
  • git branch -d 删除分区(git branch -d dev 删除dev分区)

冲突管理

  • Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,我们手动修改后add,commit。
  • git log --graph 查看分支合并图。

分支策略管理

  • git merge --no--ff -m “注释” 禁用Fast forward(在这个模式下合并分区之后无法查找分支信息)。

Bug分支

  • git stash 储藏工作
  • Bug在哪个分支上,就从哪个分支上创建临时分支修复。修复完成之后,切换到相应分支,合并删除临时分支。
  • git stash list 查看stash
  • git stash apply 恢复(恢复后stash内容并不删除,需要用git stash drop来删除)
  • git stash pop 恢复的同时,也把stash删了。
  • git stash apply stash@{0} 恢复到制定的stash

Feature分支

  • 开发一个新feature,最好新建一个分支。
  • 如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

推送分支

  • git push origin 把该分支上所有的远程操作提交到远程。
  • 在Git中分支可以在本地藏着玩,是否推送到远程视心情。

抓取分支

  • 当小伙伴从远程仓库clone时,默认只能看到本地的master。
  • git checkout -b dev origin/dev 创建远程origin的dev分支到本地。

当遇到冲突时

  • git branch --set-upstream dev origin/dev 建立本地dev分支与远程origin/dev分支的链接
  • git pull 把最新的代码抓下来,在本地合并之后,再推送。

多人协作的工作模式

因此,多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
  5. 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

标签 不详细,参考

  • 切换到相应分支
  • git tag 打标签
  • git tag 查看标签

搭建Git服务器 搭建Git服务器

重新修改.gitignore使其重新生效

  • git rm -r --cached . #清除缓存
  • git add . #重新trace file
  • git commit -m "update .gitignore" #提交和注释
  • git push origin master #可选,如果需要同步到remote上的话

你可能感兴趣的:(Git 学习之路)