Git笔记
1,安装
1,如果存在,先卸载
先反安装,删掉环境变量配置,卸载(直接应用程序卸载即可)
2,安装
下载方式
官网:Git下载对应版本
GitCode 镜像:提供了最新版本的 Git 安装包,适用于 Windows 64 位系统。
Git-2.42.0.2-64-bit.exe
Gitee 镜像:Gitee 提供了 Git for Windows 的镜像,不定期更新最新版本。
Gitee Git for Windows 镜像
直接一直下一步安装即可
3,验证
cmd中输入git --version,显示版本即可
2,相关命令
常用linux命令
cd:改变目录
cd..:回退到上一级目录
pwd:显示当前所在目录路径
ls(ll):列出当前目录中所有文件,ll列出的更为详细
touch:新建一个文件,touch test.text,就会创建一个test文件
rm:删除一个文件 ,rm test.text
rm -r:删除一个文件加,rm -r src 删除src目录
mkdir:新建一个目录(文件夹)
mv:移动文件 ,mv test.txt src test.txt是需要移动的文件,src是目标文件夹
reset:重新初始化终端/清屏
clear:清屏
history:查看历史命令
help:帮助
exit:退出
#:表示注释
常用git命令
# 配置查看git config -l # 查看配置git config --system --list # 查看系统配置,纯系统配置git config --global --list # 查看本地配置
# 添加自己的配置$ git config --global user.name 用户名$ git config --global user.email 邮箱
Git/etc/getconfig:系统配置
自己去配置,会在C盘当前用户目录下有一个.gitconfig文件
# 相关操作# 1,初始化git init # 初始化项目 在当前目录新建一个Git代码库git clone url # 克隆一个远程仓库到本地# 2,提交git add . # 将当前目录所有文件放入暂存区 工作区--暂存区git add file1 file2 # 将文件放入暂存区 工作区--暂存区git commit -m # 提交到本地仓库 暂存区---仓库git push # 推送到远程 仓库--远程# 3,拉取git clone url # 克隆git pull # 拉取# 4,查看状态git status # 查看所有文件状态 ()
# Untracked: 未跟踪, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
# Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
# Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
# Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modifiedgit status fillename # 查看文件状态git log # 显示当前分支的版本历史git log --stat # 显示commit历史,以及每次commit发生改变的文件git log -S [keyword] # 搜索提交历史,可根据关键此git log --fllow [file] # 显示某个文件的版本历史,包括文件改名git diff # 显示暂存区和工作区的差异git diff --cached [file] # 显示暂存区和上一个commit的差异# 5,分支git branch # 列出所有本地分支git branch -r # 列出所有远程分支git branch -a # 列出所有本地和远程分支git branch [branch-name] # 新建一个分支,但依然停留在当前分支git branch -d [branch-name] # 删除分支git checkout -b [branch] # 新建一个分支,并切换到该分支git checkout [branch-name] # 切换到指定分支,并更新工作区git checkout - # 切换到上一个分支git merge [branch] # 合并指定分支到当前分支# 6,远程同步git fetch [remote] # 下载远程仓库所有变红git remote -v # 显示所有远程仓库# 7,撤销git checkout # 回复暂存区的制定文件到工作区
3,Git理论******
工作流程
1,再工作目录中添加,修改文件 xxx.java
2,将需要进行版本管理的文件放入暂存区域 git add file
3,将暂存区域的文件提交到git仓库 git commit
4,推送到远程 git push
因此,git管理文件就有三种状态:已修改(modified),已暂存(staged),已提交(committed)
工作区
workspace:工作区,就是平时存放代码的地方
index/stage:暂存区,用于临时存放你的改动,事实上他只是一个文件,保存即将提交到文件列表信息
repository:仓库区(本地仓库),就是安全存放数据的位置,这里有你提到的所有版本的数据,其中HEAD指向最新放入仓库的版本
remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
4,忽略文件
忽略一些临时文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
-
忽略文件中的空行或以#开始的行将会被忽略。
-
可以使用Linux通配符。例如:*代表任意多个字符,?代表一个字符,方括号[abc]代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
-
如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
-
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
-
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
#为注释 *.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中! !lib.txt #但lib.txt除外 /temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp build/ #忽略build/目录下的所有文件 doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt