请收藏!一文搞定常用Git命令来管理代码工作

一、创建、初始化、提交、历史版本、回退、撤销

# 初始化一个仓库
mkdir /test   ### 根目录下创建一个 test 目录
cd  /test  ### 进入到该目录下,等会在该目录下进行创建代码仓库
git init    ### 操作后,会在当前目录下生成一个 隐藏目录 .git  ,主要作用是Git来跟踪管理版本库的,不要对这里的文件做任何修改,否则会破坏仓库
# 增加一个文件,将文件添加到暂存区stage,一定要在刚刚新建的test 目录下或其子目录下
git add xxx 【也可以是 git add .】
# 提交,并附上说明性描述  ;将暂存区内容提交到当前分支。创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改
git  commit -a -m "descriable" 
# 查看历史提交版本的记录
git log --pretty=oneline
# 查看状态,在不清楚目前的状态下可以使用此命令去跟踪查看
git status 
# 查看修改的文件具体修改了什么内容
git diff file1
# 回退到上一个版本,如果是回退到100个版本,使用 git reset --hard HEAD~100  
git reset --hard HEAD^ 
# 回退到指定具体的某个提交id版本【git  relog  #先查看下提交的commit_id ,然后再执行】
git reset --hard  commit_id
### 注意:上述18行命令执行完后,远端仓库内容和本地内容并没有同步到一致,需要进行下述命令
git push -f origin 远程分支名

# 撤销已添加到暂存区的修改文件且未提交的,或者已修改文件但未添加到暂存区
git restore xxx

二、远程库操作

# 查看当前仓库设置的远程仓库地址【一定要切换到和 .git 目录同级下执行下列命令】
git remote -v

# 添加远程仓库URL ,默认给的仓库别名为  origin 
git remote add origin git@github.com:fangwei12345/fangwei.git
git remote add origin ssh://git@192.168.100.160:2024/home/git/repositories/test-git

# 更改远程仓库地址为新的 URL
git remote set-url origin git@github.com:fangwei12345/fangwei.git
git remote set-url origin ssh://git@192.168.100.10:2024/home/git/repositories/test-git

# 删除远程仓库地址
git remote rm origin  或  git remote remove origin

# 克隆远程代码仓库
git clone ssh://git@192.168.100.10:2024/home/git/repositories/test-git

三、分支管理

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

####  实战   #####################################
# 创建dev分支,并切换到dev分支上
git checkout -b dev  或 git switch -c dev   【新版,推荐使用】

# 查看当前分支
git branch

# 修改某个文件后,添加到暂存区,再提交
git add readme
git commit -m "branch test"

# 推送分支dev到远程
git push origin dev

# dev 分支工作完成后,切换回到 master分支
git checkout master ### 切换回master分支后,再查看一个readme文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变

## 合并分支操作 #########
# 快速合并分支
git merge dev ### 合并后再查看下readme文件内容

# 删除分支dev
git branch -d dev
# 删除远程分支dev
git push origin -d dev

###   分支合并解决冲突 ================
# 创建新的分支并切换
git switch -c feature1
# 修改readme文件
# 在分支feature1 上提交
git add readme
git commit -m "add feature1"
# 切换到 master 分支
git switch master
# 修改readme文件
# 在分支master 上提交
git add readme
git commit -m "xxx"
# 合并
git merge feature1  ### 结果如下:36-38行内容
Auto-merging readme
CONFLICT (content): Merge conflict in readme
Automatic merge failed; fix conflicts and then commit the result.

# 此时直接看下readme内容:
$ cat readme
111
create a new branch is quick & simple
<<<<<<< HEAD
switch master
=======
add feature1
>>>>>>> feature1

######################### 手动处理=====================
# 在master分支上再进行修改并提交到暂存区
vi readme
git add readme
git commit -m "conflict fixed"
# 合并
git merge feature1

++++++++++++++++++++++++++++++++++  Bug  分支  +++++++++++++++++++++++++++++++++++
# 软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
# 当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交。
# 并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?
# Git还提供了一个 stash 功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
git stash   # 储藏起来
# 假如是要在master 分支上修复bug,那么需要在 master 分支上创建临时分支
git switch master  # 切换到 master分支上
git checkout -b bug01  # 创建一个临时修复bug 的分支 bug01
vi readme  # 编辑修改存在bug 的文件
git add readme # 添加到暂存区
git commit -m "fix bug"  # 提交到本地版本库
# 修复bug 后,切换到 master 分支,并完成合并,最后再删除 bug01分支
git switch master
git merge --no-ff -m "merged bug fix " bug01
# 接着回继续回到 dev 分支上进行开发工作
git switch dev
git status  # 查看下状态,发现工作区是干净的,那么找下修改Bug 前对dev 分支进行的储存去哪了?
git stash list  # 查看stash 内容
# 恢复操作
git stash pop 

四、标签管理

# 创建分支,首先,切换到需要打标签的分支上
git checkout master   # 切换到master 分支上
git tag v1.0    # 打上一个标签v1.0
git tag   # 查看所有标签
# 默认标签是打在最新提交的commit上的,有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打
# 方法是找到历史提交的commit id,然后打上就可以了
git log --pretty=oneline --abbrev-commit  # 列出所有已提交的commit id 值
git tag v.xx commit_id  # 给具体的commit_id 打上标签v.xx
git show v1.0  # 查看标签具体信息

# 创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除
git tag -d v.xx
# 推送某个标签到远端服务器
git push origin v.xx
# 或者一次性推送所有尚未推送到远程服务端的本地标签
git push origin --tags

# 如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除
git tag -d v.xx
# 再执行这个
git push origin :refs/tags/v.xx  

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维技术的传递者-阿伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值