Git 的使用

举报
xiaozr 发表于 2020/07/24 10:56:37 2020/07/24
【摘要】 Git global setupgit config --global user.name "ws"git config --global user.email "ws@h**s**tech.com"Create a new repositorygit clone ssh://git@code.h**s**tech.com:10022/ws/BIN_ICP.gitcd BIN_ICPtouc...

Git global setup

git config --global user.name "ws"
git config --global user.email "ws@h**s**tech.com"
  • Create a new repository

git clone ssh://git@code.h**s**tech.com:10022/ws/BIN_ICP.git
cd BIN_ICP
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
  • Existing folder

cd existing_folder
git init
git remote add origin ssh://git@code.hesaitech.com:10022/ws/BIN_ICP.git
git add .
git commit -m "Initial commit"
git push -u origin master
  • Existing Git repository

cd existing_repo
git remote rename origin old-origin
git remote add origin ssh://git@code.h**s**tech.com:10022/ws/BIN_ICP.git
git push -u origin --all
git push -u origin --tags


增加文件

git add file1
git add file2
git commit -m 'add file1 and file2'


 历史记录

git log --pretty=oneline #返回当前所有版本信息,commit id(版本号)是一大串
git reflog #用来记录每一次命令
git log --pretty=oneline #返回当前所有版本信息,commit id(版本号)是一大串
git reflog #用来记录每一次命令


回退版本

git中使用HEAD表示当前版本,上个版本是HEAD^,上上一个版本是HEAD^^;往上100个版本可以写成HEAD~100
git reset --hard HEAD^ #回退到上一个版本
git reset --hard XXXX #回到XXXX版本,使用git log 或者git reflog查看版本号
git reset HEAD <file> #把暂存区的修改车撤销掉,重新放回工作区。


工作区和暂存区

工作区是电脑里可以看到的目录,工作区有个隐藏的目录 <.git> 是 git 的版本库。其中包括stage(或者index)的暂存区,还有Git为我们创建的第一个分支master,以及指向master的指针HEAD
git add 实际上就是把文件添加到暂存区;第二步git commit 是把暂存区的所有内容提交到当前分支。
可以简单理解为需要提交的文件修改统统放到暂存区,然后一次性提交暂存区的所有修改。


 撤销修改

git checkout -- <file> #将工作区的修改回到最近的一次 git commit 或者 git add 状态,相当于用版本库的版本替换工作区版本


删除文件

git rm  file  #等价于 rm file + git add file  删除本地文件,并提交删除的步骤同步到 git 仓库


添加远程库

# 在本地仓库下运行命令
git remote add origin git@....
# 可以关联本地库和远程库,origin 是远程库的名字,是git的默认叫法


推送

git push -u origin master
# 将本地的master分支内容推送到远程新的master分支,第一次推送是使用-u可以将本地master与远程master来,简化后续操作。
git push <远程主机名> <本地分支名>:<远程分支名> #将本地分支的更新推送到远程主机的分支


远程克隆

git clone -b <远程分支名> SSH #下载某个远程分支
git clone


创建合并分支

每次commit,git都把他们串成一条线,这条时间线就是一个分支,主分支是master,HEAD指向master,master指向提交。
每次提交,master分支向前移动一步,当我们创建新的分支dev时,git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,表示当前分支在dev上,再新提交修改就是在dev前进修改了,master指针不变。合并时只需要将master指向dev当前的提交,就完成了合并。
git checkout -b dev 创建并切换到dev分支,相当于git branch dev 和 git checkout dev
git branch 会列出所有分支,当前分支前会加上*号
此时就可以在dev分支正常提交了;
git checkout master 切换回master
git merge dev 合并指定分支到当前分支
git branch -d dev 删除dev分支


删除分支

git push origin --delete master #删除远程 origin 主机的 master 分支


git 流程

主分支 Master:有且仅有一个,为用户提供使用的正式版本
开发分支 Develop

#Git 创建Develop 分支的命令
git checkout -b develop master 
#将 Develop 分支发布到 Master 分支的命令
git checkout master 
git merge --no-ff develop # --no-ff 参数: 默认情况下, 快进式合并, 直接将 Master 分支指向 Develop 分支
临时性分支
- 功能分支(feature)
  - 为了开发某种特定功能, 从 develop 分支分出,完成后合并到 develop 分支
- 预发布分支(release)
  - 正式发布版本之前, 可能需要预发布一个版本进行测试
- 修补bug分支(fixbug)
  - 从 Master 分支分出来, 修补结束后和并进 Master 和 Develop 分支
用于临时需要,使用完后要记得删除,使得代码库分支始终包含 Master 和 Develop 分支

#Git 创建功能分支
git checkout -b feature-* develop
#合并到 Develop 分支
git checkout develop
git merge --no-ff feature-x

#Git 创建预发布分支
git checkout -b release-x develop
#确认没有问题后合并到 master 分支
git check master
git merge --no-ff release-x
#对合并生成的新节点,做一个标签
git tag -a x
#再合并到develop分支
git checkout develop
git merge --no-ff release-x
#最后删除预发布分支
git branch -d release-x

#Git 创建一个修补分支
git checkout -b fixbug-xx master
#修补结束后合并到 master 分支
git checkout master 
git merge --no-off fixbug-xx
git tag -a xx
#再合并到develop分支
git checkout develop
git merge --no-ff fixbug-xx



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。