@FE40536
2020-05-24T21:01:40.000000Z
字数 3972
阅读 830
Git
sudo apt install git
#安装完输入
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
#新建一个repository文件夹,我取名git
mkdir git
cd git
#创建仓库
git init
#先写一个README.txt,里面写点东西
vim README.txt
Git is a version control system.
Git is free software.
git add README.txt
#可以同时添加多个文件
git commit -m "提交说明"
#再重复以上修改文件和提交文件操作几次,可以得到一些历史版本,用git log来查看历史版本
git log
#或者用
git log --pretty=oneline
#HEAD指向当前版本,加上^表示上一次版本,回到上一版本用命令
git reset --hard HEAD^
#回到上上版本
git reset --hard HEAD^^
#或者用SHA1来切换版本
git reset --hard 这里写SHA1号码
#获得SHA1编号
git reflog
#当修改或新建文件后,git会记录状态,用如下命令查看
git status
#用如下命令查看工作区文件与版本库里文件的差异
git diff HEAD -- 文件名
#用git checkout -- 文件名可以撤销工作区内的修改,让它回到最近一次add或commit时的状态
git checkout -- 文件名
#用rm来删除工作区的文件,可以用git status看到变化
rm test.txt
#情况一:要删除版本库里面的test.txt用
git rm test.txt
git commit -m "消息"
#情况二:要恢复rm的文件,用
git checkout -- test.txt
#先在GitHub上面创建一个仓库
#然后在本地仓库内运行
git remote add origin https://github.com:这里填你打开仓库界面后网址最后两段内容加上.git
#如https://github.com/DinoWhite/git,那么就填DinoWhite/git.git
#提交给远程仓库命令
git push -u origin master
git push origin master
#使用命令git clone
git clone https://github.com/DinoWhite/hello-world
#新建分支dev
git checkout -b dev
git branch
#切换到master分支
git checkout master
#将dev分支和master合并
git merge dev
#删除dev分支
git branch -d dev
#当分支和master都进行了修改和提交后再合并会产生冲突,遇事要解决冲突,它会帮我们列出冲突,修改后提交了就自动合并了合并后用
git log --graph --pretty=oneline --abbrev-commit
来查看合并图像
最后可以删除分支了
#通常删除分支会丢失分支信息,但是可以通过一定方法将删除的分支转化为一次commit记录,达到保存信息的目的
#新建分支dev
git checkout -b dev
#修改文件并提交
git add README.md
git commit -m "balablala"
#返回master
git checkout master
#合并分支dev,加上--no-ff参数,表示禁用Fast Forward
git merge --no-ff -m "merge with no-ff" dev
#用git stash将档期内工作场地隐藏起来,以后可重新恢复
git stach
#然后切换到新的分支去修改bug,提交,回到原来的分支,合并
git merge --no-ff issue-101
#然后可以切换到dev里面去继续工作了,用如下命令查看贮藏的工作现场
git stash list
#有两种恢复方式
#1.apply,回复后不会把stash list中的内容删除
git stash apply
#2.pop,回复后会把stash list中的内容删除
git stash pop
#可以指定恢复哪一个工作现场
git stash apply stash@{0}
#当代吗要提那家新功能时,新建一个feature分支,在上面开发,防止影响全局
git checkout -b feature-vulcan
#开发完毕提交代码
git add vulcan.py
git commit -m "new function"
#回到dev,准备合并feature-vulcan
git checkout dev
#此时还没合并,但是这时要取消新功能的话,这时直接用git branch -d feature-vulcan删除会背Git提示将丢失修改,此时用-D强制删除
git branch -D feature-vulcan
#查看远程库信息
git remote
#现实更详细信息
git remote -v
#推送就是提交到远程库上面,这是要指定本地分支
git push origin master
#要推送其他分支就用其他分支名字
git push origin dev
#当clone了一个repository时,只能看到本地的master分支
git branch
#要想在dev分支上开发,创建origin的dev分支到本地
git checkout -b dev origin/dev
#这样就可以在dev上修改了
#此时若库主人和另一个在dev上开发的人都在推送时,会产生冲突,解决方法
#先用git pull把最新提交从origin/dev上抓下来,然后在本地合并,再推送
git pull
#如果git pull失败了,请根据提示设置dev和origin/dev的链接
git branch --set-upstream-to=origin/dev dev
git pull
#将提交历史整理成直线
git rebase
#切换到要打标签的分支
git branch
git checkout dev
#如下命令打标签
git tag v1.0
#查看标签
git tag
#可以给历史commit补打标签
git tag v0.9 标签的SHA1值
#标签不是按时间列出的,而是按字母列出的,用如下命令查看标签信息
git show v0.1
#创建带有说明的标签-a指定标签名,-m指定说明文字
git tag -a v1.0 -m "version 1.0 released" SHA1值
#删除打错的标签
git tag -d v1.0
#推送标签到远处
git push origin v1.0
#或者一次性推送全部尚未推送到远处的标签
git push origin --tags
#若远程已经有标签,要删除远程标签,先删除本地标签
git tag -d v1.0
#再删除远程的
git push origin :refs/tags/v1.0
在工作区根目录下创建.gitignore文件(需要提交到git),在此输入需要忽略的文件名
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
- 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
#.gitignore示例
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
# My configurations:
db.ini
deploy_key_rsa
git add -f 文件名
git check-ignore -v 文件名
#将status命令自定义为st
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
#对于撤销unstage
git config --global alias.unstage 'reset HEAD'
#以后敲入
git unstage test.py
#等价于
git reset HEAD test.py
#配置last让其显示最后一次提交信息
git config --global alias.last 'log -l'