标注红色为需要根据实际情况修改的部分

0.定义

fork:将GItHub的某个特定仓库复制到自己的账户下

follow:关注

repository :仓库

HEAD:当前分支中最新一次提交的指针

conflit:冲突,比如同个文件不同修改在合并时的冲突

issue:主要是用来进行bug跟踪及软件讨论

FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。 

.gitignore 文件:记录不需要在Git仓库中进行版本管理的文件

.license 文件 :表明仓库内容的许可协议

.git文件:存储管理当前目录内容所需的仓库数据,仓库管理者文件的历史快照,可从仓库中调取历史快照,在目录中打开内容,目录的内容又称为附属于该仓库的工作树。编辑时在工作树中进行,然后记录到仓库中。


 

1.设置用户名及邮箱

git config --global user.name "myname"

git config --global user.email "myemail"

也可在~/.gitconfig 中查看或编辑

2.初始化及查看公钥

ssh -keygen -t rsa -C "myemail"

cat ~/.ssh/id_rsa.pub

3.查看状态信息

git status

各类状态:

Untracked files:未添加至git仓库的文件

changes to be committed:暂存区中未被提交的文件

4.新增一个文件并提交

git add newfile   加入暂存区,暂存区是提交之前的临时区域

git commit -m ‘add new file’ 提交信息,将暂存区中的文件保存到仓库的历史记录中。多行提交信息使用git commit打开编辑器编辑,若编辑器启动后未经编辑直接关闭,则提交被终止

git push 更新Github上的仓库

可使用git commit -am 来实现add和commit两个步骤

5.查看日志

git log  查看以当前状态为终点的历史日志

git reflog 查看当前仓库执行过的操作日志,不以当前状态为终点,包含commit,checkout, merge等各种操作

git log -n 1 查看最新的一条提交

git log 目录名 显示该目录下的日志

git log 文件名 显示文件相关日志

git log -p 文件名 显示文件提交前后差别

git log --graph 以图表形式查看分支,可查看特性分支(相对于主干分支)的创建及合并

6.初始化git本地版本管理仓库,进行版本管理

git init

7.查看更改前后差别

git diff 查看工作树与暂存区差别,+表示新添加的行,-表示被删除的行

git diff HEAD 查看工作树与最新提交的差别,HEAD指当前分支中最新一次提交的指针

8.查看、新建分支

git branch 显示分支列表,查看当前所在分支

git branch -a 可查看远程分支信息

git branch 新分支名  创建新分支

9.切换分支

git checkout feature-test

git checkout - 切换回上一个分支

若要创建切换一个新分支,以下两种方式等效

方式一:

git checkout -b newbranch

拉远端分支并创建一个本地新分支

git checkout -b newbranch origin/newbranch

方式二:

git branch newbranch

git checkout newbranch

10.合并分支

git checkout master

git merge --no-ff dev  使用--no-ff参数可记录本次合并信息,启动编辑器后可录入合并提交的信息,可使用默认内容Merge branch ‘dev’直接保存关闭编辑器

11.回溯、推进历史版本

git reset --hard  commit号 让仓库的HEAD、暂存区、当前工作树回溯到指定状态

12.冲突

举个例子,在merge时发生comflict,报错信息为:

CONFLICT(content):Merge conflict in README.md

Automatic merge failed:fix conflicts and then commit the result

解决方法:打开冲突文件README.md重新编辑,并add commit

#Git冲突实例

<<<<<<<HEAD

 -A

=========

-B

>>>>>>>dev

=========以上是当前HEAD的内容,下面是要merge的分支的内容,修改为

#Git冲突实例

-A

-B

再通过add 和commit提交

13.修改上一条提交信息

git commit --amend

14.修正上一次提交的内容并压缩历史

   在历史记录中并不需要修正拼写错误等版本,因此存在修正上次提交内容的需求,具体步骤为:

1)先使用add commit 进行一次提交,得到新的一次历史记录

2)使用git rebase 压缩历史,将两次历史记录合并

git rebase -i HEAD-2 

选定当前分支最后包含HEAD(最新提交)在内的两个最新历史记录对象,并在编辑器中打开

pick  commit号1 commit信息1

pick commit号2 commit信息2

3)修改内容

若要将commit号2 的提交内容压缩到commit号1中,修改对应的pick为fixup,保存并关闭

pick  commit号1 commit信息1

fixup commit号2 commit信息2

4)合并后commit号1已变更,可用git log --graph 查看

15.创建远程GIthub仓库,并将本地仓库推送至远程仓库

比如我在本地编辑好代码了,想将多个文件的内容推送到GIthub上保存。

1)创建远程Github仓库

github上:new repository——repository name 保持一致,填本地的名称——不要创建readme.md——creat repository

2)对本地仓库添加远程仓库

本地:git remote add origin git@github.com:xxxxxx  

执行之后自动将远程仓库的名称设置为origin

3)推送内容

git push -u origin master 将当期分支的内容推送给远程仓库origin的master分支

-u 参数将远程仓库origin的master分支设置为当前分支的上游(upstream),下次git pull 时就不用添加参数啦

也可推送到origin的其他分支 git push origin work 可实现新建远端新分支

16.获取远程仓库

获取远程master:git clone 后默认处于master分支下,且系统自动将origin设置成远程仓库的标识符,即本地master=远程origin master

新建分支并获取远程其他分支:git  checkout -b dev origin/dev   -b新建了本地dev分支

获取远程其他分支:git pull origin dev

17.pull request

1)Github界面fork他人代码

2)clone至本地修改,创建特性分支进行修改,提交修改后的代码至github远程分支

3)通过github界面分支名左侧绿色按钮查看分之间差别,确认是否正确

4)点击create pull request——编辑请求——点击send pull request

18.更新单个文件

git fetch origin master  获取最新数据,更新远程代码到本地仓库,不自动merge

git checkout origin/master c.txt

19.更新本地文件到最新,获取最新数据

方案一:

git fetch origin

git merge origin/master

方案二:

git fetch origin master:tmp

git diff tmp 将当前分支与tem进行比较

git merge tmp 合并merge分支到当前分支

方案三:

git pull origin master

20.撤销修改

用git status 可以获得一些建议

情景一:未add至暂存区,撤销到和版本库一致,即最近一次commit状态

git checkout --  filename.txt  

情景二:已add至暂存区,撤销到和暂存区一样,即最近一次add状态

git checkout --  filename.txt  

情景三:已add至暂存区,撤销到暂存之前

git reset HEAD filename.txt   撤销暂存区的修改,重新放回工作树

git checkout -- filename.txt  丢弃工作区的修改

注意HEAD表示最新版本,git reset还可进行版本回溯功能

情景四:已提交到版本库,回退到上次提交后的状态

git reset --hard commit号

21.从版本库中恢复被删除的文件

git checkout -- filename.txt  

22.删除未add即untracted的文件

git clean -n 显示要删除的东西

git clean -f 删除文件

git clean -df 删除文件和目录

23.误commit,强行同步线上代码

注意备份要修改的文件,这个方法会强制覆盖

 git fetch --all && git reset --hard origin/master && git pull

或进行分解

git fetch --all

git reset --hard origin/master

git pull

参考网址:Git最常用的几个操作_Richard_Jason的专栏-CSDN博客

《Github入门与实践》

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