git常用命令

基础使用

python操作git

一、基础使用

1、基本概念:

工作区: 当前的编辑位置

缓存区: add 之后的区域

版本库:commit之后的区域就是版本库

github:远程仓库

2、基础命令

初始化:

git init .

提交数据:

查:
git status  查看当前提交的状态
改:
git add . 将工作区的所有文件添加到缓存区
git commit -m “提交信息”  将缓存区的内容添加到版本库

复原数据:

查:
git log 查看当前位置之前的提交记录信息,参数git log -p -num --pretty=“format:%h %an %ae %s"
git reflog  查看所有的记录
改:
git  checkout 文件名 将文件回滚到最近一次提交的样子
git reset HEAD 文件名 将缓存区的文件退回到工作区
git  reset --hard 记录idhash值  回退到指定的版本

对比数据差异:

git diff 对比工作区和缓存区
git diff --cached 对比版本库和缓存区
3、github 远程仓库与git交互
git remote add origin https://url.git#为创建的远程仓库创建别名
git push origin master将本地分支master提交到远程仓库
git clone https://url.git 克隆远程仓库到本地(本地没有时)
git checkout -b dev origin/dev 同步远程仓库dev分支到本地
git branch dev origin/dev+git checkout dev 两者结合与上边命令相同
git pull将远程仓库文件拉取到本地

4、标签(对应远程仓库-github的release)

git tag查看tag
git tag -a v1.0 -m "v1.0" 其中v1.0为版本号
git reflog+git tag -a v1.0 记录hash值
git push origin --tags上传到远程创建release
git tag -d tagname 删除名字为tagname的tag
git push origin :refs/tags/v1.0#github上删除realese:先删除本地git tag -d 本地名,再提交git push origin:refs/tags/v0.1
5、本地创建一个仓库的方法
git init .
git clone 远程仓库地址

6、stash快照

git stash  创建快照并回到最后一次提交的位置 
git stash list 查看当前的所有快照
git stash pop 取出快照回到快照位置并删除快照
git stash drop stash@{0}删除快照
git stash apply stash@{0}取出快照位置但不删除快照,pop=apply+drop

7、忽略文件

.gitignore

vi .gitignore

写入需忽略的文件12:37

然后add、commit、push.gitignore

git提供的gitignore:

.gitignore忽略规则的匹配语法
在 .gitignore 文件中,每一行的忽略规则的语法如下:
1)空格不匹配任意文件,可作为分隔符,可用反斜杠转义
2)以“#”开头的行都会被 Git 忽略。即#开头的文件标识注释,可以使用反斜杠进行转义。
3)可以使用标准的glob模式匹配。所谓的glob模式是指shell所使用的简化了的正则表达式。
4)以斜杠"/"开头表示目录;"/"结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;"/"开始的模式匹配项目跟目录;如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录。
5)以星号"*"通配多个字符,即匹配多个任意字符;使用两个星号"" 表示匹配任意中间目录,比如`a//z`可以匹配 a/z, a/b/z 或 a/b/c/z等。
6)以问号"?"通配单个字符,即匹配一个任意字符;
7)以方括号"[]"包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符。比如[abc]表示要么匹配一个a,要么匹配一个b,要么匹配一个c;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。比如[0-9]表示匹配所有0到9的数字,[a-z]表示匹配任意的小写字母)。
8)以叹号"!"表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。需要特别注意的是:如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用"!"规则是不起作用的。也就是说"!"开头的模式表示否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用"!"也不会再次被包含。可以使用反斜杠进行转义。
​
需要谨记:git对于.ignore配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;

https://help.github.com/en/articles/connecting-to-github-with-ssh

二、python操作git

from git import Repo
repo=Repo("项目路径")
repo.avtive_branch
#git add
repo.index.add(["c.py"])
repo.index.commit("信息")
#git tag -a
repo.create tag("v0.1")
#git branch
repo .create_head("dev")
#git checkout --filename #回到上次的记录位置
repo.index.checkout()???
#git reset --hard 记录的hash值
repo.index.reset(commit=记录的hash值,head=True)
[str(b) for b in repo.branches]#显示所有的branch名称
[str(b) for b in repo.tags]#显示所有的tags名称
import git
clone=git.Repo.clone_from("url""to_path")
#git push and pull
clone.remote().pull()
clone.remote().push()
执行原生(git bash的)git语句

repo=git.Git(项目路径)
#git add d.py
repo.add("d.py")
#git commit -m "create d.py"
repo.commit("-m create d.py")

 

posted @ 2019-06-02 21:51  海予心  阅读(161)  评论(0编辑  收藏  举报