优秀的编程知识分享平台

网站首页 > 技术文章 正文

Git代码版本控制常用业务场景操作汇总(以Github为例)

nanyue 2024-10-27 11:25:51 技术文章 1 ℃

Git是一个免费的、开源的分布式版本控制系统,旨在以快速高效的方式处理从小型到大型的所有项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

大部分互联网公司都使用Git或SVN作为代码版本控制。不管你只会Git或只会SVN版本控制的业务场景就那么多所以从Git切换到SVN或从SVN切换到Git业务场景不变只是两个软件的操作命令不同而已。只需要你了解两个软件的设计区别软件命令之间切换是非常容易上手的。

1、Git与SVN区别


Git

SVN

架构

分布式

非分布式

存储

元数据

文件

分支

资源库

目录

版本号

无全局版本号

有全局版本号

内容完整性

高(SHA-1 哈希算法)

2、Clone代码

git clone https://github.com/witer666/python-httplib.git

3、创建分支

#创建分支
cd python-httplib
git checkout -b python-httplib-readme

#查看分支
git branch
执行结果:
  main    #主分支
* python-httplib-readme #当前分支

4、提交代码

git add readme.txt
git commit -m "submit readme.txt desc" readme.txt
git push --set-upstream origin python-httplib-readme
#输入github用户我
#输入github access token //点击有上角个人头像-》Setting-》Developer settings-》Personal access tokens-》Generate new token
执行结果: 
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 328 bytes | 328.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: 
remote: Create a pull request for 'python-httplib-readme' on GitHub by visiting:
remote:      https://github.com/witer666/python-httplib/pull/new/python-httplib-readme
remote: 
To https://github.com/witer666/python-httplib.git
 * [new branch]      python-httplib-readme -> python-httplib-readme
Branch 'python-httplib-readme' set up to track remote branch 'python-httplib-readme' from 'origin'.

5、切换分支

#切换到主干
git checkout main

#切换到分支
git checkout python-httplib-readme

6、查看修改的文件

#查看修改的所有文件
git diff 

#查看修改的指定文件
git diff readme.txt
执行结果:
diff --git a/readme.txt b/readme.txt
index 2d7e030..459bab3 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1 +1,2 @@
-#guzzle http lib
+# readme desc
+# guzzle http lib

7、删除文件

git rm readme.txt
git commit -m "submit rm readme.txt" readme.txt
git push --set-upstream origin python-httplib-readme 

8、提交修改的文件

git commit -m "update readme.txt add desc" readme.txt

git push --set-upstream origin python-httplib-readme //不用再输入github账号和密码,github已记入账号和密码
执行结果:
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 349 bytes | 349.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/witer666/python-httplib.git
   06047f9..77f7e93  python-httplib-readme -> python-httplib-readme
Branch 'python-httplib-readme' set up to track remote branch 'python-httplib-readme' from 'origin'.

9、回滚代码

#查看提交版本日志
git log
执行结果:
commit 77f7e93caad076b84622a172129edbc5ed3392a3 (HEAD -> python-httplib-readme, origin/python-httplib-readme)
Author: chenhongwei01 <chenhongwei01@baidu.com>
Date:   Tue Apr 5 11:38:52 2022 +0800

    update readme.txt add desc

commit 06047f91f5e0214a0e2c90dca6cc4967ef03ce60
Author: chenhongwei01 <chenhongwei01@baidu.com>
Date:   Tue Apr 5 10:59:00 2022 +0800

    submit readme.txt

commit 8956dcc291d447bd4464290b0e0ef8f86f227610 (origin/main, origin/HEAD, main)
Author: witer666 <linux_chen@126.com>
Date:   Tue Mar 15 00:13:43 2022 +0800

    submit httplib httpsoup code

#回滚代码
git reset --hard 06047f91f5e0214a0e2c90dca6cc4967ef03ce60
git push --set-upstream origin python-httplib-readme -f #加-f强制push代码可以不加-f看是否有报错信息

10、冲突解决(分支合并主干)

#分支合并主干
a. 拉取主干代码 git clone 
b. 切换分支代码 git checkout 
c. 合并主干代码 git merge origin main
d. 解决代码冲突 vim 
e. 添加代码 git add 
e. 提交代码 git commit -m "" 
f. push代码 git push origin python-httplib-readme

#主干合并分支
主干合并分支与分支合并主干方式一样,只是主干合并分支应该不存在代码冲突问题。
如果主干合并分支有代码冲突问题建议再做一次分支合并主干操作。

11、冲突注意事项

代码冲突最担心的问题就是自己把别人的代码覆盖掉了。个人经历提供如下办法解决。

      • 多问多沟通(多与代码冲突修改者沟通提问)。
      • 使用Beyond Compare文件对比工具本地电脑对比冲突解决后的代码文件。这个工具在文件对比上看的非常详细清楚。有些代码在vim看下不明白时我会用这个工具本地看。
      • 在线文件对比工具:https://json.im/diff/。简单的代码段之间对比。
      • 代码自测:接口测试、方法单测、段落测试、单行测试都行。评估好冲突风险。


感谢大家的评论、点赞、分享、关注。。。

最近发表
标签列表