GIT

基本概念

git: 工具,版本控制

github:网站,社交平台,开源项目,远程仓库

配置

git config --list: 设置贡献者和查看所有配置项

设置贡献者

设置:name,email

git config --global  user.name 
    // 例如:git config --global user.name "smiel"
git config --global  user.email 
   // 例如:git config --global user.erail "1129507496@qq.com"

查看配置项

git config --list: 查看所有配置项  

修改别名:

执行: `git unstage`
配置: `git config --global alias.unstage "reset HEAD"`

GIT三个区

  • 工作区
  • 暂存区
作用:
作为过渡层
避免误操作
保护工作去和版本区
分支处理
  • 版本区(库)

《GIT》

GIT工具作用

  1. 从服务器上克隆完成的GIT仓库(包括代码和版本信息)到单机上。
  2. 在自己的机器上根据不同的开发目的,创建分支,修改代码。
  3. 在单机上自己创建的分支上提交代码。
  4. 在单机上合并分支。
  5. 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
  6. 生成补丁(patch),把补丁发送给主开发者。
  7. 一般开发者之间解决冲突的方法,开发者之间可以使用pull命令解决冲突,解决完冲突之后再向主开发者提交.

GIT优点

  1. 适合分布式开发,强调个体。
  2. 公共服务器压力和数据量都不会太大。
  3. 速度快,灵活。
  4. 任意两个开发者之间可以很容易的解决冲突。
  5. 离线工作。

GIT缺点

  1. 学习周期相对而言比较长
  2. 不符合常规思维
  3. 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息.

获取和创建项目

init

git init:将一个目录初始化为 Git 仓库

执行init命令之后,就有了一个GIT仓库的架子,可以开始项目开发,创建的新的GIT仓库里,任何时候,任何目录中任何操作,都是本地化。

clone

git clone url: 复制一个GIT仓库

git cloen https://github.com/vuejs/vue.git

复制该项目中的全部记录,本地拥有代码,并且该操作将拷贝该项目的主分支,能够查看代码,或编辑,修改。进入到该目录中,会看到.git子目录。所有的项目数据都存储该文件中.

基本操作

add

git add: 文件添加到暂存区

git add .
git add [name]

status

git status -s: 查看在工作区和暂存区的状态

diff

git diff 工作区和暂存区的差异对比

git diff --cached(--staged) 暂存区和版本库的差异对比
git diff master(分支名字):  分支之间的差异对比

commit

git commit 添加到版本库

git commit -m : 执行弹窗文本编辑,需要添加注释
git commit -a : 自动将提交前已经记录的,修改的文件放入缓存区.

git add 提交缓存的流程太过繁琐, 可以通过git commit -a 跳过git add .这一步。为任意已有记录的文件执行git add .

reset

git reset HEAD demo1.html 撤回提交到暂存区的文件

git reset --hard commit_id 对版本还原
    HEAD^
    HEAD~<num>
    
git checkout --hard a7
git reset --hard HEAD^ 往回走一个版本
git reset --hard HEAD~2 往回走两个版本

《GIT》

《GIT》

撤销:

git reset HEAD <file.name> 撤销到暂存区
    git reset HEAD drag.js
git checkout -- <file.name> 把暂存区还原到工作区
    git checkout -- drag.js
git commit --amend 撤销到暂存区
    git commit -m "change drag.js" --amend 

恢复 :

git checkout commit_id <file.name> 对文件的还原

git checkout a7e8623 drag.js   

rm

git rm 删除

git rm 会将文件从缓存区中移除。这与git reset HEAD 将文件从取消缓存是有区别的,“取消缓存”的意思是将缓存去恢复为做出修改之前的样子。 git rm 则将该文件测底从缓存去踢出,因此不会有log日志,删除了文件.

执行git rm 来删除GIT追踪的文件。还会删除工作目录中的相应文件.

git rm <file.name> 删除暂存区的文件[手动删除工作区的文件,才可以使用]
    git rm test.txt
git rm -f <file.name>    直接删除暂存区的文件. 工作区的文件也删除
    git rm -f test.txt
git rm 0f --cached <file.name> 只删除暂存区的文件,工作区的文件保留.
    git rm --cached test.txt

分支与合并

branch

git branch 创建分支

git branch <name> 创建分支
git branch 查看分支
git branch 查看分支
    -d
    --merged
    --no-merged
    
git branch --merged  查看mster分支所合并的分支
git branch --no-merged 查看没值合并的分支
git branch -d new1 删除分支        

checkout

git checkout 切换分支

git checkout 切换分支
    -b
    
git checkout new1 
git checkout -b new2  // 创建new2分支,直接把创建的当作主分支     

merge

git merge 合并分支

修改分支冲突:一旦发生冲突,手动进行修改.

《GIT》

