Git常用指令——GIthub/服务器 与本地仓库同步(持续更新)

PS:指令来自廖雪峰老师的git教程总结,文末附有链接。

个人感觉:从头到尾看完这些指令并操作一遍,git搞定三分之二了。

1.设置全局用户名和邮件
$git config --global user.name "github用户名"
$git config --global user.email"github邮箱"

2.查看git设置列表信息
$git config --list

3.查看用户名

$git config user.name

查看某一文件内容

$cat filename


4.创建文件夹/目录
$mkdir flodername

5.进入目录

$cd foldername


6.查看当前的路径
$pwd

7.返回上一级目录(注意cd 和 两个点之间有一个空格)
$cd ..

8.初始化git仓库
$git init

9.把文件添加到仓库
$git add filename.txt

10.提交添加的文件
$git commit -m "message(说明信息,告诉这次提交做了什么事儿,可以一条提交指令对应多个添加,即在add后进行批量提交)"

11.显示当前仓库文件状态
$git status

12.查看修改内容
$git diff

13.显示提交日志
$git log

14.更人性化地显示更新提交日志
$git log --pretty=oneline

15.回退到上一/二/三/100版本版本库(前提是未提交到远程库)
$git reset --hard HEAD^
$git reset --hard HEAD^^
$git reset --hard HEAD^^^
$git reset --hard HEAD~100

16.回退到历史之后又想穿梭回未来了,即刚修改过的n个版本
$git reset --hard 版本commit id(前7位即可)

17.查看commit id(提交id),用于穿梭到未来某一版本
$git reflog

18.查看工作区和版本库里面最新版本的区别
$git diff HEAD -- filename

19.放弃这次工作区修改(也就是用当前版本库替换工作区,可以进行误删误增操作的替换操作) (这里我建议了解一下git的工作区——缓存区概念)
$git checkout -- filename

20.放弃这次暂存区的修改,即放弃已经add后的修改
$git reset HEAD filename
$git checkout -- filename

21.删除某一文件
$rm filename

22.从版本库中删除某一文件
$git rm filename
$git commit -m "filename"

23.创建SSH密钥,主要用于连接git仓库,要么是github要么是公司服务器
①查看本机是否有SSH密钥    $cd ~/.ssh#
②创建SSH密钥 $ssh-keygen -t rsa -C "[email protected]" 创建过程回车即可,不要设置密码,因为没用。
③在github 中的Settings→SSH and GPG keys → Add SSH keys中添加,title随意起名,密钥从id_rsa.pub中获取,复制粘贴ok

24.本地项目同步到github
①在github中创建一个新项目 New repository
②关联一个远程仓库,以github为例:$git remote add origin [email protected]:github用户名/导入项目目录名.git
③如果在giuhub创建新项目的时候创建了readme.md 文件 一定记得要先写如下指令把readme.md 文件同步(合并)到本地再上传 $git pull --rebase origin master
④第一次上传master(分支)指令 $git push -u origin master
⑤后续上传分支指令 $git push origin master

25.从github上拷贝一个项目
$ git clone [email protected]:用户名/项目名.git
从服务器上拷贝一个项目(前提需要服务器已经记住你的公钥)

$ git clone git@服务器ip:项目文件路径.git

26.查看当前目录所有文件
$ls

27.创建并切换分支
$git checkout -b dev
等价于两条指令
创建分支dev:$git branch dev
切换到分支dev:$git checkout dev

28.查看所有分支,当前正在使用的分支前面会有一个星号
$git branch

29.合并指定分支到当前分支
$git merge 指定分支名

30.删除指定分支(一般在合并分支之后进行)
$git branch -d 删除分支名

31.当修改内容冲突的时候,无法进行分支的合并,需要手动结局文件内的冲突
可以通过如下指令查看冲突
①查看文件内容 $cat filename
②查看冲突细节 $git log --graph --pretty=oneline --abbrev-commit
注:$git log --graph 指令用来查看分支合并图

