Git 使用总结

下载地址:https://git-scm.com/【git源码:https://github.com/git/git】

####附大神教程:https://www.liaoxuefeng.com/####

下载对应系统的版本,安装省略,下面总结是由《GitHub入门与实践》一本学习总结而成。

第一部分——基本操作

一、Git Bash里设置用户名与邮箱

#git config --global user.name "name"

#git config --global user.email "email"

信息保存在“.gitconfig”文件中,属性为隐藏,windows在“C:\Users\用户名”下,Linux在“/home/用户名/”下

二、着色配置

#git config --global coulor.ui auto  //颜色自动

三、生成用于SSH连接的SSH key

#ssh-key -t rsa -C "e_mail"

公钥:windows默认保存“C:\Users\用户名\.ssh\id_rsa.pub”,Ubuntu默认保存“/root/.ssh/id_rsa.pub”。

私钥:windows默认保存“C:\Users\用户名\.ssh\id_rsa”,Ubuntu默认保存“/root/.ssh/id_rsa”。

保存位置的known_hosts是用于保存ssh登录远程系统的公钥

使用GitHub的时候,公钥放在设置中的ssh选项中,可以放置多个ssh,用于不同的电脑去同步同一个项目

四、初始化仓库

#git init

用于初始化仓库,本地新建一个仓库的时候使用,如果GitHub上直接新建,本地不需要做这一步,直接clone远程到本地就可以。

五、查看仓库状态

#git status

查看分支等级(master等),文件修改状态,新建但未添加的文件,修改记录,commit新的记录等等

六、添加文件

#git add file_name

向git 暂存区添加文件,添加后才可能进行正常的版本管理。

#git add filename1 filename2 filename3

可以多个文件一起添加

七、提交,保存仓库历史记录

#git commit

将当前暂存区的文件实际保存到仓库的历史记录中,通过这些记录,可以在工作树中复原文件。

加《-m “字符串”》后缀,用作提交记录时的文字描述

#git commit -m “add a file”

如果没有-m参数,则会【后面添加

如果报“Change not staged for commit:”,会提示几个修改过的文件,这些文件在git commit这前要add一下,也可以执行“#git add .”一次全部添加。

无更改的情况下,会提示:nothing to commit, working tree clean

#git commit -am "message"

这是git add 与 git commit的合体用法,message为信息描述。

八、查看提交日志

#git log

查看仓库中的提交日志。包括提交用户的用户名和email(在“一、”中设置的用户名和邮箱),提交的日期,提交时的描述(-m参数字符串),最重要的是提交的哈希值,

加“--pretty=short”,显示哈希值、提交人信息和描述,没有日期,相对洁一些

加“directory/filename”,可以针对一个文件显示日志,日志格式同git log

加“-p”参数,可以显示提交信息前后的文件改动前后差别(所有commit都显示)

加“-p directory/filename”,这两组参数组合使用,可以针对一个文件显示前后改动的差别(所有commit都显示)

当显示的内容超过一屏时,会一屏一屏显示,按空格换屏,点击“q”键退出。

加“--graph”参数,可以以图表的形式查看分支,形象,非常直观。

九、查看更新前后的差别

#git diff

查看当前工作树与暂存区所有被变更文件的前后差别,对暂存区操作后,不会再显示,如git add等操作后,不会再显示差别

参数“HEAD”,增加这个参数,是显示工作树与最后一次提交的差别,执行git add后也会显示区别,在执行git commit后才不会显示。

好的习惯,在执行git commit前执行git diff HEAD,然后查看区别,确认无误后再进行提交。

十、查看当前仓库操作日志

#git reflog

查看当前仓库的所有操作日志(只要不进行Git的GC操作就成),每一步都对应一个哈希值(只显示7位——头7位)。

十一、回溯历史版本

#git reset --hard 哈希值

哈希值可以不用全值,用前6位就可以(说是4位以上就ok,不知道包不包括4位)。之前的记录可以用git log来查找,如果之前做过回溯,可以用git reflog来根据操作日志来找。

