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。

0

提交修改到仓库必须经历如下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
赞 7