git工具

1.git视频学习笔记:

在Git中,文件的更改可以经历三个主要的阶段:工作区(Working Directory)、暂存区(Staging Area)和代码库(Repository)。
1.工作区(Working Directory):
        工作区是你正在开发和修改代码的目录,其中包含未被Git跟踪的文件和已被Git跟踪的文件。
2.暂存区(Staging Area):
        暂存区是介于工作区和代码库之间的一个缓冲区,用于暂时存储要提交的文件修改。
                将工作区中的文件添加到暂存区:
                git add file.txt
3.代码库(Repository):
        代码库是Git中存储文件历史和版本信息的地方,包括了所有已提交的更改。它由本地代码库远程代码库组成。
                将暂存区中的文件修改提交到本地代码库:
                git commit -m "Commit message"
                将本地代码库中的更改推送到远程代码库:
                git push origin master

1.配置基础信息

        git config --global user.name "chenziyang"

        git config --global user.email 3510878@qq.com

2.创建本地git仓库

        在想创建仓库的位置,Git Bash中输入:git init

        拿别人的现成项目:git clone https://github.com/vgeewg/linux.git

3.跟踪文件或目录

        跟踪文件:git add <name>

        跟踪当前目录:git add .

        删除跟踪文件:git rm <name>

        保留在目录中但是不被跟踪:git rm -cache <name>

        修改文件后,设为暂存状态:git add <name>

        手滑了,取消暂存状态:git reset HEAD <name>

4.提交文件

        git commit

        提交并附有说明信息:git commit -m '12345678966666'

        将没有暂存的文件一并提交:git commit -am '12345678966666'

        取消本次提交:git reset head~ --soft(不能撤销第一次提交)

5.查看文件状态

        git status

操作示例:

(红色是已修改但未暂存,git add <name>后再git status就是绿色的了,然后git commit后,再git status,此时没有修改也没有提交)

        查看细致的修改记录:git diff

        查看提交历史:git log(git log --pretty,美化输出格式;git log --graph,图形化方式输出)

6.远程仓库

        git remote add origin(一般远程仓库的名字叫origin)

        git remote,看一下创建成功与否

        git remote rename orgn origin,重命名,改前为后

        git remote rm origin,删除远程仓库

        git push origin master,推送master分支到远程仓库

        以github为例:1.生成Token。2.ssh协议。

7.分支/branch

        1.介绍

        分支就是储存每个提交对象独一无二哈希值的文件,简单来说就是提交对象的指针,可以在一个提交对象上创建多个分支,初始化本地仓库的时候自动创建master分支。 (经典的git流模型)

feature:开发新特性        develop:收集不同feature分支然后进行测试       

release:各种测试没问题,创建此分支待发布        master:发布版       

hot fixes:修bug

        查看自己所在分支:git log(HEAD->代表自己所在分支),git status     

                                        git branch --list(前面带*的就是当前分支)

        创建分支:git branch feature1

        切换分支:git checkout feature1

        创建并切换至新分支:git checkout -b feature2

        查看所有分支的提交:git log --all 

 (git log --all --graph,图形化显示更直观)

        2.合并分支

        git merge feature1(此时在master分支下)将feature1和master分支进行了合并

         再合并分支:git merge feature2

        会出现:Merge conflict,说明合并冲突,为了将feature2不冲突的改动合并到master上,需要对冲突处亲自处理。

        此时进入冲突文件,======上是当前所在分支的改动,下是新合并分支的改动,保留其一。

 

        冲突解决,进行:git add,git commit

(git log --all --graph,此时feature2也合并到master上了)

        执行:git push origin master,将其推送到远程。

        除了推送master分支,也可以推送其他分支:git push origin feature1

        此时换一个新的仓库,没有这些分支,我们想把刚才提交的分支拉取下来:

                git fetch

         拉取下来后,分支都有一个origin/,说明不是本地分支,我们想把分支变成本地分支:    (准确来说是建立远程分支的跟踪分支,三种写法)

                git checkout feature1

                git checkout -b feature1 origin/feature1

                git checkout --track origin/feature1