32.当在工作过程中遇到了bug,可以先把手头的工作存在stash中
比如目前正在dev分支中编程,突然遇到master某一脚本出现bug,最好的方式是在master下新建一个分支处理bug,处理过后合并分支并把处理bug的分支删除,再回到dev分支中恢复刚刚手中的工作。
此时:
①$git stash
②$git checkout master
③$git checkout -b bug101
④修改bug
⑤$git checkout master
⑥$git merge bug101
⑦$git branch -d bug101
⑧$git checkout dev
⑨$git stash pop
⑩继续工作

33.强行删除未合并的分支,此时分支下的所有工作被废弃.所以每次开发新功能,最好在dev下建立新的分支,再合并删除,更加保险
$git branch -D branchname

34.查看远程库信息
$git remote
$git remote -v

35.推送分支$git push origin branchname失败,说明远程有同事也提交了该branchname分支需要先从远程抓取他人的推送分支到本地
$git pull

36. 若抓取分支失败,提示"no tracking information" 需要创建本地分支和远程分支的链接关系
①$git branch --set-upstream branchname /origin/branchname
②$git pull
③然后在本地解决冲突→④$git add filename→⑤$git commit -m "message"→⑥$git push origin branchname 

37.创建新标签
$git tag tagname  默认为最后一次commit 创建标签
$git tag tagname commit_id  指定为某个commid_id 创建标签
$git tag -a tagname -m "blablabla..." 指定标签的信息
$git tag -s tagname -m "blablabla..."用PGP签名标签
$git tag 查看所有标签
$git show tagname 查看某个标签的细节信息
$git tag -d tagname 删除某个本地标签
$git push origin tagname 推送某个本地标签到远程
$git push origin --tags 一次推送全部尚未推送到远程的本地标签
删除远程标签分两步:
①$git tag -d tagname
②git push prigin:refs/tags/tagname

38.跟新到github想忽略某些文件又不被warnning,需要编写.gitignore文件
在git根目录设置整体整体忽略文件:$git config –global core.excludesfile ~/.gitignore   接下来可以找.gitignore文件并开始编辑,同样需要提交
可见如下总结:
https://github.com/github/gitignore
http://www.chengxusheji.com/archives/121.html
https://kuanghy.github.io/2016/05/17/gitignore

39.给某些git指令配置别名
$git config --global alias.co checkout   把checkout指令改成co
$git config --global alias.ci cocmmit    把commit 指令改成ci
$git config --global alias.br branch     把branch指令改成br
$git config --global alias.unstage 'reset HEAD' 把reset HEAD 改成unstage
$git config --global alias.last 'log -1' 定义last操作返回最后一次提交信息
下面就可以对应上面的改名进行操作了
$git ci -m "blablabla"
$git unstage filename   撤销缓存区的文件修改
$git last

如果想删除这些重命名指令,需要找到全局配置文件或者是当前项目对应的配置文件,删除他们(都在配置文件的【alias】下方)

查看仓库的全局配置文件:$ cat .git/config 

查看当前项目的配置文件:$ cat .gitconfig

40.查看git全局配置
$git config -l

41.查看当前项目配置文件
$cat .git/config

42.查看自己git的公钥
$cat ~/.ssh/id_rsa.pub
一般公钥的位置都在C盘,和私钥在一个文件夹下:/c/Users/用户名/.ssh

43.服务器授权主机免密SSH登录,我的理解就是可以让主机A随时把内容更新内容到服务器B,类似于可以随时把本机文件更新到github仓库一样,需要先进行一个链接操作
原理:主机A把自己的公钥告诉服务器B,服务器B通过公钥唯一认定可以访问的主机A
必须操作:
①主机A生成密钥(公钥)【参考第23、42序号指令】
②在服务器B中记录密钥(公钥)(将A的公钥拷贝到配置文件/home/git/.ssh/authorized_keys)
③文件夹和文件的权限设置
操作链接教程:https://jingyan.baidu.com/article/d621e8da24ac7b2865913f30.html (还没试,试过再来补充)

44.编辑某个文件
$vi/vim filename
还有更多的编写操作可以学习一下vim教程,或者等我总结一个0.0vim实战实用指令集...

45.先这么多,写的有点乱,仅作个人学习,然后持续Updating...

廖雪峰git教程链接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
PS:感谢廖老师,感谢文中所有链接原作者❤








你可能感兴趣的:(GIt)