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 "[email protected]"
查看配置项
git config --list: 查看所有配置项  

修改别名:

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

GIT三个区

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

clipboard.png

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~
    
git checkout --hard a7
git reset --hard HEAD^ 往回走一个版本
git reset --hard HEAD~2 往回走两个版本

clipboard.png

clipboard.png

撤销:

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

恢复 :

git checkout commit_id  对文件的还原

git checkout a7e8623 drag.js   

rm

git rm 删除

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

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

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

分支与合并

branch

git branch 创建分支

git branch  创建分支
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 合并分支

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

clipboard.png

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进行再次提交.(不同版本,不同分支)


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 远程仓库同步到本地

你可能感兴趣的:(版本管理工具,git)