git学习笔记
初始化一个版本库使用git init
命令,添加文件到版本库使用两个命令:
git add <file>
可以反复多次使用,添加多个文件;git commit -m <message>
,完成;
2,版本回退
修改提交的版本可以使用git log
查看提交历史,已确定要回到哪个版本;git reflog
查看命令历史,确定回到未来哪个版本;git log --graph
可以查看分支合并情况。
git checkout -- <file>
为丢弃工作区的修改;git reset HEAD <file>
为丢弃缓存区的修改;git reset --hard commit_id
修改HEAD指针指向的版本;
3,连接github
git remote add origin git@server-name:path/repo-name.git
关联远程版本库;git push -u origin master
第一次推送master分支的所有内容,以后提交则不需要-u
参数了;- 当远程版本库已经存在时先使用
git remote -v
查看已有的远程版本库,然后使用git remote rm <origin-name>
;当远程代码版本高于本地版本时push会报错,此时git push <remote-name> master -f
可以强行使用本地版本覆盖远程版本。
由于git连接使用ssh,所有会验证公钥信息,如果提交是报权限验证失败则需要把本机公钥提交到服务器(github),下面讲解如果创建公钥。
ssh-keygen -t rsa -b 4096 -C "you_email@example.com"
创建 密钥/公钥对,接下来直接数据三个回车即可,此时会在/c/Users/you/.ssh/
目录下看到id_rsa id_rsa.pub
两个文件。需要把id_rsa.pub
上传到git服务器。github公钥存放地址为 个人中心->setings->SSH and GPG keys。
4,分支管理
- 查看分支
git branch
- 创建分支
git branch <branch name>
- 切换分支
git checkout <branch name>
- 创建+切换分支
git checkout -b <branch name>
- 合并某分支到当前分支
git merge <branch name>
- 删除分支
git branch -d <branch name>
5,缓存工作区
- 保存当前工作区
git stash
。当保存工作区后可以确认在哪个分支上修改bug,然后切换分支,创建修改bug临时分支进行修改工作。例如:git checkout master; git checkout -b bug-101
- 查看工作区的保存记录
git stash list
。 - 回复工作区
git stash apply
,回复后stash不会删除,git stash drop
来删除工作区保存记录;git stash pop
回复工作区同时删除保存记录。
6,多人协作
- 多人协作提交逻辑,首先试图提交使用
git push origin <branch-name>
推送自己的修改; - 如果推送失败,则因为远程分支比本地版本跟高,需要拉取线上代码
git pull
进行代码合并。 - 如果合并有冲突,则解决冲突,并在本地提交。
- 没有冲突或者解决掉冲突后,再用
git push origin <branch-name>
推送就能成功!如果git pull
提示no tracking information
,则说明本地分支和远程分支的连接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
。这就是多人协作的工作模式,一旦熟悉了就非常简单。
【注意】
- 查看远程信息,使用
git remote -v
; - 本地新建的分支如果不推送到远程,对其他人就是不可见;
- 从本地推送分支,使用
git push origin branch-name
,如果推送失败,先用git pull
抓取远程的新提交; - 在本地创建和远程分支对应的分支使用
git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致。 - 建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name
; - 从远程抓取分支,使用
git pull
, 如果有冲突,要先处理冲突;
7,设置别名
设置别名git config --global alias.st status
,之后使用 git st
即可查看git状态。
8,搭建git服务器(ubuntu下)
- 安装git:
sudo apt-get install git
- 创建一个git用户,用来运行git服务:
sudo adduser git
- 创建证书登录,收集所有需要登录的用户的公钥,就是
id_rsa.pub
文件,把所有公钥导入到/home/git/.ssh/authorized_keys
文件里,银行一个。 - 初始化git仓库,先选定一个目录作为git仓库,假定是
/srv/sample.git
,在/srv
目录下输入命令sudo git init --bare sample.git
,git就会创建一个裸仓库,仓库没有工作区,因为git服务器纯粹就是为了共享,所以不让用户直接登录服务器上去该工作区,并且服务器上的Git仓库都已.git结尾,把owner改为git:sudo chown -R git:git sample.git
- 禁用Shell登录:把
git:x:1001:1001:,,,:/home/git:/bin/bash
修改为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这只是把版本库建立起来了,权限和其他复杂应用请自己查找资料学些。