git diff master origin/master 查看远端和工作区的区别
git merge origin/master 合并代码,然后手动选择
git pull 直接合并文件,少掉 diff和merge 的步骤 // 把远端的直接合并到master上.
git fetch 一般情况下使用这个,可以查看出现问题的原因.

tag

git tag 给历史记录中某个重要的一点打上标签

git tag -a v1.0
git tag // 查看
git tag v1.0 // 创建标签
git push origin v1.0 // 同步到github

查看标签在日志中的信息

git log --oneline --decorate --graph 

mv

git mv 移动或重命名

git mv file_old file_new
mv file_old file_new
info : 执行info指令,查询指令相关信息,会要求您输入欲查询的名称。
cat : 执行cat指令,列出文件内容。
gitview : 执行gitview指令,观看文件内容。
vi : 执行vi指令,编辑文件内容。
cp : 执行cp指令,复制文件或目录,会要求您输入目标文件或目录。
mv : 执行mv指令,移动文件或目录,或是更改其名称,会要求您输入目标文件或目录。
mkdir : 执行mkdir指令,建立目录。
rm : 执行rm指令,删除文件或目录。
make : 执行make指令,批处理执行指令或编译程序时,会要求您输入相关命令。
git : 离开git文件管理员。

更新项目

remote

git remote 查看,添加和删除远端仓库

git remote 
    -v
    origin 

git remote origin 远程仓库名字
git remote -v 查看到仓库对于远程的地址    

git remote add 项目添加一个新的远端仓库

git remote add [alias] [url]

git remote rm 删除现存的某个别名

git remote rm [alias]

fetch

git fetch 从远端仓库下载新分支与数据

git fetch [alias] 将仓库与远端仓库同步,提取所有它独有的数据到本地分支以合并或怎样。

pull

git pull 从远端仓库提取数据并尝试合并到当前分支

该命令是在git fetch之后紧接着 git merge 远端分支到你所在的任意分支。

push

git push 本地改动推送到远端仓库

git push [alias] [branch] // 仓库名字,分支.  

检查与比较

log

git log 显示一个分支中提交的更改记录.

需要了解当执行git commit以存储一个日志的时候,都有什么信息被保存了。除了文件详单提交信息,和提交者的信息,Git还保存了此次提交所基于的日志信息。

git log --oneline 查看历史记录的紧凑简洁的版本.

git log --oneline --graph 查看历史中什么时候出现分支,合并,展示拓扑图.

git log --oneline master 查看特殊分支的日志信息

git log –author

git log --author 寻找某个特定的作者的提交

git log --author=v_linxingzhang --oneline -5

git log –since –before

git log --oneline --before={3.weeks.ago} --after={2017-01-06} --no-merges

git log -p

git log -p 显示每个提交引入的补丁

git log -p -2

git log –stat

git log --stat 显示每个提交引入的改动的差值统计

如果-p 选项太过详细,可以用--stat 总结改动。 使用--stat选项时,同一份日志的输出。

git log 远程分支 origin/本地分支

> git log dev origin/dev

查看全部日志信息,包括本地没有更新远程信息.

diff

git diff 对比

git diff [version]
git diff 工作区和暂存区的差异对比
git diff --cached(--staged) 暂存区和版本库的差异对比
git diff master 
    git diff 分支名字

git diff –stat

比较两个不同的分支,类似执行git diff branchA branchB的命令

git diff –stat master dev

比较两个不同的分支,指定分支.

使用git diff 查看某一分支自它偏离出来起与过去某一点之间项目的改动。 总是使用git diff branchA ... branchB来查看branchBbranchA的相对差值.

其它

git stash 将文件给push 到一个回收站中
git stash pop 将文件给pop到一个回收站中
git stash drop 将放入回收站的文件删除
git push origin 本地分支名字:远程分支名字 本地分支添加到远程分支

git push --set-upstream origin master -f 和远程分支建立关联+ 强制推本地文件
git push origin :origin/master 删除远程分支需要加:

git checkout -b dev origin/dev 以远程分支创建本地分支
git checkout -m 旧分支名字 新分支名字 分支修改名字
git checkout -b <本地分支名> origin/<远程分支名>,git checkout -b v4.0 origin/v4.0 获取远程存在分支,本地不存在分支。
git cherry-pick <commit id> 对已经存在的commit进行再次提交.(不同版本,不同分支)

git diff 查看本地的改动,即git status的文件具体改动。
git diff commit-id1 commit-id2 --stat 两个版本之间有哪些改动
git diff branch1 branch2 --stat 两个分支之间有哪些改动
git diff tag1 tag2 --stat 两个分支之间有哪些改动
git log file看到一个文件的改动,以commit的形式
git log -p file具体一个文件的历史改动记录

git fetch origin barnch1:barnch2 远程仓库同步到本地

    原文作者:alogy
    原文地址: https://segmentfault.com/a/1190000008019975
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