CentOs7下GitHub入门复习
来源:互联网 发布:苏州程序员招聘 编辑:程序博客网 时间:2024/05/17 12:19
1。在CentOs7下面 配置GitHub
1.1 确认CentOs7可以联网
yum -y install git
1.2 在需要进行版本控制的目录下,
mkdir .git (如果没有做1.2,直接做1.3,会显示error: could not lock config file .git/config: No such file or dir)
1.3 然后 git config user.name "参数1" 参数1是github账号名
git config user.email "参数2" 参数2是申请github用的邮箱
1.4 SSH Key 配置(用来识别是否有权限访问)
1): ssh-keygen -t rsa -C "参数3" 参数3是申请github用的邮箱 复制出现那一段文字
2):登录GitHub ,Account settings --> SSH Keys -->Add SSH Key . Title随意,Key 粘贴
2. 创建版本库
2.1 创建一个空目录,
mkdir testgit
cd testgit
2.2 将testgit 转为git版本库
git init
2.3 文件添加到版本库
git add test.txt 添加到暂存区
git commit -m “message” 提交到版本库 message 表示“需要填的版本修改信息,便于版本控制”
3. 版本控制http://write.blog.csdn.net/postedit/51912848
3.1 两个需要注意的常用命令
3.1.1 git status
查看当前状态,可以看到当前文件的修改情况
3.1.2 git diff
查看之前修改的信息,比较详细
3.2 版本转换
3.2.1 多次修改一个文件后,可以使用 git log 命令进行版本查看 git relog 可以查看历史命令(用来回到未来)
git log --pretty=oneline 信息简单
回退到上一个版本
git reset --hard HEAD^ (HEAD 表示当前版本,上上个版本为HEAD^^,之前的版本为HEAD~n,)
切换到最新版本
git reset --hard ****** ******表示git log 查询到的id,此id是一长串不规则的数
4. 修改文件
test.txt 先add,然后 commit 之后。
4.1 二次修改
第一次修改->git add ->第二次修改->git commit.
这样只提交了第一次修改的,第二次修改的并没有提交。
git diff HEAD -- test.txt 可以查看工作区和版本库中最新版的区别
第二次修改要提交 就进行 git add , git commit
4.2 撤销工作区修改
git checkout -- test.txt 可以丢弃工作区的修改
4.3 撤销暂存区修改
git reset HEAD file 即把仓库中的文件还原到工作区,并且去掉暂存区的修改 HEAD表示仓库中的最新版
## 有时需要 4.3和4.2都进行
4.4 删除文件
工作区中 rm test.txt
4.4.1 需要把版本库中的删除
git rm test.txt , 并且 git commit -m “remove test.txt”
4.4.2 删错了,将版本库中的文件克隆到工作区
git checkout -- test.txt (就算是修改, 也可以用来还原)
5. 创建远程库
5.1 登录GitHub ,右上角 Create a new repository ,填上库名,确认 ,然后按步骤进行即可。
5.2 远程库是空的,与本地库关联
git remote add orgin git@github.com:XXXXXX/learngit.git XXXXXXXXXX指的是你的用户名
5.3 将本地库推送到远程库
git push -u origin master -u 不仅推送内容, 还推送分支
5.4 本地提交后,即可用命令
git push origin master 将本地master 分之推送到远程库GitHub
5.5 SSH警告, 在第一次使用 clone 和 push 时,使用yes
6. 克隆库
6.1 远程库初始化
GitHub 网站 create a new repository , 勾选initizlize this repository with a README。
6.2 在本地克隆
git clone git@github.com:chaorwin/714repo.git 地址使用的是 SSH 协议 , http 使用http 协议
7. 分支
7.1 创建与合并分支
7.1.1 创建分支
git branch dev
7.1.2 查看分支
查看分支 git branch 会列出所有分支,在当前分支标 *
7.1.3 切换
git checkout dev
7.1.4 创建并且切换
git checkout -b dev (-b表示创建并且切换)
7.1.5 将分支dev成果合并到master 主支 , git merge 用于合并指定分支到当前分支。 合并完成后,就可以删除dev 分支
git merge dev
7.1.6 删除分支
git branch -d dev
7.2 冲突处理
7.2.1 产生冲突
git checkout -b branch1
修改test.txt 文件 : 例如,加上一句话, “this is a branch1”
在 branch1 上提交, git add text.txt git commit -m "add branch1"
切换到 master 主枝, git checkout -master
此时,Git 会提示: 当前master 分支比远程的master分支要超前一个提交
在master 分支上把 test.txt 加上一句话 , “this is master” , 然后 add , commit
此时master 和 branch1 都有了新的提交。
这种情况下,Git 无法执行“快速合并”,在合并过程中后有冲突。 合并 git merge feature1
7.2.2 解决冲突
test.txt的冲突必须先手动解决后才可以提交。
git status 可以告诉我们冲突的文件
Git 用 <<<<<<<<<,=========,>>>>>>>>> 标记处不同分支的内容,我们修改后保存,再提交,add,commit
使用 git log 也可以看到分支的合并情况 :
git log --graph --pretty=online --abbrev-commit
最后删除branch1分支
git branch -d branch1
OVER
****** 使用git log --graph 命令可以查看分支合并图
7.3 分支管理策略
(合并分支时,--no-ff 参数可以用普通模式合并,合并后的历史有分支,能看出曾经进行的合并,而 Fast forwaird 合并就看不出曾经进行的合并)
7.3.1 合并分支时,Git 会用Fast forward模式,这种模式下,会删除分支,丢掉分支的信息。
如果强制(禁用)Fast forward 模式,Git 会在merge 时生成一个新的commit ,这样,从分支合并情况可以看到分支信息。
7.3.2 禁用Fast forward 模式(即快速合并), no Fast forward ---》 --no-ff 的git merge
创建切换分支
git checkout -b dev
修改 test.txt , 病提交一个新的commit
git add test.txt
git commit -m "add merge"
切换回 master
git checkout master
合并dev分支,注意 --no-ff , 表示禁用 Fast forward
git merge --no-ff -m "merge with no-ff" dev
因为合并要创建一个新的commit , 所以要加上 -m 参数,把 commit 的描述写进去
合并完成,用 git log 查看分支历史
git log --grapth --pretty="oneline" --abbrev-commit.
7.3.3 分支策略
1) master 是稳定的,只用来发布新版本,不能在这干活
2) 在新创建分支1,2,3上干活,即分支不稳定。在需要合并时,合并
7.4 Bug 分支
遇到 Bug 时,需要用一个临时分支来修复,修复后,临时分支删除。、
在需要处理临时分支上的 bug 时,当前分支 branch1 的内容还没有提交,但是又不能提交(任务没做完),使用 git stash 将当前 工作区状态保存起来,等回复后再
工作。 现在用 git status 查看工作区是干净的, 可以放心使用分支处理bug,在哪个分支上修复就在哪个分支上创建 bug临时分支 。
例如:在master 上修复。
git checkout master 切换到master
git checkout -b problem_1 创建并切换到bug分支
*****************************************************************
修复bug 修改 test.txt 文件,添加,提交
git add readme.txt
git commit -m "fix a promble"
*****************************************************************
切换到 master 分支,合并,最后删除
git checkout master 切换到master
git merge --no-ff -m "mergeed bug fix pro1" problem1 合并bug分支
git branch -d problem1 删除bug 分支
*****************************************************************
回到原来的工作区, 恢复现场
git checkout branch1
git status 此时工作区是干净的
git stash list 查看刚才的工作现场, 可以看到 还在,保存在别的地方
*****************************************************************
恢复
方法1:git stash apply 恢复后 stash 内容没有删除 用 git stash list 可以查看到内容
方法2:git stash pop 恢复的同事 stash 的内容也删除了 用 git stash list 可以查看不到内容
#######: 多次stash,恢复时,先用 git stash list 查看, 然后用 git stash apply stash@{0} 恢复
7.4 Feature 分支
添加新功能时, 创建分支,因为某种原因需要销毁
git checkout -b feature-new
开发完毕后, feat_test.txt
git add feat_test.txt
git status
git commit -m "add feat_test"
切回分支 branch1,合并
git checkout branch1
因为某种原因需要删除这个功能。
git branch -d feature-new 销毁失败,因为feature-new 分支还没有合并,如果删除,将丢掉数据,
这时,强行删除
git branch -D feature-new.
##### 开发新功能,使用新分支, 要丢弃一个没有合并过的分支,可以通过 (强行删除)。
7.5 多人协作,分支与远程库
7.5.1 克隆是把 本地 master 分支和 远程的 master 分支对应,远程仓库 默认 origin
要查看远程库的信息, 用 git remote 或者 git remote -v 详细
7.5.2 推送分支,
git push origin master
git push origin “参数1” 参数1:其他分支名
7.5.3 分支 是否推送 详解
master 是主分支,时刻与远程同步
其他分支是开发分支,团队所有成员都需要在上面工作,所以也要与远程同步
bug 分支只用于本地修复,不用推送到远程,除非特出情况。
feature 分支是否推送,取决于是否与别人共同参与
7.5.4 抓取分支
get clone git@git@github.com:“XXXXXXX”/714repo.git
别人从远程 clone , 默认情况下,只能看到本地的 master 分支, 可用 git branch 查看
别人要在 分支 branch1 上开发,需要创建远程origin 的 branch1分支到本地,
git checkout -b dev origin/branch1
这样就可以在 branch1 上修改,将 branch1 分支 push 到远程
git commit -m “XXXXXXXXXX”
7.5.5 自己和别人的推送冲突、
若自己和别人对相同的文件进行了修改,且别人先推送了提交。你在推送提交时会有冲突。
解决方法, 先用 git pull 将新的提交从origin 的最新提交从 origin/branch1 抓取下来,然后在本地合并,解决冲突,再推送
7.5.6 多人协作的工作模式
1. 推送自己的提交, git push origin branch-name
2. 推送失败,因为远程分支比本地更新, 新 git pull 试图合并
3. 合并有冲突, 先解决冲突,在本地提交
4. 解决冲突后, 推送 git push origin branch-name
如果git pull 提示 “no tracking information”, 则说明本地分支和远程分支的链接关系没有创建,
命令: git branch --set-upstream 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 , 有冲突,先处理冲突
8. 标签
8.1 创建标签 (标签按字符排序,而不是时间)
git checkout master
git tag <name> 打标签,默认在最新提交上打标签, HEAD
git tag 查看所有标签
git log --pretty=oneline --abbrev-commit 查看历史提交
git tag v0.8 "参数1" 参数1 表示 上条命令查到的id
git show <tagname> 可以查看标签信息
git tag -s <tagname> -m "message" "参数1" 提交id 通过 -s 用私钥 签名一个标签
签名采用PGP签名,因此,必须首先安装gpg (GnuPG) ,如果没有找到gpg,或者没有gpg 密钥对,就会报错。
如果报错,参考GunPG帮助文档配置Key
git show <tagname> 可以查看PGP签名信息。 PGP签名不可伪造,可以验证
8.2 操作标签
git tag -d <tagname> 删除标签(本地标签,还没推送)
git push origin <tagname> 推送一个标签
git push origin --tags 推送所有本地标签到远程
删除已经推送的标签
git tag -d <tagname> 先删除本地标签
git push origin:refs/tags/<tagname> 删除远程标签
9. 自定义Git
改变颜色 git config --global color.ui true
命令起别名 git config --global alias.st status st 表示 status
类似的 git config --global alias.ci commit ci commit
git config --global alias.br branch
- CentOs7下GitHub入门复习
- CentOS7下git连接github
- 【docker入门】centos7下安装docker
- ubuntu下github 安装和使用入门
- centos7获取github源码
- centos7配置github
- Centos7中安装GitHub
- centOS7入门
- 【Github】github是什么?github入门
- GitHub入门
- github入门
- github入门
- github入门
- github 入门
- Github入门
- github 入门
- github 入门
- github入门
- CodingNet - Learning - 13
- 数组中第k大的数
- IOS Dev Intro - Image Resizing
- Invalid operation build-depgcc 安装ngnix依赖组件
- iOS 日历
- CentOs7下GitHub入门复习
- java之多态的类型
- Genymotion模拟器在Android Studio上的安装
- MFC中程序的延时
- 【NOIP2016模拟7.11】排序
- elasticsearch 分布式
- java之StringBuffer常见功能
- poj3277city,离散化+线段树 或 stl的multiset
- docker