Git使用方法
读研了还不会用git,实属不方便。简单记录一下。
Git仓库结构
工作目录 <-> 暂存区 <-> 本地仓库 <-> 远程仓库
在工作目录不在暂存区的文件为未跟踪的文件(untracked files),在暂存区不在本地仓库的文件为未staged文件(unstaged files),在本地仓库不在远程仓库的文件为未提交文件(uncommited files)
工作流程
工作目录->暂存区
git add [ param] < filename> : 将我们需要提交的代码从工作区添加到暂存区,就是告诉git系统,我们要提交哪些文件,之后就可以使用git commit命令进行提交了。
1. git add . # 不加参数默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区, 但不包括将工作区中不存在的文件从暂存区删除
2. git add -u . #-u 表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括未跟踪的文件
3. git add -A . #-A 表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区
git ls-files:查看暂存区有哪些文件
git ls-files -c # 显示暂存区中的文件,git ls-files命令默认的参数
git ls-files -d # 显示删除的文件
git ls-files -m # 显示修改过的文件
git ls-files -o # 显示没有被git跟踪的文件
工作目录<-暂存区
git rm --cached <filename> : 删除误添加到暂存区中的文件。
4. git rm -r --cached <filename> # 仅删除暂存区中的文件(夹),不删除工作区文件(夹)
5. git rm -r <filename> # 删除暂存区和工作区中的文件
暂存区->本地仓库
git commit -m ‘update message’ : 将暂存区文件提交到本地仓库。
6. git commit -m 'update message' # 将暂存区的文件提交到本地仓库
暂存区<-本地仓库
git reset [param] 本地仓库版本号 :回滚本地仓库版本。
7. git log # 查看本地仓库版本号
8. git reset --soft <本地仓库版本号> # 仅仅只是撤销已提交的本地仓库版本,不会修改暂存区和工作区
9. git reset --mixed <本地仓库版本号> # 仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
10. git reset --hard <本地仓库版本号> # 彻底将工作区、暂存区和版本库记录恢复到指定的版本库
本地仓库->远程仓库
git push <远程主机名> <本地分支名> <远程分支名> : 将本地版本库的分支推送到远程服务器上对应的分支。
11. git push origin master # 如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
12. git push origin : refs/for/master # 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master
13. git push origin # 如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
14. git push # 如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名
创建分支(branch)
15. git branch # 查看有哪些分支
16. git branch <branch_name> # 创建分支
17. git checkout <branch_name> # 切换到指定分支
18. git branch -m <old_name> <new_name> # 修改分支名
19. git merge <branch_name> # 将指定分支合并到当前分支
删除链接
有的时候我们需要删除从GitHub上克隆下来的库
20. git remote remove origin # 取消本地库与源远程库的链接
21. git remote add origin git@github.com:git_username/repository_name.git # 将本地库与新远程库建立链接
引用
第一次更新
当遇到git push
时遇到push declined due to email privacy restrictions
错误时的解决办法。
问题起因
在Setting => Email中勾选了Block command line这个选项。
解决方法
解决方案有两种,第一种简单粗暴之间取消勾选,第二种方法来自这里。
使用GitHub提供的替代邮箱账号(也就是上图马赛克部分),更新全局邮箱,再重新push,具体操作为:
#重新设置全局git邮箱账号
git config --globe user.email "替代邮箱账号"
#重新设置最后一次提交的账户信息,输入下面的命令后会跳到vim界面,直接保存退出
git commit --amend --reset-author
#重新提交
git push