Git 命令
clone
下载仓库内容
# 下载远程仓库的内容,并且在本地创建一个和远程仓库名同名的文件夹
# 下载的时候, 路径在哪, 就直接下载到那个地方
git clone https://gitee.com/snow/code100th.git
# 下载到指定的文件夹中(完全不建议)
git clone https://gitee.com/snow/code100th.git dirName
注意: 如果是私有仓库,会在clone的时候要求输入账号密码(此账号密码为你的git远程仓库上的账号密码) (下图以Linux为例,要求在命令行输入账号密码)(而在Windows中账号密码会出现弹框提示你输入)
注意: 正常来讲, git工具会自动记住账号和密码, 下次使用就不需要输入了(和远程仓库交互的时候), 如果密码输错, 则可能需要修改系统的记录凭证(windows中比较方便的操作). 或者清空缓存重置账号密码(Linux删除家目录下的 .git-credentials 文件). 建议还是不要输错了
注意: (如果老是每次都和中央仓库交互都需要输入账号密码: windows: git config --global credential.helper manager ) (Linux: git config --global credential.helper store)
(或者各个系统的通用配置在用户名路径下的.gitconfig中 配置 : [credential] helper = store)
status
status状态命令:
这个命令可以帮助我们查看工作区
和缓冲区
和本地仓库
中的变化。
add
add: 这个命令可以帮助我们把工作区中的变化提交到缓冲区。
# 所有文件: 把所有文件的变化都从工作空间提交到缓冲区
git add .
# 文件的名字: 把指定的文件名文件在工作空间发生的变化提交到缓冲区
git add fileName
# 文件的类型: *通配符
git add *.java // 把所有以.java结尾的文件的变化, 从工作空间提交到缓冲区
commit
commit命令: 帮助把缓冲区变化内容提交到本地仓库。
# 提交
git commit -m "备注/注释"
## msg:msg信息一般要有统一的格式和意义(参照公司怎么写), 反正不建议乱写和简写(一定要注意)
## 例如:Auther:ciggar Date:20220528 msg:xxx
注意
- 这一步会产生一个文件的版本号
- 如果是第一次commit,需要设置用户名和邮件地址(建议设置真实的)
- 只会把缓冲区中的变化提交到本地仓库,不会把工作区中的变化提交到本地仓库
- commit的时候需要指定提交的信息, 也就是注释(要重视注释的书写)
设置方式一: 直接文件设置
去用户目录下(无论是Linux还是Windows都在家目录下),设置 .gitconfig文件,假如没有这个文件,就创建一个
[user]
email = 1111@qq.com
name = snow
[credential]
helper = store
设置方式二: 命令设置
git config --global user.email 222@qq.com
git config --global user.name xxx
设置完之后,就可以提交了,会产生一个版本信息
push
在合作开发中, 多个用户基于远程仓库的代码合并本质上是一种Y型分支的问题。pull 是 fetch 和 merge 的组合。
push命令: 可把本地仓库中的版本变化推送到远程仓库。
// 把本地"当前所在的分支"的"版本变化"推送到"跟踪/关联"的"远程分支"上 (但是易受git的设置的影响改变推送规则)
git push
// 把本地"当前所在的分支"的"版本变化"推送到"显示指明"的"远程分支"上 (不意味着可以乱推送)
git push origin 分支名
// 值得注意的是: 如果远程分支创建了一个名为a的分支, 本地自己也创建了一个a的分支, 当本地处于a分支上时, 无论使用git push还是 git push origin a 都可以让本地分支a自动和远程的a分支建立追踪/关联关系(根据分支名字相同的原因)(版本也要存在匹配: 即本地为下游版本, 远端为上游版本, 否则要是存在冲突(比如虽然同时a分支, 但是之前没有关联, 并且非线性的上下游版本)要先建立关联:pull origin a 并且merge(有可能需要手动merge) ), 并且可以直接把本地的a的版本内容推送到远程分支上
// 如果本地创建了一个分支, 而远程不具有这个分支, 也可以通过命令的方式把它推送到远程上, 让远程多一个新分支
// 提交分支: 在创建分支后第一次push的时候需要建立本地分支和远程分支之间的联系
git push --set-upstream origin 分支名
// 因为本地分支的删除, 并不会影响到远程的关联分支删除, 所以要删除远程分支, 除了远程仓库直接删除, 也可以在本地通过命令删除
// 可以通过命令删除远程分支
git push origin --delete 分支名
注意1:
// 这一步在第一次操作的时候,需要去填写对应用户名和密码 (如果在clone私有仓库则在clone已经填过了, 或者之前某些时候使用过git已经填过账号密码, 则忽略这个问题)
注意2:
// push的时候,能不能指定只对某个文件去push呢? 不能, 因为push是以版本为单位的
注意3:
// 只有当本地仓库中的版本领先于远程仓库的时候,才可以push
pull
pull命令: 拉取远程仓库中的所有的版本变化到本地。
// 获取远程仓库的更改(这个命令的本质: 是将远程分支的最新状态下载到本地仓库, 作为本地对远程版本的信息追踪记录)
git fetch origin 分支名
(git fetch origin 分支名:分支名 -> 从远程仓库中获取指定分支的最新内容到本地仓库对应的分支,不存在分支则创建 )
// 把fetch下来的远程分支版本, 合并到当前版本中(要以分支命名和版本做匹配/关联分支, 不要乱merge) (注意斜杠, 不是空格)
git merge origin/分支名
// 把远端的关联的分支fetch下来,并且merge到当前所在分支上
git pull origin 分支名
// 如果之前已经建立关联分支, 等价于(git pull origin 分支名)
git pull
注意
- 当本地仓库中的版本落后于远程仓库的时候,就要pull
- 落后就要pull (工作中一定要注意)
log
log命令: 查看仓库中的所有的版本信息
// 列出版本的详细信息
git log
// 列出压缩格式的所有分支的提交树 (--oneline: 每个版本压缩成一行)(--all:所有分支)(--graph:以分支树的形式展示)
git log --oneline --all --graph
// 如果出现历史记录过长: Q回车退出