git使用

mac2022-06-30  36

本文是Git教程 By 廖雪峰 的学习笔记 设置git用户名和邮件地址

运行如下命令在编辑器中编辑您的配置文件: git config --global --edit 设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份: git commit --amend --reset-author

创建版本库

mkdir learngit cd learngit git init

添加文件

vim readme.txt Git is a version control system. Git is free software. git add readme.txt git commit -m "注释"

修改文件

vim readme.txt Git is a distributed version control system. Git is free software. git status #查看版本库的状态 git diff readme.txt #查看文件修改 git add readme.txt git commit -m "注释"

查看日志

git log commit f69bf8ce679fdf47b482a1534d98c348afe13f9f (HEAD -> master) Author: zhaozhenwei <zzw19940201@163.com> Date: Wed Oct 2 19:26:04 2019 +0800 append GPL commit 677fe3c8298fa998ad81efaa48006b5b54d2bcd5 Author: zhaozhenwei <zzw19940201@163.com> Date: Wed Oct 2 19:12:00 2019 +0800 remove distributed commit 7e54e95b076620c445bdf20f6d9978a12a69ac58 Author: zhaozhenwei <zzw19940201@163.com> Date: Wed Oct 2 19:10:26 2019 +0800 add distributed commit 0f14bc33e5dc7279cd67bcc7601c64edf604b538 Author: zhaozhenwei <zzw19940201@163.com> Date: Wed Oct 2 19:07:37 2019 +0800 write a readme file git log --pretty=oneline #简单日志 f69bf8ce679fdf47b482a1534d98c348afe13f9f (HEAD -> master) append GPL 677fe3c8298fa998ad81efaa48006b5b54d2bcd5 remove distributed 7e54e95b076620c445bdf20f6d9978a12a69ac58 add distributed 0f14bc33e5dc7279cd67bcc7601c64edf604b538 write a readme file

版本

HEAD^ #上一个版本 HEAD^^ #上两个版本 HEAD~1 #上一个版本 HEAD~100 #上100个版本

版本回退

git reset --head HEAD ^ git reset --head HEAD~1 git reset --head f69bf8ce67 #回到指定版本

git的版本是由指针进行控制的。 版本回退2

git reflog #记录提交的命令 f69bf8c (HEAD -> master) HEAD@{0}: reset: moving to f69bf8ce67 7e54e95 HEAD@{1}: reset: moving to HEAD^ 677fe3c HEAD@{2}: reset: moving to HEAD~1 f69bf8c (HEAD -> master) HEAD@{3}: commit: append GPL 677fe3c HEAD@{4}: commit: remove distributed 7e54e95 HEAD@{5}: commit: add distributed 0f14bc3 HEAD@{6}: commit (initial): write a readme file git reset --hard 677fe3c #根据前面的版本677fe3c进行版本回退

工作区与暂存区

git add filename #将文件添加到暂存区。 git commit #将暂存区内的文件提交到当前分支

撤销修改

git reset HEAD file 把暂存区的修改撤销掉(unstage),重新放回工作区。 git checkout -- readme.txt 丢弃工作区中的修改

删除文件

rm test.txt #删除本地文件 git rm test.txt #删除版本库文件 当本地文件删除之后,版本库中还存在时 git checkout -- test2.txt #用版本库中的版本替换工作区中的版本,无论工作区是修改还是删除,都可以“一键还原”。

远程仓库

1.可以自己搭建一个git服务器,24小时开机,工作人员从该“服务器”上克隆一份到自己的电脑上。 并把自己的提交推送到服务器仓库中。也可以从服务器仓库拉去别人的提交 2.通过GitHub充当git服务器 2.1 GitHub上注册账号 2.2 本地git仓库和GitHub服务器仓库之间的传输是通过ssh加密的。因此需要在本地用户主目录下创建 .ssh目录,同时又id_rsa(私钥)和id_rsa.pub(公钥)这两个文件。 ssh-keygen -t rsa -C "zzw19940201@163.com" 2.3 登录GitHub,将本地ssh添加到GitHub中

2.4 添加远程仓库

如果本地没有Git仓库,则通过1进行创建并关联 如果本地已经有了Git仓库,则通过2进行关联 git push #将本地库推送到远程仓库中,第一次推送时,加上参数“u”,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地master分支与远程master分支关联,以后再进行推送时就可以简化命令: git push origin master 远程库克隆

1.登录GitHub,创建新的仓库:gitskills

2.从远程仓库进行克隆 git clone git@github.com:zzw19940201/gitskills.git #ssh格式 git clone https://github.com/zzw19940201/gitskills.git #http格式

3.克隆完成之后,可以在本地看到相关目录

4.克隆地址默认使用的是SSH协议,在使用HTTPS协议时,速度会很慢,每次推送都要输入口令 有些公司只开放了HTTPS协议,无法使用SSH协议,只能使用https协议。

分支管理

