一.新建代码库
1. 在当前目录新建一个Git代码库
git init
2. 新建一个目录,将其初始化为Git代码库
git init 目录名
3. 把代码克隆到本地
git clone 远程仓库地址
二.Git配置
1. 配置项
查:git config --list
增:git config --global --add user.name '名字'
删:git config --global --unset user.name
改:git config --global user.name '名字'
2. 全局配置用户名和邮箱
git config --global user.name '用户名 '
git config --global user.emali '邮箱'
三.增加/删除文件
1. 添加当前目录的所有文件到暂存区
git add . 提交所有 修改、新建的数据暂存区
git add -A 提交所有 被删除、被替换、被修改、新增的文件到数据暂存区
git add -u 提交所有 被删除、修改的文件到数据暂存区
2. 添加指定文件到暂存区
git add 文件名
3. 对于同一个文件的多处变化,可以实现分次提交
git add -p
4. 删除工作区文件,并且将这次删除放入暂存区
git rm 文件名
5. 停止追踪指定文件,但该文件会保留在工作区
git rm --cached 文件名
6. 改名文件,并且将这个改名放入暂存区
git vm 源文件名 修改的文件名
四.代码提交
1. 将暂存区内容提交到仓库区
git commit -m '本次提交说明'
2. 提交暂存区的指定文件到仓库区
git commit 文件夹 --m '本次提交说明'
3. 提交工作区自上次commit之后的变化,直接到仓库区
git commit -a
4. 提交时显示所有diff信息 (不理解***)
git commit -v
5. 如果代码没有任何新变化,则用来改写上一次commit的提交信息 (不理解***)
git commit --amend -m '提交说明'
6. 重做上一次commit,并包括指定文件的新变化 (不理解***)
git commit --amend 文件名
7.拉取远程分支的最新代码
git pull
五.分支
1. 列出所有本地分支【git branch】
2. 列出所有远程分支【git branch -r】
3. 列出所有本地分支和远程分支【git branch -a】
4. 拉取远程分支【git checkout -b 分支名】
5. 新建一个分支,但依然停留在当前分支【git branch 分支名】
6. 新建一个分支,并切换到该分支【git branch -b 分支名】
7. 切换到上一个分支【git checkout -】
8. 切换分支【git checkout 分支名】
9. 删除本地分支【git branch -d 分支名】&【git branch -D 分支名 【强制删除】】
10. 删除远程分支【git push --origin -delete 分支名】
11. 将某分支的某次提交合并到另一分支【git cherry-pick 每次提交的commitId】
12. 合并指定分支到当前分支 【git merge 指定分支名】
13. 用于取消正在进行的合并操作,并尝试恢复到合并操作开始前的状态。在合并过程中遇到冲突,可用此命令来取消合并【git merge --abort】
六.标签 (不懂***)
1.列出所有tag
git tag
2.新建一个tag在当前commit
git tag [tag]
3.新建一个tag在指定commit
git tag [tag] [commit]
4.删除本地tag
git tag -d [tag]
5.删除远程tag
git push origin :refs/tags/[tagName]
6.查看tag信息
git show [tag]
7.提交指定tag
git push [remote] [tag]
8.提交所有tag
git push [remote] --tags
9.新建一个分支,指向某个tag
git checkout -b [branch] [tag]
七.其他
场景:修复其他分支的bug时,当前修改的分支不想提交,可以使用下面命令
1.将所有未提交的修改保存至堆栈中,用于后续恢复当前工作目录【git stash】
2.查看当前stash暂存区中的内容【git stash list】
3.将当前stash中的内容弹出,并应用到当前分支对应的工作目录上【git stash pop】
**注:该命令将堆栈中最近保存的内容删除(栈是先进后出)**
4.可以指定哪个stash恢复到当前的工作目录【git stash apply stash@{1}】
5.清除stash堆栈中的所有内容【git stash clear】
6.查看堆栈中最新保存的stash和当前目录的差异【git stash show】
场景:提交commit后发现提交文件多了,需要撤回当前commit提交。
重置(reset)
1.git reset --mixed HEAD^ 不删除工作空间改动代码,撤销commit,并且撤销git add .
git reset --soft HEAD^ 不删除工作空间改动代码,撤销commit,不撤销git add .
git reset --hard HEAD^ 删除工作空间改动代码,撤销commit,撤销git add . 慎用 慎用 慎用
HEAD^的意思是上一个版本,也可以写成HEAD~1 写几次代表撤回几次
2.强制推送到远程仓库。 使用 git push --force 将本地更改强制推送到远程。这一步操作比较危险,因为它会覆盖远程仓库的历史,所以在团队项目中要慎用。
恢复(revert)
1.git log 拿到commitId
2.git revert commitId 这会创建一个新的提交,就是你 commitId更改的内容
3.如果Git提示有冲突,需要手动解决这些冲突。改完后提交就可以了
场景:当提交内容提交分支错误要怎么办
1.git cherry-pick commitId 找到提交错误的commitId,切换到要提交的分支,执行命令。就可以了。
2.git cherry-pick commitId commitId 可以提交多个
3.git cherry-pick commitIdA..commitIdB 可以一次性提交两个id直接的所有内容,不包括commitIdA
4.git cherry-pick commitIdA^..commitIdB 可以一次性提交两个id直接的所有内容,包括commitIdA
5.git cherry-pick -n commitId 如果不想自动提交,可以用 -n