git常用操作
标注红色为需要根据实际情况修改的部分0.定义fork:将GItHub的某个特定仓库复制到自己的账户下follow:关注repository :仓库HEAD:当前分支中最新一次提交的指针conflit:冲突,比如同个文件不同修改在合并时的冲突issue:主要是用来进行bug跟踪及软件讨论FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远...
标注红色为需要根据实际情况修改的部分
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
gi
t 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入门与实践》
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)