1. 普通指令
pwd:命令用于显示当前目录
ls –ah:显示.git目录
cat :查看fileName文件内容
git diff HEAD – readme.txt:查看工作区和版本库里面最新版本的区别
git log:显示从最近到最远的提交日志
git reflog:查看命令历史,以便确定要回到未来的哪个版本
用git log --graph命令可以看到分支合并图
2. 基本操作
git init:把所在目录变成Git可以管理的仓库
git clone -b <分支名称><远程仓库地址> 拉取项目到本地
git status:仓库当前的状态
git add:把文件添加到暂存区 eg:git add * --全部add到暂存区
git commit -m “提交说明”:把文件提交到git仓库
git push:把当前分支master推送到远程
git pull origin 将本地库更新至指定分支
3. 分支
git branch:查看分支
git branch :创建分支
git checkout 或者git switch :切换分支
git checkout -b 或者git switch -c :创建+切换分支
git merge :合并某分支到当前分支
git branch -d :删除分支
git branch -D :强行删除一个没有被合并过的分支(已经add和commit了)
4. 回退和暂存
git reset
git stash、git stash pop 工作区stash、工作区恢复(一般用于开发到一半有新的需求,需要将当前工作区暂存)
5. push详解
push:首先要切换要推送的分支
a.远程已有remote_branch分支并且已经关联本地分支local_branch且本地已经切换到local_branch
git push(远程已有,本地关联)
b.远程已有remote_branch分支但未关联本地分支local_branch且本地已经切换到local_branch
git push -u origin/remote_branch(远程已有,本地未关联)
c.远程没有remote_branch分支,本地已经切换到local_branch
att:一般push如果远程没有分支,会自动新建一个,其实也没有必要专门带上 :remote_branch
git push origin local_branch:remote_branch(远程没有)
git push origin release_2.5.3:release_2.5.3
6. 冲突解决
1、在pull的时候,出现冲突时需要写入commit说明,输入英文状态下的i进入编辑状态,然后输入,输入完成之后esc;然后shift+冒号,然后输入wq保存刚刚输入的文件即可(如不保存,直接按q后退出),pull完毕
7. 重命名远程分支
如果想在远程重命一个分支名,首先需要知道远程的修改都是源于本地的修改,所以想要修改本地的分支:
git branch -a #查看所有分支
git branch -r #查看远程分支
git branch -vv #查看本地分支所关联的远程分支
1、本地重命名分支
git branch -m old_branch new_branch # Rename branch locally
git branch -m release_1.0.0 3.1.0
2、push 删掉远程的旧的分支名
git push origin :old_branch # Delete the old branch
git push origin :release_1.0.0
3、push 将本地的新的分支推送到远程
git push --set-upstream origin new_branch git push --set-upstream origin 3.1.0
git push -u origin new_branch# Push the new branch, set local branch to track the new remote git push –u origin 3.1.0
git push origin 3.1.0
8. Git合并两个共同的仓库
https://cloud.tencent.com/developer/ask/206231
https://www.cnblogs.com/lfzm/p/10681412.html、
1、把要合并的分支clone到本地
git clone https://gitee.com/alingfly/ASF_Test.git
2、添加需要合并远程仓库
git remote add base https://github.com/AClumsy/ASF.git
3、把base远程仓库中数据抓取到本仓库
git pull
4、checkount切换到base分支上,命名为 asf
5、合并
9. Git不提交无关文件
1、从神兵上获取.gitignore文件
2、然后执行git rm -r --cached . <当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用>
3、之后重新commit相关文件(包括.gitignore)就可以了
10. ATT
.git的目录:Git来跟踪管理版本库的,不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
ls –ah:显示.git目录
att:改动的文件一定要放到“Project”目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。(git只能管理git仓库建立的位置的文件或者子文件,在其之外的文件是无法访问到的)
11. 基本原理
暂存区 Stage
工作区:电脑里能看到的目录
暂存区:需要提交的文件修改都要放到暂存区,然后一次性提交暂存区的所有修改
往Git版本库里添加文件的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
git pull origin release_2.5.3 做更新的时候。出现了一下错误:
git解决error: The following untracked working tree files would be overwritten by checkout
解决方法:git clean -d -fx “zuul/zuul.iml”
x -----删除忽略文件已经对git来说不识别的文件
d -----删除未被添加到git的路径中的文件
f -----强制运行
版本回退
1、直接丢弃工作区某文件的修改时,用命令git checkout – ;
2、丢弃添加到了暂存区的某文件的修改,用命令git reset HEAD 丢弃之后就不会被commit了;
3、已经commit到了不合适的修改到版本库时,想要撤销本次提交,用git reset – hard HEAD^参考版本回退一节,前提是没有推送到远程库。
标签管理
打上标签,其实到时候分支被删除,也可以找回打了标签时候的文件
(1)切换到需要打标签的分支上
(2)git tag
(3)git tag -a -m "tagname info"可以指定标签信息; //可有可无
(4)git push origin 推送一个本地标签;
(5)git push origin --tags 可以推送全部未推送过的本地标签;
(6)git show :查看标签信息,可以看到说明信息 //标签不是按时间顺序列出,而是按字母排序的。标签总是和某个commit挂钩。
(7)git tag -d 删除一个本地标签;
(8)git push origin :refs/tags/ 删除一个远程标签。