赞
踩
本文将介绍如何使用git和github。
含义:版本控制系统(Version Control System,VCS)是一种软件,可以帮助软件团队的开发人员协同工作,并存档他们工作的完整历史记录
分类:
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是现在最流行的版本控制系统。
【下载地址】: https://git-scm.com/download
下载系统对应版本即可。windows
64位系统下载如下版本:
Next
后面几乎都是一路next,嫌麻烦可以跳过这一part,安装完成后直接进入第三部分
默认也可
选项一:“使用 MinTTY( MSYS2 的默认终端)”
选项二:“使用 Windows 的默认控制台窗口”。Git 将使用 Windows 的默认控制台窗口cmd.exe
credential helper
登录凭证管理助手install
finish
在桌面右键鼠标 ==> 点击 显示更多选项
==> Open Git Bash here
github
用户名github
账户邮箱$ git config --global user.name "用户名"
$ git config --global user.email "邮箱"
可以使用如下两条命令查看Git用户信息
$ git config user.name
$ git config user.email
基于GIt的代码托管平台例如Github,Gitlab,Gitee等,都提供了基于 SSH 协议的 Git 服务,使用SSH公钥可以让你的电脑和Git远程仓库建立安全连接。
在git bash中输入如下命令生成SSH KEY
$ ssh-keygen -t rsa -C "XXXXX.com"
这里显示需要输入三处内容,直接全部输入回车即可!
进入C:/users/用户名/.ssh目录。发现其中多了两个文件:id_rsa
和id_rsa.pub
用记事本打开id_rsa.pub
文件
将id_rsa.pub的内容复制到Github的SSH keys当中
进入github
的setting
界面
点击左侧的SSH and GPG keys
点击New SSH key
将刚刚从id_rsa.pub中复制的内容粘贴到Github的Key中,设置title
,点击Add SSH key
Title
可以自己填写Ubuntu
环境下安装ssh
sudo apt install ssh
查看主目录下有没有**.ssh**这个隐藏文件
ls -ah
若没有,则生成SSH KEY(引号内的内容可以随意填写)
ssh-keygen -t rsa -C "XXXXX.com"
进入 /root/.ssh目录,查看id_rsa和id_rsa.pub文件
将id_rsa.pub的内容复制到Github的SSH keys当中(同windows)
git add
将工作区的修改添加到本地暂存区$ git add .
$ git add <文件名>
git commit
将暂存区的修改提交到本地版本库$ git commit -m "添加修改信息"
git push
将本地版本库中的修改提交到github远程仓库中$ git push
git status
查看文件的状态$ git status
git branch
管理分支$ git branch
$ git branch <branch_name>
$ git branch -d <branch_name>
git checkout
切换分支$ git checkout <branch_name>
$ git clone <url> [directory]
Code
==> SSH/Http
==> 复制即可git fetch
$ git fetch <远程主机名>
$ git fetch <远程主机名> <分支名> //注意之间有空格
$ git log -p FETCH_HEAD
git pull
将远程主机的某个分支的更新取回,并与本地指定的分支合并。
相当于git fetch+git merge。
$ git pull <远程主机名> <远程分支名>:<本地分支名>
$ mkdir learngit
git init
将其变成Git可以管理的仓库$ git init
.git
的目录(一般是隐藏文件),这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件Android
git remote
关联远程库远程库的名字就是origin
$ git remote add <shortname> <url>
$ git remote add origin git@github.com:fograinwater/Android.git
//$ git remote add origin https://github.com/tugenhua0707/testgit
git push
把当前main / master分支推送到远程库$ git push -u <short_name> <your_branch_name>
举例:
$ git push origin main:main
$ git push –u(第一次要用-u 以后不需要) origin master//把当前master分支推送到远程库
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令
$ git clone git@github.com:fograinwater/Android.git
$ git clone https://github.com/fograinwater/Android.git
$ git remote -v
$ git remote rm <name>
“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库
$ git clone git@github.com:fograinwater/Android.git
$ git branch //查看本地所有分支
$ git branch -r //查看远程所有分支
$ git branch -a //查看本地和远程的所有分支
$ git branch <branchname> //新建分支
$ git branch -d <branchname> //删除本地分支
$ git branch -d -r <branchname> //删除远程分支,删除后还需推送到服务器
$ git push origin:<branchname> //删除后推送至服务器
$ git branch -m <oldbranch> <newbranch> //重命名本地分支
git diff <filename>
git log
git log --pretty=oneline
(前面显示的一串数字是commit id
)
利用HEAD回退
HEAD
:当前版本
HEAD^
:上一个版本
HEAD^^
:上上个版本
HEAD~100
:第前100个版本
如回退到上一个版本:
git -reset --hard HEAD^
利用commit id
回退
git reset --hard <commit id>
(一般而言commit id只需要写出前几位即可,git可以自动查找)
git reflog
可引用历史提交版本,什么意思?
使用git log
命令只可以查看到HEAD指针及其之前的版本信息,如果版本发生过回退操作,则可能会出现,HEAD指针之后仍存在历史提交版本的情况,而这些提交版本信息通过git log
命令是看不到的。
【即:git log
命令是显示当前的HEAD
和它的祖先,递归是沿着当前指针的父亲,父亲的父亲,……,这样的原则】
我们可以通过使用git reflog
命令,就可查看到所有历史版本信息。由于查看所有历史版本信息的目的,大多是为了进行版本回退或恢复操作所使用,从中找到所需的commit索引,所以该命令被命名为reflog
(reference log),即:引用日志。
git log
命令与git reflog
命令作用范围示意图:
reflog
并不是Git仓库的一部分,它单独存储,它纯属是本地的
git reflog
命令显示的内容,应该是存储在.git/logs/HEAD
文件中,或者是.git/logs/refs
目录中的文件,也就是说git reflog
命令中保留了从clone仓库开始,用户所有在本地库中的操作。
(在工作区内误改、误删了文件)
git checkout -- readme.txt
(在工作区内误改了文件,并add进了缓存区)
git reset HEAD <file>
然后根据步骤6将工作区中的修改删除
git commit
只负责把暂存区的修改提交了,如果某些修改没有通过git add
加入到暂存区中,则无法通过git commit
提交到本地库中
git branch
git branch <name>
git checkout <name>
或者git switch <name>
git checkout -b <name>
或者git switch -c <name>
git merge <name>
git log --graph
命令可以看到分支合并图--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并git branch -d <name>
git stash
git branch -D <name>
强行删除git remote -v
;git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交;git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致;git branch --set-upstream branch-name origin/branch-name
;git pull
,如果有冲突,要先处理冲突。标签实际上是版本库的快照,跟某个commit绑在一起
标签的创建和删除都是瞬间完成的
默认标签是打在新提交的commit上的
创建普通标签
先切换到需要打标签的分支上
git checkout master
打标签
git tag <tagname>
创建带有说明的标签
git tag -a <tagname> -m <说明文字>
在历史commit上创建标签
git tag <name> <commit id>
git tag
git show <tagname>
git tag -d <tagname>
push单个标签
git push origin <tagname>
push所有尚未推送到远程的本地标签
git push origin --tags
git push origin :refs/tags/<tagname>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。