Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目;
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。
0、首先在电脑上安装好Git;
关于区域描述,git管理的目录叫工作区(.git文件夹除外),add 文件后的叫暂存区,提交后是分支(版本库);
常用命令
1、配置用户名和邮箱,打开Git Bash
- git config --global user.name "username"
- git config --global user.email "email"
- 使用git config --list查看已设用户配置
2、创建版本库
先在电脑合适的地方创建一个空目录,
打开Git Bash,输入cd '目录路径',
输入 git init (init表示管理这个目录);
3、添加文件
创建一个文件放在git管理的目录下,
git add 文件名 (该操作把文件添加到了暂存区),
git commit -m "提交描述" (该操作把文件添加到了分支),
使用git log --pretty=oneline命令可以看到每次提交的记录(commit的ID和描述),
git reflog命令记录你的每一次命令,里面有commit ID,方便回退;
4、文件比对:
git diff 是工作区和暂存区的对比
git diff -- cached 是暂存区和分支的对比
git diff HEAD -- readme.txt 工作区和分支的对比
5、版本回退
(1) 对于已提交的版本(commit): git reset --hard 要回退到的commit id (版本号不用写全,写前几位就行了);
(2)命令git checkout -- 文件名
意思就是,把该文件在工作区的修改全部撤销,这里有两种情况:
一种是该文件
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是该文件
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
(3)对于已add到暂存区但未提交的,可以撤销修改,放回工作区:git reset HEAD 文件名 (HEAD表示最新版本);
(4)可以使用 git status查看当前暂存区的状态;
6、文件删除
可以先手动在目录(工作区)删除文件,或者用 rm 文件名 删除文件;
然后可以用git status看到哪些文件被删了,此时工作区和版本库就不一致了,此时可以:
(1)用git rm 文件名 把版本库的也删掉;
(2)是误删手动误删时,可以用git checkout -- 文件名 命令来恢复(git checkout是把版本库的版本替换工作区的版本,回退删除或修改);
(3)git rm - m "文件夹"
7、分支管理
(1)创建和合并分支
创建一个分支,可以先在分支上修改内容,再选择合并到主分支或者撤销修改;
可以在分支上修改文件,并add和commit后,再切换回主分支,分支合并,再删除不用了的分支;
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
强行删除:git branch -D <name>
(2)分支历史
若使用git merger 分支名合并分支,再删除分支后,会丢掉分支信息,可以使用git merge --no-ff -m "提交描述" 分支名
命令来合并,合并后有历史分支,可以使用git log 查询;
(3)暂存当前分支
使用 git stash 把当前分支‘储藏’起来,干完其它事情再回来接着用分支;
通过git stash list 查看储藏的分支,用 git stash apply stash@{分支序号} 恢复;
8、分支合并冲突
若两个分支所修改的文件合并后有所冲突,可以用 git status 看到冲突,手动去文件里解决修改冲突,再add,commit;
用 git log --graph --pretty=oneline --abbrev-commit
命令可以看到分支合并图。
使用远程仓库Github
1、配置
(1)首先应去github官网注册一个账号;
(2)添加SSH:登陆Github - 打开Account settings - 打开SSH Keys页面,根据需要填写title,在文本框粘贴来自C:Users管理员名.sshid_rsa.pub文件的内容,点击Add Key;
2、添加远程库(本地已有git仓库,又想在GitHub上创建一个仓库,并把两个库关联起来)
(1)本地仓库建好后,在GitHub上创建一个仓库(在头像旁边点添加新库-填入仓库名-点创建);
(2)在本地Git Bash输入git remote add origin git@github.com:github用户名/新建仓库名.git
origin就是远程库名(当然也可以写为其它),可以使用git remote -v显示远程库信息
(3)把本地库指定分支全部推送到远程库对应分支:git push -u origin master (master是主分支;-u 表示把指定远程master关联起来);
3、从远程仓库克隆(远程库已建好了,本地没有)
(1) 使用git clone git@github.com:github用户名/远程仓库名.git 命令,克隆完后可以在当前目录下看到克隆下来的仓库
(2) 使用 cd '仓库目录路径' 可以转换当前管理的仓库目录;
4、本地库分支和远程库分支
(1)github上已经有master分支 和dev分支
在本地:
git checkout -b dev 新建并切换到本地dev分支
git pull origin dev 本地分支与远程分支相关联
(2)在本地新建分支并推送到远程
git checkout -b test
git push origin test 这样远程仓库中也就创建了一个test分支
5、远程库推送冲突
(1)若两个本地库修改文件,但有所冲突,后推送的一个则会推送失败;
(2)首先建立本地分支和远程分支的关联,使用git branch --set-upstream 本地分支名 origin/分支名
;
(3)再抓取最新提交的文件 git pull;
(4)解决冲突,并add、commit、push;
标签
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
1、打上标签: git tag 标签名 commit id (标签名就对应着本次提交;若commit id省略,默认最新一次提交)
2、 打上带说明的标签: git tag -a 标签名 -m "标签说明" commit id
3、使用 git tag查看所有标签; 使用 git show 标签名 查看标签信息;
4、git tag -d 标签名 本地删除标签;
5、推送某个标签到远程,使用命令git push origin 标签名;
一次性推送全部尚未推送到远程的本地标签 git push origin --tags;
6、删除远程库标签: git push origin :refs/tags/标签名;
特殊文件忽略提交
1、在Git工作区的根目录下创建一个特殊的.gitignore
文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件:
#windows
thrund.db
*.class
2、使用 git add -f 文件名 强行加载;
3、也可下载他人已写好的.gitignore文件,我们修改一下就可以了,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
配置命令别名
1、例如使用 git config --global alias.st status 命令,以后想查看状态时,就可以 git st (原git status);
git config --global alias.命令别称 原命令 (其中--global是针对当前用户有用,如果不加,则对当前仓库有用)
2、删除别称
每个仓库的Git配置文件都放在.git/config (该目录是隐藏的)文件中,别称就在[alias]
后面,要删除,直接把对应的行删掉即可。
删除github上的文件 不删本地的文件
1、需求描述:有些本地的配置文件或者自动生成文件不想提交到远程仓库
2、先把文件或文件夹加入到 .gitignore->
git rm --cached -r 文件名或文件夹名 //删除文件夹需要 -r git commit -m "提交描述" git push
以上内容参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000