8.贮藏/stash

        场景:代码写到中途,需要切换分支解决问题(此时目录是脏的),使用git commit并不好,所以使用git stash贮藏自己写了一半的代码(等价于git stash push)。

 解决完问题后,切换回刚才git stash的分支,使用:git stash apply恢复存储的内容。

1.git stash apply

 git stash可以使用多次,用git stash list可以看存储了几次

 {0}是最后一次,{2}是最开始存储的。

        想要选择恢复某次存储的stash ,使用:git stash apply stash@{2}

        删除存储的stash,使用:git stash drop stash@{0}(数组是顺延的,刚才的{1}变为了{0})

        (在脏的目录里,无法apply)

2.git checkout

        除了git stash apply,还有恢复stash的操作:

        git checkout -- <file_name>(直接将文件恢复为没有修改的状态,慎用,修改全部消失无法找回)

        git stash pop:将最后一次存储的stash恢复(副作用:最后一个stash恢复完后会被直接删除)

9.重置/reset

1.reset

        git reset head~ --soft(修改的代码还在)

                ~表示上一次,~2,~3就是倒数第二次、第三次的提交

                --soft:只是撤销commit操作,之前git add将文件设为暂存状态的操作还在

                git reset head~:不加--soft,暂存状态不存在,再git add就和前者等价了

        git reset head~ --hard(修改的代码没了,不太推荐)

                彻底回到上一次刚提交完的状态

2.rebase(变基,搬家)

        git checkout B

        git rebase A

 

        此时做的和merge等价,提交记录会好看一些。

        如果其他人使用你提交的代码二次开发,不要rebase,对方在你的基础上开发,rebase会导致改变

        交互式操作:rebase -i

                git rebase -i head~3(对前三个提交的修改,具体用法用到再查)

--------------------------------------------------------------------------------------------------

30分钟弄懂所有工作Git必备操作 / Git 入门教程_哔哩哔哩_bilibili

 感谢UP主的git教学视频!

--------------------------------------------------------------------------------------------------

2.git实战操作

1.clone代码,切换分支

git clone 172.16.2.108/root/code.git

git checkout develop

git reset --hard oa18qw1f8qw1f59q1f98q

2.push改动

cd .git

vim config

或者使用命令

git config user.name "chenziyang"

git config user.email "chenziyang@gbase.cn"

git config user.name

git config user.email

git stn(git status -uno的缩写,自定义的)

git add gtest/src/CMakeLists.txt

git commit -m "add xxx function and gtest xxx,xxx,xxx"

git push origin master:develop

3.切换到其他仓库的分支

cd .git

vim config

[remote "czy"]

    url = http://172.16.2.196/chenziyang/czy.git

    fetch = +refs/head/*:refs/remotes/czy/*

git fetch czy

git br -a | grep v9.7.6

(假设想要找到的分支为remotes/czy/release/v9.7.6,会搜到)

git co remotes/czy/release/v9.7.6

5.stash贮藏

(当自己代码已经改动,且需要git pull时)

git fetch

git stash save chenziyang

将自己的改动保存下来,且起一个名字(仅起说明作用)

git pull

git stash list

查看保存下来的改动的堆栈

git stash pop stash@{0}

取出想要的改动

6.git merge和git rebase

3.其他问题

1.使用过的命令记录

git br -vv

git pull origin develop

2.git reset --hard commitid后想要撤销:

(前提条件:丢失的分支或commit信息还没有被git gc清除)

        1.执行git log -g 或者 git reflog show。
        2.找到执行reset --hard之前的commit对应的commitid(可以通过日期和时间来辨别)。
        3.通过git branch recover_branch commitid来建立新分支并撤销了回滚(可不操作)。
        4.使用命令git reset --hard commitid可强制回滚到之前的版本。

3.修改git commit的信息(未push)

git commit --amend

Git会打开默认的文本编辑器,显示最近一次提交的提交信息。在编辑器中修改提交信息为你想要的新信息,保存并关闭编辑器。

4.断连分支

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值