Git与Svn
git 分布式版本控制系统
没有中央服务器,每个人电脑就是一个完整的版本库,工作的时候不需要联网,因为版本都在自己的电脑上.协同方法是:比如自己的电脑上修改了文件a,其他人在电脑上也修改了a,这时,你们两个之间的只需要把各自的修改推送给对方,就可以互相看到对方的修改.git可以直接看到更新的代码和文件.
svn集中式版本控制系统
版本库放在中央服务器,工作时用自己的电脑,从中央服务器得到最新版本,然后工作,完成工作后,需要把做完的工作推送到中央服务器.集中版本控制系统是必须联网才能工作,对网络带宽要求较高.
下载:
https://git-scm.com
淘宝镜像下载地址
https://npm.tabbao.org/mittors/git-for-windows/
卸载:
删除环境变量git 控制面板卸载
安装:
下一步下一步
安装完毕可以使用
GitBash 风格和linux相似
GItCMD Windows风格命令行
Git GUI 图形化界面的Git不建议
Linux常用命令:
cd 改变目录 cd a/b/c
cd .. 返回上级目录
pwd 显示当前所在的路径
ls(ll) 列出当前文件夹下的文件 ll是详细列出
touch 新建一个文件
rm 删除文件
mkdir 创建目录
rm -r 删除一个文件夹
mv 移动文件 mv a.txt src a.txt src是目标文件夹 这样子写需要在同一个文件夹下
reset 重新初始化终端/清屏
clear 清屏
history 查看命令历史
help 帮助
exit 退出
#注释
Git配置
git config -l
git config --system --list 系统配置
git config --global --list 用户自己的配置
user.name
user.email
相关配置文件:
Git\etc\gitconfig :Git安装目录下的gitconfig --system系统级别
C:\Users\用户名\.gitconfig global配置级别
git config --global user.name = "***" gitHub的用户名
git config --global user.email = "***" gitHub设置的邮箱
基本理论
工作目录(Working Directory) 暂存区(State) 资源库/本地库(History) 远程仓库(Remote Directory)
Remote->(git pull 拉取)->HIstory->(git reset)->Stage(Index)->(git checkout)->Working Directory
Working Directory->(git add files)->State(Index)->(git commit)->Repository(History)->(git push)->Remote Directory
命令
a.txt ->(git add a.txt/add .) ->(git committed) = a.txt ->(commit -a)
文件三种状态:已修改(modify),已暂存(staged),已提交(committed)->push
Git项目搭建
本地:
1.git init
克隆:
clone
git clone [url] https://git.....***
Git文件操作
4种状态
Untracked ->git add ->Staged
Unmodify ->git rm 移除库 ->Untracked
Modified 文件已修改,仅仅修改->git checkout 丢弃修改返回UNmodify状态 git checked 从库中取出文件,覆盖当前修改
Staged git commit ->同步到库中 此时库中的文件和本地的文件变得一致 文件为 Unmodify状态 执行git reset HEAD filename 取消暂存,状态变为Modifid
查看文件状态:
git status filename
git status
"git rm --cached <file>..." to unstage
git commit -m "first commit"
结果:
[master (root-commit) 8dba8f0] first commit hello.txt
忽略文件:
.gitignore
#为注释
*.txt #忽略所有 .txt结尾的文件
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其他目录temp
build/ #仅仅忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括doc/server/arch.txt
*.class
*.log
*.lock
HELP.md
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
#Package Files#
*.jar
*.war
*.ear
target/
*velocity.log*
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
.settings/
.classpath
bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
### VS Code ###
.vscode/
*.log
tmp/
#rebel
*rebel.xml*
使用码云
C:\user\名字\.ssh目录
生成公钥
ssh-keygen -t rsa
Git 分支
git branch 查看分支
git branch -r 查看远程分支
新建分支
git branch dev 新建一个名为dev的分支(当前分支还是master)
git checkout -b [branch] 新建一个分支并切换到该分支
git merge [branch] 将指定分支合并到当前分支
git branch -d [branch-name] 删除分支
gitpush origin --delete [bransh-name] 删除远程分支
git branch -dr [remote/branch]
git checkout [branch] 切换分支,并更新工作区
git checkout - 切换到上一个分支