git 使用

it2023-11-25  73

集中式 VS 分布式

集中式版本控制系统, 版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。 中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。 集中式版本控制系统最大的毛病就是必须联网才能工作 如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟。 分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,无需联网。 多个人协作,只需把各自的修改推送给对方,就可以互相看到对方的修改了。 分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。 实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。

git 安装

windows 安装

git 配置文件

分别有三个,优先级由高到低分别是 文档库所在文件夹中 .git 子文件夹内的 config 文件 git config user.name ‘name’ git config user.email ‘emailaddress’ 登录账号的 home directory 中的 .gitconfig 文件,此配置文件只对此账号登录的用户有效 git config –global user.name ‘name’ git config –global user.email ‘emailaddress’ Git 安装文件夹的 etc\gitconfig 文件 git config –system user.name ‘name’ git config –system user.email ‘emailaddress’

创建本地版本仓库

选择一个合适的地方,创建一个空目录 git init 也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。

使用GitHub远程仓库

step1 创建ssh key

step2 登陆GitHub,打开“Account settings”,“SSH Keys”

step3 git bash ssh 连接到GitHub,添加远程仓库

登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。 git bash 终端,执行 ssh -T git@github.com

step4 把本地仓库和远程仓库进行关联

git remote add origin git@github.com:echoyzt/allbijis.git

把本地库的master分支内容推送到远程库上

git push -u origin master

创建分支

git checkout -b dev 创建dev分支并切换到dev分支 git branch dev2 创建一个叫dev2的分支,不切换 git checkout dev2 切换到一个叫dev2的分支

切换分支

git checkout 分支名

删除分支

git branch -d issue001 删除issue001分支

合并分支

git merge dev 合并分支 合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

合并冲突

相关操作命令讲解和示例

git init git add file1 file2 把当前文件加入到暂存区 git status 查询索引状态 git commit -m/–amend –amend 修改git提交记录 有时你提交过代码之后,发现一个地方改错了,你下次提交时不想保留上一次的记录;或者你上一次的commit message的描述有误,这时候你可以使用接下来的这个命令:git commit --amend。 注意:该操作会改变你原来的commit id 如何修改任意一次提交记录的commit 注释说明?

工作区 vs 暂存区 vs 版本库

—————————————————————— git diff 显示未暂存的变更 --cached 显示已经暂存的变更 git log, git reflog git log --pretty=oneline git log --graph --pretty =format:“%h %s”

版本回退

git reset --hard HEAD^ (回退到上一个版本) 或者 git reset --hard HEAD~ 回退到上一个版本 (如果想回退到100个版本,使用git reset --hard HEAD~100 ) git reset --hard id (回滚到指定id 版本)

撤销文件修改

数据使用add 添加到暂存区

思路:先从暂存区里面移除相应的文件

删除文件

先删除 git rm -rf 文件名 再提交 git commit -m 备注

git show ID号 git show-branch -r显示远程分支,-a显示所有分支 —————————————————————— 给远程仓库起别名 git remote add origin 远程仓库地址 git push -u origin 分支 git clone 远程仓库地址(第一次下载版本) git pull origin 分支 —————————————————————— rebase 变基 使多条git提交记录合并成一条记录 git rebase -i HEAD~3 (合并最近的3条记录) 注意:不要合并已经push到版本库的记录

git rm --cached 会删除索引中的文件并把他保留在工作目录。 git rm 将文件从索引和工作目录中都删除。 git mv a.cpp b.cpp git cat-file -p SHA1 git rev-parse 3b18e512d git tag -m"xxx" V1.0 3ede462 git ls-files --stage git文件状态 tracked 执行git add 之后 ignored untracked git bisect git show-branch 检出分支 git checkout 已存在的分支名 git diff ??? @@ -1,4 +1,5 @@ - 表示第一个文件,1表示第一行,4表示连续4行 "+1,5"表示第二个文件从第一行开始的连续5行。 —————————————————————— 7.如果远程新建了一个分支,本地没有该分支。 git checkout --track origin/branch_name 这时本地会新建一个分支名叫 branch_name, 会自动跟踪远程的同名分支 branch_name

8.如果本地新建了一个分支 branch_name,但是远程没有。 这时候 push 和 pull 指令就无法确定该跟踪谁, 一般来说我们都会使其跟踪远程同名分支, git push --set-upstream origin branch_name 这样就可以自动在远程创建一个 branch_name 分支, 然后本地分支会 track 该分支。后面再对该分支使用 push 和 pull 就自动同步。 9.如果本地存在一个分支,如何与远程分支关联并下载代码? ——————————————————————— gitstatus git ls-files -u 查看未合并的文件 裸版本裤可以简单的看成.git目录的内容 git stash save git flow init

常见问题解决

1.non-fast-forward

push远程仓库时经常报出下面的错误,导致操作失败 Git 已经提示我们,先用 git pull 把最新的内容从远程分支(origin/master)拉下来,然后在本地 merge,解决 conflict,再 push。 git pull origin master

2.fatal: refusing to merge unrelated histories

此项错误是由于本地仓库和远程有不同的开始点,也就是两个仓库没有共同的 commit历史出现的无法提交 $git pull origin master --allow-unrelated-histories $ git push -u origin master

3 git reset --hard id 报错unlink of file

在操作git中有时候会提示 Unlink of file ‘…’ failed. Should I try again? 原因是你工作目录有某些文件正在被程序使用, 解决方案不是简单的选择y或者n,而是关闭IDE,让IDE把这些文件释放掉。

4 分支管理-Bug分支

git stash :把当前的工作隐藏起来 等以后恢复现场后继续工作 git stash list :查看所有被隐藏的文件列表 git stash apply :恢复被隐藏的文件,但是内容不删除 git stash drop: 删除文件 git stash pop: 恢复文件的同时 也删除文件

Git基本常用命令如下: git diff XX : 查看XX文件修改了那些内容 git reflog : 查看历史记录的版本号id

git checkout – XX : 把XX文件在工作区的修改全部撤销。 git rm XX : 删除XX文件

本地仓库到远程仓库的操作

git remote add origin https://github.com/RTplay/testgit.git: 关联一个远程库 git push -u(第一次要用-u 以后不需要) origin master :把当前master分支推送到远程库 git clone https://github.com/RTplay/testgit.git : 从远程库中克隆 git remote: 查看远程库的信息 git remote -v :查看远程库的详细信息 git push origin master :Git会把master分支推送到远程库对应的远程分支上

最新回复(0)