操作的时候注意当前操作的分支【不确定需要不需要注意】

十二、修改提交信息

#git commit --amend

操作后会跳出编辑器,编辑器中可以修改描述信息,修改完成后,保存退出,就可以实现修改上一条提交的描述信息功能。

十三、压缩历史

#git rebase -i HEAD~2

操作后会压缩前2个commit记录,pickup的会留下(可以改一下),pickup改成fixup,后面的就删除掉了,记录就压缩为一条。

HEAD为头,2为两个,从头向后数,压缩2个,写3就是3个,如果里面的pickup不改fixup,那压缩后结果不变。

十四、添加远程仓库【向远程推送之前应该先添加远程】

#git remote add origin git@github.com:ientertech/CentHello.git

origin,这是标识符,具体作用不清楚,名字也可以改,作用不不太清楚,名字在仓库当前文件夹下面“.git”文件夹下面的config配置文件中可以查看到。git@github.com:ientertech/CentHello.git为远程仓库地址,本地推送远程,所以远程仓库在建立的时候不应该添加任务文件,包括“.git配置文件”。应该是空空的仓库。

origin名字是github默认的,就算使用别的名字上传,也只是当前仓库使用,其它终端git clone至本地后,默认还是origin。

十五、推送至远程

#git push

直接推送远程,推送的传动情况看当前在哪个分支下,可以git branch看在哪个支持,推送的时候就会推送至哪个分支下。

#git push -u origin master

执行#git push,当前分支的内容就会被推送给远程仓库origin的master分支。-u参数,是在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream(上游)。添加这个参数后,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin的master分支获取内容,活动另外添加参数的麻烦。

#git checkout -b feature

#git push -u origin feature

本地建议feature分支,然后push分支到远程仓库,远程也同样有feature分支了。

十六、从远程仓库获取

#git clone git@github.com:ientertech/CentHello.git

git clone命令会默认处于master分支下,同时系统会自动将origin分支与GitHub远程仓库(origin)的master分支在内容是完全相同

git clone 执行的时候会下载远程的仓库,到本地后是一个文件夹,所以在执行的时候不需要新建一个文件夹,直接执行后,仓库自带一个文件夹。

#git checkout -b feature origin/feature

这是为了把远程仓库的分支clone至本地,feature为本地命名,应该和远程一样,origin/feature为远程分支,可以用#git branch -a来查看远程分支信息。

第二部分——分支操作

基于特定主题的作业在特性分支中进行,完成后再与mastar分支合并。

一、显示分支一览表

#git branch

将分支进行列表显示,分支名前带“*”的为当然所在分支,主分支为master。

#git branch -a

添加“-a“参数,可以同时显示本地仓库和远程仓库的分支信息。

二、创建、切换分支

#git checkout -b branchname

创建并切换到新的分支branchname下,下列两条命令的作业和上面的相同,只是分步完成

#git branch branchname

#git checkout branchname

这两步,第一步为创建分支,第二步为切换到分支。

三、分支操作

分支进行文件修改,git add,git commit,不会影响主分支及其它分支。

四、切回上一分支

#git chechkout -

用于切回上一分支,类似返回操作

五、合并分支

#git merge --no-ff branchname

合并分支之前先切换至主干分支中,执行命令后会跳出编辑器,编辑器提示输入合并信息,其中包括一些默认信息,默认保存退出也可以,直接在下面添加描述文字也可以,不要用#开关,直接在最下面添加。描述会进入log日志。

--no-ff参数是阻止快进式合并,不加参数也可以合并,但效果类似于直接改变指针,分支的提交历史也会合并到主线。建议使用参数,这样可以保持两个分支各相对独立,互不影响。【不是很理解

如果多个分支一个个合并至主分支,修改过同一个文件,会造成合并冲突,合并的结果是冲突文件会把两个分支的结果合并在一起并做出标记“=======”上下部分为两个分支的部分,手动修改后再执行git add及git commit操作,进行提交。

六、

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注