1.创建分支,并切换分支 git checkout -b dev 切换到一个新分支 'dev' 以上命令是以下两个命令的结合 git branch dev #创建分支 git checkout dev #切换分支 2.git branch #查看分支,git branch会列出所有分支,当前分支使用"*"标识 * dev master 3.git merge dev #将制定分支合并到当前分支 4.git branch -d dev #删除指定分支 小结: 查看分支:git branch 创建分支:git branch branch_name 切换分支:git checkout branch_name 创建+切换分支:git checkout -b branch_name 合并分支:git merge branch_name 删除分支:git branch -d branch_name

解决冲突

1.打开冲突的文件 <<<<<<< HEAD qqqqqqqqqqqqqqqqqqqqqq ======= issssssssssssssssssssssssssss >>>>>>> feature 2.将发生冲突的地方修改掉,修改方法和发生冲突的分支的提交人进行商议(怎么解决自己看着办) qqqqqqqqqqqqqqqqqqqqqq issssssssssssssssssssssssssss 3.将修改后的文件进行提交 git add fileName git commit -m "注释" 命令总结 git checkout -b feature1 # 创建并切换分支 git checkout master # 切换分支 git merge feature1 # 将feature1内容合并到当前分支 git log --graph --pretty=oneline --abbrev-commit #查看分支情况 git branch -d feature1 # 删除分支feature1 git log --graph # 查看分支合并图

分支管理策略

1.git merge --no-ff -m "merge with no-ff" dev --no-ff # 禁用Fast forward,提交时dev分支会是一个新的commit # 普通模式合并,合并后的历史有分支,fast forward看不出曾经做过合并。

Bug分支

1.git stash # 将分支保存起来,可以恢复继续使用 2.git checkout master # 切换到要修改bug的分支 3.git checkout -b issue-101 # 创建修改bug的分支 4.git checkout master # 切换回要修改bug的分支 5.git merge --no-ff -m "merged bug fix 101" issue-101 #合并分支 6.git checkout dev # 切换回原来工作的分支 7.git stash list # 查看保存的分支 8.1. git stash apply # 恢复保存,stash内容不删除, git stash drop # 删除保存的分支 8.2. git stash pop # 恢复保存的分支的同时,将保存的分支删除 8.3. git stash apply stash@{0} # 恢复指定的保存分支

强行删除分支

1.git branch -d feature-vulcan # 删除分支feature-vulcan,在该分支的内容未进行合并时,会报错,不允许删除 git branch -D feature-vulcan # 强行删除分支

多人协作

1.git remote # 查看远程库的信息 2.git remote -v # 显示更详细的信息 3.git push origin master # 将本地分支上的提交推送到远程库 git push origin dev master是主分支,时刻与远程同步 dev是开发分支,团队所有成员要在上面协调工作,因此要与远程同步 bug分支用于本地修复bug,没有必要推送到远程 feature分支取决于是否在该分支上协同开发 4.git checkout -b dev origin/dev # 创建远程origin的dev分支到本地,记得去项目目录下 5.git add filename git commit -m "注释" # 将dev分支上的提交推送到远程 6.git pull # 拉取最新的分支 7.git branch --set-upstream dev origin/dev # 设置本地分区和远程origin/dev分支的链接 总结:多人协作的工作模式 a.首先,通过git push origin branch_name 推送自己的修改 b.如果推送失败,那么远程分支比本地更新,先用git pull进行合并 c.如果合并有冲突,解决冲突,在本地进行提交 d.如果没有冲突或者冲突解决,在使用git push origin branch_name进行推送 本地新建的分支不推送到远程,他人不可见。 本地创建和远程分支对应的分支,git branch -b branch_name origin/branch_name,本地分支个远程分支最好一致 建立本地分支和远程分支的联系,git branch --set-upstream branch_name origin/branch_name

标签管理

1.标签,指向某个commit的指针 2.标签管理 2.1 切换到要打标签的分支 git checkout master 2.2 打标签 git tag v1.0 2.3 查看标签 git tag 2.4 默认标签是打在最新提交的commit上的, 如果想在历史提交的commit上打标签,找到历史提交的commit,打上标签即可 git log --pretty=oneline --abbrev-commit git tag v0.9 6224937 # 6224937 提交时的版本号 2.5 标签不是按照时间顺序列出,而是按照字母序排序的。 可以通过git show tagName查看标签信息。 2.6 创建带有注释的标签 git tag -a v0.1 -m "注释" # -a:标签名 -m:注释 2.7 删除标签 git tag -d v0.1 # 删除本地标签 2.8 将标签推送到远程 git push origin tagname # 推送某个标签到远程 git push origin --tags # 推送所有未推送的标签到远程 2.9 删除远程 2.9.1 先删除本地分支 git tag -d v0.2 2.9.2 删除远程分支 git push origin :refs/tags/v0.9 3.0 总结 git push origin tagname # 见分支tagname推送到远程 git push origin --tags # 将所有未推送的标签推送到远程 git tag -d tagname # 删除指定标签 git push origin :refs/tags/tagname #删除远程标签
最新回复(0)