注意,所有 Git 命令都以 git
开头。
1克隆github上的仓库到本地
git clone + [仓库地址]
克隆远程仓库到本地时,还可以使用 -o
选项修改主机名,在地址后面加上一个字段作为本地仓库的主目录名
git remote -v
命令可以查看本地仓库所关联的远程仓库信息
git remote
命令就于管理本地仓库所关联的主机,一个本地仓库可以关联任意多个主机(即远程仓库)。
git init
它会把当前所在目录变成一个本地仓库,因为有 GitHub 的存在,这个命令在我们的生产生活中用到的次数应该是零,除非你想费时费力自己搭建服务器。
2Git基础操作
Git 本地仓库有三大区域:工作区、暂存区、版本区。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xTGjJ3Di-1617701594918)(git笔记.assets/image-20210314204454286.png)]
进入某一个仓库后,git status
查看整个仓库的状态。
echo+文件名
创建一个文件。
echo '文件内容' >> 文件名
添加内容给文件或创建一个文件并添加内容。
git add [文件名]
命令跟踪此新建文件,即把新增文件添加到暂存区,以备提交。如果对多个文件或目录进行了增删改,可以使用 git add .
命令全部添加到暂存区。注意这里有个概念,当我们修改了工作区,git add
命令是将这些修改添加到暂存区,暂存区记录的只是修改。
git reset -- [文件名]
或者 git rm --cached [文件名]
命令撤销暂存区的修改。如果省略最后的文件名,把命令写成 git reset --
即可把暂存区的全部修改撤销。
git diff
用来查看工作区被跟踪的文件的修改详情。
git diff --cached
查看暂存区的全部修改。
从新的页面退出可以用按Q。
git commit
命令把暂存区的修改提交到版本区,生成一个新的版本
git log
,它用来查看版本区的提交历史记录。
git log [分支名] 查看某分支的提交历史,不写分支名查看当前所在分支
git log --oneline 一行显示提交历史
git log -n 其中 n 是数字,查看最近 n 个提交
git log --author [贡献者名字] 查看指定贡献者的提交记录
git log --graph 图示法显示提交历史
设置github账号
git config --local user.email "写入自己注册 GitHub 账号的邮箱"
git config --local user.name "自己的 GitHub 账号名字"
.git/config
文件,即「仓库级配置」文件:这个配置中的设置只对当前所在仓库有效。使用.git/config --local
,此时读写的就是这个文件。这里的配置仅仅针对当前项目有效。~/.gitconfig
文件,即「全局级配置」文件:用户目录下的配置文件只适用于该用户。可以使用git config --global
选项去设置它。/etc/gitconfig
文件,即「系统级配置」文件:系统中对所有用户都普遍适用的配置。可以使用git config --system
选项。
git config -l
可以查看配置信息
git reset --soft HEAD^
撤销最近的一次提交,将修改还原到暂存区。--soft
表示软退回,软退回一个提交后执行 git branch -avv
命令查看分支信息。对应的还有--hard
硬退回,HEAD^
表示撤销一次提交,HEAD^^
表示撤销两次提交,撤销 n 次可以简写为 HEAD~n
。
git add .
命令将新的修改添加到暂存区
cat 文件名
查看文件内容
git reflog
命令记录本地仓库所有分支的每一次版本变化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TNIIZAuo-1617701594921)(git笔记.assets/document-uid310176labid9805timestamp1548756307795.png)]
回退到以前的版本可以直接执行命令 git reset --hard [版本号]
,如果记不清版本号,也可以根据上图第 3 行的信息,执行 git reset --hard HEAD@{2}
命令,其中 HEAD@{2}
就是上图第 3 行第 2 列所示,这个命令的意思是回到当前分支最近两次提交版本变化前。可以再通过该命令跳到别的版本。
git pull
推送到远程仓库。需要联网执行。
3Git分支操作
①添加 SSH 关联授权
若想避免每次pull都要手动输入用户名和密码。可以在系统中创建 SSH 公私钥,并将公钥放到 GitHub 指定位置。如此操作即可生成 GitHub 账户对于当前系统中的 Git 授权。
注意生成秘钥时的邮箱一定要与github账号的邮箱一样。
ssh-keygen
命令生成公私钥。公私钥存放在主目录下的隐藏目录 .ssh
中的两个文件中。
使用 cat ~/.ssh/id_rsa.pub
可以查看公钥。
要在GItHub官网个人Settings部分–SSH and GPG keys处添加公钥。title 自定义就行。
之后就可以用git clone ssh链接
将仓库克隆到本地 了。这样git push
就不用再属于用户名和密码了。
②为Git命令设置别名
GIt命令设置别名的命令是 git config --global alias.[别名] [原命令]
,如果原命令中有选项,需要加引号。别名是自定义的,可以随意命名,设置后,原命令和别名具有同等作用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WBUpmO04-1617701594923)(git笔记.assets/uid310176-20190514-1557819719173)]
自己设置的别名要记住,也可以使用 git config -l
命令查看配置文件。
③Git分支管理
Git 作为分布式版本控制器最强大的功能:分支管理。
命令 git fetch
,它的作用是将远程仓库的分支信息拉取到本地仓库,注意,仅仅是更新了本地的远程分支信息。fetch
命令的作用是刷新保存在本地仓库的远程分支信息,此命令需要联网。此时若想使本地 master 分支的提交版本为最新,可以执行 git pull
命令来拉取远程分支到本地,pull
是拉取远程仓库的数据到本地,需要联网,而由于前面执行过 git fetch
命令,所以也可以执行 git rebase origin/master
命令来实现 “使本地 master 分支基于远程仓库的 master 分支”,rebase
命令在后面还会经常用到,这里只需按部就班操作即可。
分支在项目开发中作用重大,多人协作时尤其不可或缺。例如一个项目上线了 1.0 版本,研发部门需要开发 1.1、1.2 两个测试版,增加不同的新功能,测试版的代码显然不能在正式版所在的分支上,此时需要新的分支来存放不同版次的代码。再例如实验楼的课程团队在维护课程仓库时,每个人都有各自的分支,在自己的分支上进行修改,然后向 master 分支提 PR(pull request),最后从 master 分支推送到线上。
git br
查看分支信息。
git branch [分支名]
可以创建新的分支。此命令创建新分支后并未切换到新分支,还是在 master 分支上,执行 git checkout [分支名]
切换分支,checkout
也是常用命令,先给它设置别名,然后切换分支。
git checkout -b [分支名]
创建分支并切换到新分支。
在哪个分支上创建新分支,新分支的提交记录就与哪个分支一致。新建分支并无跟踪任何远程分支。
执行 git push [主机名] [本地分支名]:[远程分支名]
即可将本地分支推送到远程仓库的分支中,通常冒号前后的分支名是相同的,如果是相同的,可以省略 :[远程分支名]
,如果远程分支不存在,会自动创建。
命令 git branch -u [主机名/远程分支名] [本地分支名]
可将本地分支与远程分支关联,或者说使本地分支跟踪远程分支。如果是设置当前所在分支跟踪远程分支,最后一个参数本地分支名可以省略不写。命令的 -u
选项是 --set-upstream
的缩写
执行 git branch --unset-upstream [分支名]
即可撤销该分支对远程分支的跟踪,同样地,如果撤销当前所在的分支的跟踪,分支名可以省略不写。
删除远程分支,使用 git push [主机名] :[远程分支名]
如果一次性删除多个,可以这样:git push [主机名] :[远程分支名] :[远程分支名] :[远程分支名]
。注意:当前所在的分支不能被删除。
git branch -D [分支名]
删除本地分支,同样地,此命令也可以一次删除多个,将需要删除的分支名罗列在命令后面即可。