Git入门原创
7人赞赏了该文章
1,316次浏览
编辑于2022年02月14日 15:49:27
一、安装配置
1,下载安装git工具。地址:https://git-scm.com/download/win
2,git最小配置。
git config --global user.name "xxx"
git config --global user.email "xxx@xxx.com"
查看配置:
git config --list --global
设置保存用户名密码:
git config --global credential.helper store
二、git概念
工作区(Working Directory):就是你在电脑里能看到的目录。
版本库(Repository):工作区有一个隐藏目录.git,这个不算工作区,而是git的版本库。
git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
提交修改到仓库必须经历如下2个步骤。
- 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;【注】如果修改了文件没有add,就不会放到暂存区被提交。
- 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。git是跟踪修改的,每次修改,都需要经历这两步。如果不用git add到暂存区,那就不会加入到commit中。
三、git实操
1,初始化一个git仓库
mkdir gitrepo
git init
或者 git init gitrepo
生成隐藏文件夹.git
2,本地新建一个文件test.txt
git add test.txt
添加文件,可以多次使用。git add . 圆点 代表添加所有
技巧:如果修改已经被git管理的文件,直接git add -u即可添加到暂存区
3,提交到仓库
git commit -m "注释"
4,查看仓库状态
git status
5,查看修改内容
git diff
6,查看版本历史,oneline参数会将commitid简写展示
git log --oneline
加参数 -n数字 查看最近几次提交记录。查看最近4次提交记录。
git log -n 4 --oneline
7,撤销修改
HEAD指向的版本就是当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。因此,git允许我们在版本的历史之间穿梭,要重返未来可用git reflog查看命令历史,找到commit_id。
场景1:恢复工作区。当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- filename
场景2:恢复暂存区。当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步。
第一步用命令git reset 命令回到场景1,
恢复所有:git reset HEAD
恢复部分:git reset -- file1 file2 . ..
第二步按场景1操作。
场景3:恢复版本库。已经提交了不合适的修改到版本库时,想要撤销本次提交,不过前提是没有推送到远程库。
git reset --hard HEAD^
或者git reset --hard commitid
版本号commitid没必要写全,前几位就可以了,git会自动去找。当然也不能只写前一两位,因为git可能会找到多个版本号,就无法确定是哪一个了。
注意:如果想回退远程仓库的版本,由于本地的版本比远程仓库还要旧。必须加上 -f 强制推送。慎用!!!回退了远程仓库,其要求pull最新代码的每个人的本地分支都要进行版本回退。这样增加大家的工作量不说,还很容易产生意想不到的问题!
和git revert区别:revert 会重新生成一次新提交,保留历史提交记录。
注意。假如有3次提交记录,想回退到第一次提交记录。
git revert 第二次commitid
中间有冲突,解决问冲突,重新 add ,commit技巧:将add和commit一次性执行。
git commit -am "注释"
8,删除文件。文件管理器已经删除
- 确认要删除。git rm readme.txt 删掉,并且git commit -m "delete file":
- 删错了,需要回退即需要撤销修改。
git checkout -- readme.txt
删除暂存区文件,工作区保留。 该命令还可以解除文件跟踪
git rm --cached file
9,重命名文件。
git mv old new
git commit -m 'xxx' 无需先add
10,分支管理。
- 分支创建,删除
因为创建、合并和删除分支非常快,所以git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
git checkout -b dev #git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
git branch dev #基于当前分支创建分支
git checkout dev #切换分支
注意:git创建分支默认是基于当前分支创建,git可基于任意一次提交记录创建。git branch dev commitid #基于提交记录创建分支
git branch devbak dev #基于本地指定分支创建分支
git branch master2 origin/master #基于远程分支创建分支
查看分支
git branch 查看本地所有分支,带参数-v可显示分支最新一次提交信息
git branch -r 查看远程所有分支
git branch -a 查看所有分支
git branch -avv 查看分支关联情况
删除分支
git branch -d dev 删除dev分支,只有合并过的才能删除,若需强制删除加参数-D
11,解决冲突
新建分支更改文件内容然后提交;
git checkout -b feature1
git add readme.txt
git commit -m "add simple"
切换主分支,更改同一个文件然后提交;
git checkout master
git add readme.txt
git commit -m "& simple"
合并分支
git merge feature1
必须手动解决冲突后再提交。
git status 也可以告诉我们冲突的文件:
<<<<<<< HEADCreating a new branch is quick & simple.
=======Creating a new branch is quick add simple.>>>>>>> feature1
git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容。
git add readme.txt
git commit -m "conflict fixed"
12,远程仓库操作
克隆
git clone https://gitee.com/biyuehan/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
当你从远程仓库克隆时,实际上git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin
关联本地仓库和远程仓库
远程库的名字就是origin,这是git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
cd existing_folder
git init
git remote add origin https://gitee.com/biyuehan/test.git
git add .
git commit
git push -u origin master
我们第一次推送master分支时,加上了-u参数,git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。从现在起,只要本地作了提交,就可以通过命令:
git push origin master
删除关联关系:git remote rm origin关联多个远程库:(内网不能访问,仅做参考)
git remote add github https://github.com/biyuehan/test.git
git push github master
git remote add gitee https://gitee.com/biyuehan/test.git
git push gitee master
查看远程关联关系:git remote -v
推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,git就会把该分支推送到远程库对应的远程分支上。推送分支之前,切记先git pull。
git push origin master如果要推送其他分支,比如dev,就改成:
git push origin dev
删除远程分支
git branch -d dev #先本地删除
git push origin --delete dev #简写 git push origin :dev