配置git
本地创建 ssh key: ssh keygen -t rsa -c “email” // email:github上注册用的邮箱
把上面生成的 key 粘贴到 gitHUb中的 sshkey中
验证 是否成功 ssh -T git@github.com
如果是第一次的会 提示 是否continue ,输入 yes 就会看到
You’ve successfully authenticated ,but github does not provide shell access
表示已成功连接上GitHub,
git 选项解释,
-d
–delete 删除
-D
–delete --force的快捷键
-f
–force 强制
-m
–move :移动或重命名
-r
–remote 远程
-a
– all 所有
git init
git init :当前目录作为git 仓库
git init path: 指定目录作为git仓库,建议【path】:使用绝对路径,否则在安装git软件的路径下的相对路径。
##git add
目的将修改文件由工作区提交到暂存区(stage) 从未缓存——>已缓存
git add 添加多个文件,文件之间用空格隔开
git add file1 file2 file3
###多次git add
git add file1
git add file2
git add file3
###添加指定目录下的文件
git source/* source目录下及子目录下所有文件
git home/*.py home 目录下所有 .py 文件
git add . 添加所有文件
git add --all 添加所有文件
git add 文件夹
git add 文件夹名
- fetch:远程主机最新内容拉到本地,用户在检查了以后决定是否合并到工作区分支中
- pull:远程主机最新内容拉下来后直接合并。即pull=fetch+merge,就这样可能会产生conflict(冲突),需要手动解决。
git Clone
git clone 克隆仓库
git clone 克隆到指定的目录。
git add
git add [file1][file2]… 添加一个或多文件到stage
git add [dir] 添加和指定目录到暂存区,包括子目录
git add • 添加当前目前下所有文件到stage
git statue 命令用于查看在你上次提交之后是否有对文件进行再次修改。
git statue 显示上次提交更新后的更改或写入stage的改动,查看仓库当前的状态,显示有变更的文件
git status -s 获取简短的输出结果
git status -s
AM xxxx //AM :表示这个文件在我们添加到缓存之后又有改动
A xxx
Git Diff
比较文件在暂存区(stage)和工作区的差异
1、显示暂存区和工作区的差异
git diff [File]
2、显示暂存区和上一次提交(commit)的差异
git diff --cached 【File】
或
git diff --stage 【file】
3、显示两次提交之间的差异
git diff 【first-branch】…[second -branch]
GIt Commit
将暂存区内容添加到本地仓库中【local repository】
①提交stage 内容到本地仓库中
git commit -m [message]
②提交stage指定文件内容到本地仓库
git commit 【file1】【file2】…-m 【message】
③ -a 修改文件后 不需要执行git add 直接提交
git commit -a
git reset 回退版本
①git revert -n 版本号 //可能出现conflict 需要手动修改冲突文件,而且要使git add 文件名
② git commit -m “message” // 可以理解把上一个版本提交,再次提交。
此时可用git log 查看本地版本库信息,可见多生成一个新的版本
③ git push origin master // 推上远程库
④ git reset 的作用是修改HEAD 的位置,即将head指向的位置改变未之前存在的某个版本
HEAD:相当于指针,指向当前分支的,它总是指向当前分支上的最后一次提交
git reset 操作过程
① git log 查看提供记录的版本号
②git reset -hard 版本号 // 回退到指定版本
③git push -f origin master // 此时如果用“git push” 会报错,因为我们本地库的head,指向的版本库比远程库的要旧。所以要强制 -f force
git rm //用于删除文件
- 将文件从暂存区和工作区中删除
git rm 【file】
2、如果删除之前修改过并且已经放到stage区的话,则必须要用强制删除, -f
git rm -f 【file】
3、如果想把文件从暂存区移除,但仍然希望保留在当前工作目录中
git rm – cached 【file】
git mv 移动或重命名工作区文件
git mv 用于移动或重命名一个文件、目录、软连接
git mv 【file】【new file】
git log 查看历史提交记录
1、git log 查看历史提交记录
2、git blame 【file】 以列表形式查看指定文件的历史修改记录
git log --online 查看历史记录简洁的版本
git log --graph 查看历史中什么时候出现了分支、合并
git log --reverse 逆向显示所有日志
git log --author xxx 查看指定用户提交日志。
指定日期, --since --before --under --after
git log --online --before={3.weeks.ago} --after={2021-04-13}
git remote 远程仓库操作
1、git remote -v 显示所有远程仓库
git remote -v
origin xxxxx //为远程地址的别名
origin xxxx
2、显示某个远程仓库的信息
git remote show 【remote】 //remote :远程地址
3、添加到远程版本号
git remote add 【shortname 远程仓库在本地的别名】[url]
git remote rm name //删除远程仓库 本地删除远程的管理
git remote rename old_name new_name //修改仓库名
git fetch //从远程获取代码库
将某个远程主机的更新全部取回到本地
git fetch <远程主机>
取回特定的分支
git fetch <远程主机> <分支名>
取出origin 主机的master 分支
git fecth origin master
取回更新后,会返回一个FETCH_HEAD 指某个branch 在服务器上最新状态,我们可以在本地通过它查看刚取出更新信息
git log -p FETCH-HEAD
git pull 下载远程代码并合并本地的版本
git pull <远程主机名><远程分支名>:<本地分支名>
将远程主机origin的master 分支拉取过来,与本地的branchtest分支合并
git pull origin master :branchtest
如果远程分支与当前分支合并,则冒号后面的部分可以省略
git pull origin master
git push 上传远程代码并合并
将本地的分支版本上传到远程并合并
git push <远程主机名><本地分支名>:<远程分支名>
如果远程与本地分支名相同,可以省略冒号
git push <远程主机名><本地分支名>
如果本地版本号与远程版本号有差异,但又要强制推送可以用 --force 参数
git push --force origin master
git push origin --delete master //删除origin主机的master分支 origin:表示远程地址
解决本地与远程的冲突方式
1、git push -f origin master
或
git push origin master -f
本地强制上传到远程,把远程覆盖
2、git pull --rebase origin master
拉取远程的文件把本地的覆盖,再上传。
如果远程分支与当前分支合并,则冒号后面的部分可以省略
git pull origin master
git push 上传远程代码并合并
将本地的分支版本上传到远程并合并
git push <远程主机名> <本地分支名>:<远程分支名>
如果远程与本地分支名相同,可以省略冒号
git push <远程主机名><本地分支名>
如果本地版本与远程版本有差异,但又要强制推送可以 使用–force参数
git push --force origin master
git push origin --delete master //删除origin 主机的master分支
git tag -a V1.0
git tag 显示查看所有标签
如果忘记给每个提交打标签,又将它发布了,可以追加 标签
假如 发布提交了85fc7e7,但忘记给它打标签了
git tag -a V0.9 85fc7e7
指定标签信息命令:git tag -a -m “xxxxx”