Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
官网下载安装
Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。
本章将对有关创建与提交你的项目快照的命令作介绍。
Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull,后面我们会详细介绍。
说明:
第一种方式:
在随意一个文件夹中右键>Git Bash here
注意:需要有右键菜单的支持
第二种方式:
在安装目录下点击 git-bash.exe 启动
第一种方式:
新建一个文件夹,然后在文件夹内,调出控制台页面输入
git init
会发现多出一个.git的文件夹
注意:需要打开隐藏文件夹的显示
第二种方式:
使用我们指定目录作为Git仓库。
git init 目录路径名
你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录
,它持有实际文件;第二个是 暂存区(Index)
,它像个缓存区域,临时保存你的改动;最后是 HEAD
,它指向你最后一次提交的结果。
第一步
在本地仓库创建新文件(工作区新建文件)
touch 文件名
或者直接在文件夹中进行新建文件操作
第二步
使用add命令将文件添加到缓冲区(工作区添加到缓冲区)
单个文件添加方式: git add 文件名 将工作区内的所有文件进行添加 git add *
第三步
使用commit命令将缓冲区的文件最终提交到本地仓库(缓冲区提交到HEAD区)
git commit -m "提交信息"
注意:如果您不使用-m,会出现编辑器来让你写自己的注释信息。
第一步
使用git命令进行删除
git rm <文件名>
注意:如果使用的是git命令,则已经在缓冲区中不用进行add添加
注意:如果删除的是文件夹则添加-r
第二步
将删除提交到HEAD区
git commit -m "提交信息"
在window进行编辑修改文件
add 和 commit
git mv [file] [newfile]
查看当前文件的状态,是否在工作区或缓冲区还是已经提交(经常使用)
git status
注意:红色表示在工作区中未被提交的到暂存区
绿色表示在暂存区中未被提交到HEAD区
注意:需要开启彩色的git输出(默认已经打开无需在意)
git log
注意:可以查看历史的版本记录
注意: 如果嫌弃输出的信息杂乱无章,那么加上 --pretty=oneline 参数试试吧!
git reflog
定义:查看命令操作的历史
1、restore 重置
如果你修改了代码,但是并未执行 git add 操作,可直接执行:
git restore . . 表示所有文件,如果想重置个别文件,指定文件路径即可 git restore <文件>...
注意:如果你已经执行了 git add 操作,此时代码已保存至暂存区,需要先取消暂存区变更:
git restore --staged .
或者
git reset . 采用当前的版本仓库对暂存区进行覆盖
然后,再执行 git pull 拉取远程代码同步即可。
2、reset 回退
reset 比较暴力,相当于 可适用于 代码在工作区、暂存区、仓库区等任何场景
git fetch --all git reset --hard origin/master git pull // 这一步为了同步远程代码,不需要的话可不执行
git fetch 指令是下载远程仓库最新内容,不做合并。
git reset 指令把HEAD指向master最新版本。
reset --hard:重置后不保留暂存区和工作区
reset --soft:保留工作区,并把重置 HEAD 所带来的新的差异放进暂存区(此时代码的变更状态相当于执行完 git add命令)
reset --mixed:reset的默认参数,保留工作目录,并重置暂存区(此时代码的变更状态相当于执行 git add命令之前)
或者
获取版本ID
git log --pretty=oneline
回退到指定ID
git reset --hard id
如果需要操作失误,则获取操作ID
git reflog
查找到你要的 操作id,使用上文说的 git reset --hard id。又回退到当初一模一样的版本
3、stash 暂存(推荐)
我比较喜欢的方法,是用stash,暂存代码再同步。
首先,将所有代码添加至暂存区:
git add .
然后,将代码临时保存:
git stash
此时代码会重置到修改前的状态,可以同步远程仓库区,完事儿。
git pull
同步后,如果还想继续修改原来的代码,可将临时代码恢复至工作区:
git stash pop
查看储藏起来的状态
git stash list
可以用来应用储藏的状态。比如 git stash apply 0 就会应用储藏id为0 的中间状态。
git stash apply id
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。
git branch
注意: 新建的分支虽然是默认master,但如果里面没有文件的话是不会被显示的。
注意:查看分支,有星号它代表现在检出的那一个分支
git branch 分支名
注意:新建分支内容为空
注意:master分支是默认创建的,不用重复创建
git branch -m 原分支名 新分支名
git checkout 分支名
注意:不同分支间内容是不互通的,需要切换进行操作
首先到你想要合并到的分支
git checkout master
然后命令你想要被合并的分支
git merge <被合并分支名>
注意:如果合并出现冲突,这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:
git add <文件名>
在合并改动之前,你可以使用如下命令预览差异:
git diff <source_branch> <target_branch>
git branch -d 分支名
注意:删除时需要切换到另外一个分支才能删除本分支
git branch -v
Git 并不像 SVN 那样有个中心服务器。
目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。
git clone 远程仓库的url
git remote add 别名通用为origin 远程仓库url
注意:如果使用过检出仓库,则会默认设置一个origin并且url为你检出仓库的地址
git remote -v
git remote rename 原仓库名 新仓库名
git remote rm 仓库名
将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
注意: 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
注意:pull默认是获取master分支,如果想要获取远程仓库的所有分支则需要(前提需要pull过仓库)
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
注意:如果本地仓库不是通过检出仓库创建,并且其中有自己设置的内容,提示fatal: refusing to merge unrelated histories,则需要
git pull origin master --allow-unrelated-histories
或者
git pull --rebase origin master
git push -u 远程仓库 远程分支名
使用网站操作
第一步
正常建立一个项目
第二步
将这个项目设置为本地仓库
注意:要写注释
注意:如果有报错则跳过即可
打开工作空间,右键,选择 git bash ,在打开的窗口中执行命令:
git config --global credential.helper store
去重新下载,第一次输入帐号密码,之后再下载就不会出现了
git config --global user.name "John Doe" git config --global user.email johndoe@example.com
gitk
git config color.ui true
git config format.pretty oneline
git add -i