git步骤:
1.git add 某个文件名
git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
2.git commit "文件描述"
3.当commit的源文件再次修改过时,需要再写一次git commit -am 文件名
4.与远程建立了联系
git remote add origin https://github.com/heidao10duan/myLrose
5.将文件push到一个分支(我新创建的)
git pull origin master //将GitHub仓库更新到本地
git push origin master:jyp_cleanDetail或git push origin master
错误整理
错误一:我写的了git add . 出现以下的报错,git status 查看没有添加本地仓库中.
报错信息warning: CRLF will be replaced by LF in XXX . The file will have its original line endings in your working directory.
解决:git config core.autocrlf false //将设置中自动转换功能关闭
备注:CRLF : windows 环境下的换行符,LF : linux 环境下的换行符
文件中存在两种环境的换行符,git 会自动替换 CRLF 为 LF ,所以导致git add . 添加失败!!!
错误2:今天在提交git的时候遇到# Please enter the commit message for your changes. Lines starting
with '#' will be ignored, and an empty message aborts the commit.的问题。
原因是因为提交的命令为: git commit
修改提交命令为 : git commit -m "注释"
错误3: git commit "dsfdf"
error: pathspec 'dsfdf' did not match any file(s) known to git
原因:git push之前,多次commit时,详情信息必须一样
错诶4:Please enter a commit message to explain why this merge is necessary.
请输入提交消息来解释为什么这种合并是必要的
git 在pull或者合并分支的时候有时会遇到这个界面。可以不管(直接下面3,4步),如果要输入解释的话就需要:
1.按键盘字母 i 进入insert模式
2.修改最上面那行黄色合并信息,可以不修改
3.按键盘左上角"Esc"
4.输入":wq",注意是冒号+wq,按回车键即可
基础知识整理:
1.设置用户名
git config --global user.name '仓库名'
2.设置用户名邮箱
git config --global user.email '[email protected]'
3.查看设置
git config --list
4.初始化
git init
5.查看状态
git status
6.创建文件
touch test.java
7.将文件添加到暂存区
git add test.java
8.将文件添加到仓库
git commit -m'描述信息'
commit之后的文件修改后再次commit
git commit -am'描述信息'
8.1将本地仓库代码提交到远程仓库
git push
1.先从远程仓库中clone代码到本地
git clone https://github.com/MatchlessHeroVIP/ssmtest.git
9.向文件中写内容
vi或者是vim test.java
10.查看文件内容
cat test.java
11.删除文件
rm -rf test.java
12.将文件从暂存区中删除
git rm test.java
13.将文件从仓库中删除
git commit -m'描述消息'
14.查看设置
git config --list
15.查看当前文件夹里的文件
ls
16.设置权限问题
将.git/config里的
[remote "origin"]
url = https://github.com/用户名/仓库名.git
修改为:
[remote "origin"]
url = https://用户名:密码@github.com/用户名/仓库名.git
==================================================================
17、将本地仓库关联到GitHub仓库上
执行:git remote add origin https://github.com/heidao10duan/myLrose
18、将GitHub仓库更新到本地
执行:git pull origin master
说明:因为可能GitHub仓库上可能有些变更,需要先同步到本地,才能将本地的改变提交到GitHub仓库上
19、将本地仓库同步到GitHub仓库
git push命令用于将本地分支的更新,推送到远程主机。
$ git push <远程主机名> <本地分支名>:<远程分支名>
执行:git push origin master
这里的master为master:master
origin为默认远程主机,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
$ git push origin :master
# 等同于
$ git push origin --delete master
如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。
$ git push -u origin master
上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
解决github里的readme文件没有下载下来的问题
$ git pull --rebase origin master
(git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
)
然后执行
git push origin master
即可成功把本地的文件都上传到github上面去了。
20.此时再去github网站上也就可以看到对应文件了
二。版本回退
主要使用 git reset --soft\mix\hard命令
1。如果要返回上一个版本,是可以通过git reset --hard HEAD^
2。如果要退回好几个以前的版本的话可以git reset --hard commitID
可以通过git log来查看commitID,但是注意的是当你回退了一个版本的话,git log是无法查出你上个版本的信息的
一。恢复git reset --hard删除的文件
1.恢复已提交远程仓库文件的方法
使用 git reflog 来找到最近提交的信息,
git reset ID 来恢复文件
2.恢复仅提交到本地仓库文件的方法
找到需要回退的那次commit的 哈希值,
git reset --hard 05485c526e9b80203f9d9e8a44f28d4b1e6ab287
git reset --hard commit_id
其实就是--soft 、--mixed以及--hard是三个恢复等级。使用--soft就仅仅将头指针恢复,已经add的缓存以及工作空间的所有东西都不变。如果使用--mixed,就将头恢复掉,已经add的缓存也会丢失掉,工作空间的代码什么的是不变的。如果使用--hard,那么一切就全都恢复了,头变,aad的缓存消失,代码什么的也恢复到以前状态。
git checkout master切换分支
git checkout -b newBranch在新分支创建的同时切换分支
b代表branch的意思。该命令相当于下面这两条命令的执行结果:
1. git branch newBranch (创建新的分支,但是不会切换到新建的分支上)
2. git checkout newBranch
git diff
HEAD这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交
工作区(Working Directory):就是你在电脑里能看到的目录
版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master
分支,所以,现在,git commit
就是往master
分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改
https://www.liaoxuefeng.com/wiki/896043488029600/897889638509536
找到需要回退的那次commit的 哈希值,
git reset --hard 05485c526e9b80203f9d9e8a44f28d4b1e6ab287
git reset --hard commit_id
二。merge解决冲突
准备新的feature1
分支,继续我们的新分支开发:
$ git switch -c feature1
Switched to a new branch 'feature1'
修改readme.txt
最后一行,改为:
Creating a new branch is quick AND simple.
在feature1
分支上提交:
$ git add readme.txt
$ git commit -m "AND simple"
[feature1 14096d0] AND simple
1 file changed, 1 insertion(+), 1 deletion(-)
切换到master
分支:
$ git switch master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
Git还会自动提示我们当前master
分支比远程的master
分支要超前1个提交。
在master
分支上把readme.txt
文件的最后一行改为:
Creating a new branch is quick & simple.
提交:
$ git add readme.txt
$ git commit -m "& simple"
[master 5dc6824] & simple
1 file changed, 1 insertion(+), 1 deletion(-)
现在,master
分支和feature1
分支各自都分别有新的提交,变成了这样:
这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:
$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
果然冲突了!Git告诉我们,readme.txt
文件存在冲突,必须手动解决冲突后再提交。git status
也可以告诉我们冲突的文件:
$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add ..." to mark resolution)
both modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
我们可以直接查看readme.txt的内容:
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
Git用<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容,我们修改如下后保存:
Creating a new branch is quick and simple.
再提交:
$ git add readme.txt
$ git commit -m "conflict fixed"
[master cf810e4] conflict fixed
现在,master
分支和feature1
分支变成了下图所示:
用带参数的git log
也可以看到分支的合并情况:
$ git log --graph --pretty=oneline --abbrev-commit
* cf810e4 (HEAD -> master) conflict fixed
|\
| * 14096d0 (feature1) AND simple
* | 5dc6824 & simple
|/
* b17d20e branch test
* d46f35e (origin/master) remove test.txt
* b84166e add test.txt
* 519219b git tracks changes
* e43a48b understand how stage works
* 1094adb append GPL
* e475afc add distributed
* eaadf4e wrote a readme file
最后,删除feature1
分支:
$ git branch -d feature1
Deleted branch feature1 (was 14096d0).
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph
命令可以看到分支合并图。
说明,最后解决冲突这一篇是复制廖雪峰大佬的
https://www.liaoxuefeng.com/wiki/896043488029600/900004111093344