@FE40536
2020-05-24T13:01:40.000000Z
字数 3972
阅读 962
Git
sudo apt install git#安装完输入git config --global user.name "用户名"git config --global user.email "邮箱地址"
#新建一个repository文件夹,我取名gitmkdir gitcd git#创建仓库git init
#先写一个README.txt,里面写点东西vim README.txtGit 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.txtgit 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 mastergit push origin master
#使用命令git clonegit clone https://github.com/DinoWhite/hello-world
#新建分支devgit 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记录,达到保存信息的目的#新建分支devgit checkout -b dev#修改文件并提交git add README.mdgit commit -m "balablala"#返回mastergit checkout master#合并分支dev,加上--no-ff参数,表示禁用Fast Forwardgit 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.pygit commit -m "new function"#回到dev,准备合并feature-vulcangit 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 devgit pull
#将提交历史整理成直线git rebase
#切换到要打标签的分支git branchgit 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.dbehthumbs.dbDesktop.ini# Python:*.py[cod]*.so*.egg*.egg-infodistbuild# My configurations:db.inideploy_key_rsa
git add -f 文件名
git check-ignore -v 文件名
#将status命令自定义为stgit config --global alias.st statusgit config --global alias.co checkoutgit config --global alias.ci commitgit config --global alias.br branch#对于撤销unstagegit config --global alias.unstage 'reset HEAD'#以后敲入git unstage test.py#等价于git reset HEAD test.py#配置last让其显示最后一次提交信息git config --global alias.last 'log -l'