Git 基础用法


Git介绍

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。与常用的版本控制工具CVS, Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。

Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库

Git基本工作过程

9个常见操作,具体如下

  • 1.新建项目文件夹(只做一次)

  • 2.进入文件夹 (重要)

  • 3.初始化仓库:git init(只做一次)

  • 4.编码

  • 5.添加文件信息: git add .

  • 6.确认添加信息:git commit -m”描述信息”

  • 7.查看详细日志信息:git log

  • 8.查看简略日志信息:git log –oneline

  • 9.版本回滚:git reset –hard 版本号

其他的常用操作

git init

用法:git clone [url]

该命令可用于通过指定的URL获取一个代码库。

git config

用法:git config –global user.name “[name]”

用法:git config –global user.email “[email address]”

该命令将分别设置提交代码的用户名和电子邮件地址。

git add

用法:git add [file]

该命令可以将一个文件添加至stage(暂存区)。

用法:git add *

该命令可以将多个文件添加至stage(暂存区)。

git commit

用法:git commit -m “[ Type in the commit message]”

该命令可以在版本历史记录中永久记录文件。

用法:git commit -a

该命令将提交git add命令添加的所有文件,并提交git add命令之后更改的所有文件。

git diff

用法:git diff

该命令可以显示尚未添加到stage的文件的变更。

用法:git diff –staged

该命令可以显示添加到stage的文件与当前最新版本之间的差异。

用法:git diff [first branch] [second branch]

该命令可以显示两个分支之间的差异。

git reset

用法:git reset [file]

该命令将从stage中撤出指定的文件,但可以保留文件的内容。

用法:git reset [commit]

该命令可以撤销指定提交之后的所有提交,并在本地保留变更。

git status

用法:git status

该命令将显示所有需要提交的文件。

git rm

用法:git rm [file]

该命令将删除工作目录中的文件,并将删除动作添加到stage。

git log

用法:git log

该命令可用于显示当前分支的版本历史记录。

用法:git log –follow[file]

该命令可用于显示某个文件的版本历史记录,包括文件的重命名。

git show

用法:git show [commit]

该命令经显示指定提交的元数据以及内容变更。

git tag

用法:git tag [commitID]

该命令可以给指定的提交添加标签。

git branch

用法:git branch

该命令将显示当前代码库中所有的本地分支。

用法:git branch [branch name]

该命令将创建一个分支。

用法:git branch -d [branch name]

该命令将删除指定的分支。

git checkout

用法:git checkout [branch name]

你可以通过该命令切换分支。

用法:git checkout -b [branch name]

你可以通过该命令创建一个分支,并切换到新分支上。

git merge

用法:git merge [branch name]

该命令可以将指定分支的历史记录合并到当前分支。

git remote

用法:git remote add [variable name] [Remote Server Link]

你可以通过该命令将本地的代码库连接到远程服务器。

git push

用法:git push [variable name] master

该命令可以将主分支上提交的变更发送到远程代码库。

用法:git push [variable name] [branch]

该命令可以将指定分支上的提交发送到远程代码库。

用法:git push –all [variable name]

该命令可以将所有分支发送到远程代码库。

用法:git pull [Repository Link]

该命令将获取远程服务器上的变更,并合并到你的工作目录。

git stash

用法:git stash save

该命令将临时保存所有修改的文件。

用法:git stash pop

该命令将恢复最近一次stash(储藏)的文件。

用法:git stash list

该命令将显示stash的所有变更。

用法:git stash drop

该命令将丢弃最近一次stash的变更。

Git小游戏

游戏链接为GIt小游戏

推荐一个图解答案答案

---
基础篇
1.git commit
git commit

git commit

2.git branch
git branch bugFix

git checkout bugFix

3.git merge
git branch bugFix

git checkout bugFix

git commit -m “commit bugFix”

git checkout main

git commit -m “commit main”

git merge bugFix

4.git rebase
git branch bugFix

git checkout bugFix

git commit -m “bugFix”

git checkout main

git commit -m “main commit”

git checkout bugFix

git rebase main

高级篇
1.分离HEAD
git checkout c4

2.相对引用(^)
git checkout main^

git checkout c3

3.相对引用2(~)
git branch -f main c6

git checkout HEAD~1

git branch -f bugFix HEAD~1

4.撤销变更
git reset HEAD~1

git chekout pushed

git revert HEAD

移动提交记录
1.git cherry-pick
git cherry-pick c3 c4 c7

2.交互式rebase
git rebase -i overHere (打开控制面板)

omit c2 (点击c2)

c4 c5交换位置 (拉取)

杂项
1.只取一个提交记录
git checkout main

git cherry-pick c4

2.提交的技巧#1
git rebase -i HEAD~2 交换2和3的位置

git commit --amend

git rebase -i HEAD~2 恢复2和3的位置

git checkout mian

git rebase caption main

3.提交的技巧#2
git checkout main

git cherry-pick c2

git commit --amend

git cherry-pick c3

4.git tag
git tag v0 c1

git tag v1 c2

git checkout c2

5. git descride
git commit

高级话题
1.多次rebase
git rebase main bugFix

git rebase bugFix side

git rebase side another

git rebase another main

2.两个父节点
git branch bugWork main^ ^ 2^

3.纠缠不清的分支
git checkout one

git cherry-pick c4 c3 c2

git checkout two

git cherry-pick c5 c4 c3 c2

git branch -f three c2

Push & Pull —— Git 远程仓库!
1.git clone
git clone

2.远程分支
git commit

git checkout o/main

git commit

3.git fetch
git fetch

4.git pull
git pull

5.模拟团队合作
git clone

git fakeTeamwork 2

git commit

git pull

6.git push
git commit

git commit

git push

7.偏离的提及历史
git clone

git fakeTeamwork

git commit

git pull --rebase

git push

8.锁定的main(locked main)
git reset --hard o/main

git checkout -b feature c2

git push origin feature

关于 origin 和它的周边 —— Git 远程仓库高级操作
1.推送主分支
git fetch

git rebase o/main side1

git rebase side1 side2

git rebase side2 side3

git rebase side3 main

git push

2.合并远程仓库
git checkout main

git pull

git merge side1

git merge side2

git merge side3

git push

3.远程追踪
git checkout -b side o/main

git commit

git pull --rebase

git push

4.git push的参数
git push origin main

git push origin foo

5.git push的参数2
git push origin main^:foo

git push origin foo:main

6.git fetch的参数
git fetch origin main~1:foo

git fetch origin foo:main

git checkout foo

git merge main

7.没有source的source
git fetch origin :bar

git push origin :foo

8.git pull的参数
git pull origin bar:foo

git pull origin main:side

---

文章作者: oceanechy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 oceanechy !
  目录