git使用步骤

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 'matchlessherovip@163.com'
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-br-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 <file>..." 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-br-conflict-merged

用带参数的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值